GoForum🌐 V2EX

[自荐] 一个可以自建的轻量化 Serverless 服务

Jiubia · 2026-04-13 17:30 · 0 次点赞 · 1 条回复

为什么会有这个项目

一般情况下,最常用的还是 cloudflare Worker ,但是有些情况下我并不太期望使用 cf worker ,比如:网络环境、内网访问、临时的文件(临时配置和脚本)等
然后再出于我对 serverless 的依赖性比较高,所以决定从头撸一套

类似的流行开源项目有 fission 、faas 等,但无一例外,基本都是基于 k8s 或 docker 的,也就是说,脚本是运行在 container(容器) 中的,这对于我来说并不太需要,再加上他们都是偏向 cli 的程序,所以主要的操作的方式是通过 cli 或 k8s api 处理,没有完整的配套 Web 界面,不过现在有 AI 了,倒也不麻烦了

这个项目能做什么

与 cf worker 类似的云函数机制,只需要在 Worker 中编写代码,即可实现调用,省去服务部署流程

  • 主程序运行在 Docker 中,脚本运行不依赖容器,开箱即用
  • 在 Docker 中使用 google nsjail 进行脚本环境隔离,能够最低限度的保障脚本安全和资源限制(内存、文件权限隔离)
  • 有配套的 UI 页面,创建、编辑、删除脚本通过浏览器就能完成
  • 在 AI 工具中,使用自然语言的方式创建 Worker
  • 支持 HTTP URL 路径配置、超时配置,支持 Nodejs 和 Python 两种运行环境
  • 支持 Cron 定时器调度,青龙面板的轻量化版本
  • 支持 MCP 和 Agent Skill ,你可以通过自然语言的方式来创建 Worker ,具体参考 Callit-Skill
  • 支持 kv 、db 数据库操作,实现数据持久化和跨 Worker 数据共享

更多介绍参考 Github 项目 https://github.com/YangZxi/Callit

home1 detail1 edit

如何使用

目前只提供 Docker 方式启动

1. 创建目录并拉取 docker-compose 文件

mkdir callit
wget -O docker-compose.yml https://raw.githubusercontent.com/YangZxi/Callit/refs/heads/main/docker-compose.prod.yml

2. 设置必要的环境变量

强烈建议将 token 设置为复杂的长密码或 UUID
当然,你也可以不配置 ADMIN_TOKEN ,他会在每次启动时随机生成一个长密码,密码会在日志中打印

sed -i 's|^\s*- ADMIN_TOKEN=.*|- ADMIN_TOKEN=你的 token|' docker-compose.yml

3. 项目启动

docker compose up -d
# 或
docker-compose up -d

项目会运行在 3100 端口,后台地址为 :3100/admin

其他事项

  1. 项目默认不会开启 MCP 功能
    通过 WebUI -> Config ,打开 MCP Enable,并配置 MCP Token 来开启 MCP 访问
  2. 如何通过 AI 来创建 Worker 如果使用的是 ClaudeCode 、Codex 、OpenCode 、OpenClaw ,你可以直接将以下内容发给 AI 来自动安装
Fetch and follow instructions from https://raw.githubusercontent.com/YangZxi/Callit-skill/refs/heads/main/README.md to install the skill.

如果你使用的是 Cherry Studio 等聊天工具,请参考对应软件的 MCP 安装教程,然后在每次聊天时,指明 AI 应该 “调用 callit-mcp 工具来创建 Worker”

如果大家对这个项目感兴趣,欢迎点个 Star 。另外我还有个图床 (Linkit) 项目在这里推荐下
在项目使用期间,如果碰到任何问题,欢迎在评论区或 Github Issue 提出

已知问题

  • 由于 nsjail 和 nodejs 自带的 fetch 库有兼容性问题,目前无法在 node 环境中使用,只能使用 node-fetch@2 版本进行替代。暂时还没找到解决方案,除非不用沙箱或者 nsjail
  • 在 docker-compose 命令下,无法使用 systempaths=unconfined 权限,只能更新到 dokcer compose 或者使用 privileged: true 替代
1 条回复
Jiubia · 2026-04-13 17:30
#1

不得不感慨,现在 AI 真强大,去年初就想开的坑,但是迫于麻烦就一直没搞,今年断断续续花了一个月时间, 就完成了一个能稳定使用的版本

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: Jiubia
发布: 2026-04-13
点赞: 0
回复: 0