koyeb+cf R2 免费打造自己的云 uptime kuma

前言 [=废话]

秉承着白嫖各种服务的原则,koyeb 搞了一个号有一段时间了,可以免费一个web service,但是用来部署白嫖gpt的服务,延时高,ip一般,后来想就用这个云服务给我自己的vps当心跳检测工具,也算是“废物”利用了,于是便搭起了uptime kuma。发现直接用作者的镜像搭 louislam/uptime-kuma,最后是运行不了的。然后选择官方这个方案:


主体思路就是用litestream将kuma数据库文件实时保存到一个S3对象储存,他用的是backblaze B2,而我把目光投向了我的大善人cloudflare,怕被反薅,cf R2我一直都没怎么用,是时候“宠幸”一下了。用教程仓库的脚本,把S3的环境变量改成cf R2桶的,分分钟就搭建好了,然而______。(此坑不填了 :stuck_out_tongue_winking_eye:)于是我换上了rclone直接每隔一段时间备份kuma.db到R2桶,uptime 实例重启也都会从备份文件重载。

正文 [=手把手]

1.先准备一个R2桶,创建好管理员读和写的API令牌

image

2.进入koyeb账户,添加一个web service


选择从github 部署

填入公共仓库https://github.com/wobure123/koyeb-rclone-uptime.git (没错,这是gpt和我一起喂的…)

下一步,务必选择builder:dockerfile

然后就是填下环境变量了

ACCESS_ID               //id
ACCESS_SECRET_KEY        //密钥
ENDPOINT                 //
BUCKET                  //桶名

一个个都填进去吧。

最后,右上角 点deploy,[- - - - - - ]一切顺利,等待koyeb出公共访问URL,访问便可。


过一会[我设置的每15分钟一备份]R2桶,出现如下备份文件

完美,白嫖完毕!

总结 [=无]

总结

如果非要再加点料,就是koyeb免费服务无自定义域名,我迂回用大善人的worker 设置了一个redirect,实现 https:status.mydomain 访问凑合着用吧,worker代码如下:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  // 创建一个新的 URL 对象,指向你想要重定向的 URL
  const url = new URL('  your-url  ')

  // 创建一个新的响应,状态码为 302,表示临时重定向
  const response = new Response(null, {
    status: 302,
    statusText: 'Found'
  })

  // 在响应的头部中设置 Location 字段,值为你想要重定向的 URL
  response.headers.set('Location', url)

  // 返回这个响应
  return response
}

啊,还是不会设置?不好好研究大善人,对得起___嘛///<完>



  • 关于域名
    直接用大善人的worker反代一下更优雅
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url)
  let targetURL = 'your-koyeb-app-url' + url.pathname + url.search

  let requestInit = {
    method: request.method,
    headers: request.headers,
  };

  // Only include body if method is not GET or HEAD
  if (request.method !== 'GET' && request.method !== 'HEAD') {
    requestInit.body = request.body;
  }

  let response = await fetch(targetURL, requestInit)

  // Create a new response object to modify headers
  let newResponse = new Response(response.body, response)

  // Add CORS headers to the response
  newResponse.headers.set('Access-Control-Allow-Origin', '*')
  newResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
  newResponse.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization')

  return newResponse
}

  • 关于保活
    白嫖一切正常,收到邮件需要每两周登录一下,否则暂停服务:

    用drissionpage写了个简单的每周自动登录脚本放服务器跑着…
6 个赞

好! 感谢分享

很不错,也写了一个 uptime-kuma 网站监控面板 镜像部署

直接用抱抱脸部署uptime,worker反代绑域名,比这丝滑多了~

koyeb封号严重

我反代,是空白的

感谢分享

你worker代码有问题吧?

推荐个代码?我现在用是抱脸的网址

你等我看看怎么复制,手机端没法直接复制

我用的这个

主要为了废物利用 :joy:

koyeb还得14天登录一次,太麻烦了

而且绑不了自己的域名,送的域名也被墙了

几天数据就没了,虽然保存了备份,但是还是麻烦

倒没注意这个,反正实例备份了,重新运行影响不大,不行就换不那么废的继续嫖