[自荐] 一个可以自建的轻量化 Serverless 服务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Jiubia

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

  •  
  •   Jiubia 11 天前 868 次点击

    为什么会有这个项目

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

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

    这个项目能做什么

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

    • 主程序运行在 Docker 中,脚本运行不依赖容器,开箱即用
    • 在 Docker 中使用 google nsjail 进行脚本环境隔离,能够最低限度的保障脚本安全和资源限制(内存、文件权限隔离)
    • 有配套的 UI 页面,创建、编辑、删除脚本通过浏览器就能完成
    • 支持 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 端口,后台地址为 <host>: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 替代
    5 条回复    2026-04-14 10:18:10 +08:00
    Jiubia
        1
    Jiubia  
    OP
       11 天前
    不得不感慨,现在 AI 真强大,去年初就想开的坑,但是迫于麻烦就一直没搞,今年断断续续花了一个月时间, 就完成了一个能稳定使用的版本
    ixoy
        2
    ixoy  
       11 天前
    之前也有同样的想法,支持单机自建,直连本地数据库/存储,简单配置。

    概念上 serverless 绑定可伸缩容器。

    奈何 AWS 官方 serverless 框架一开始就要绑定平台账号,相当无语,直接劝退。

    后来也发现单机的 workers 类似提供一套可注册的 controllers 。

    但对于小项目而言,喜欢的是这套服务管理框架,能快捷调用。若后续业务增长,可快速移植扩容。
    lolo1
        3
    lolo1  
       11 天前
    真厉害,以前见过好多类似开源的,光 yaml 文件就快几百行了,太笨重。感谢感谢~
    Jiubia
        4
    Jiubia  
    OP
       10 天前
    @ixoy 这个确实,之前公司就是直接在 AWS 控制台管理 lambda ,很不方便。不过现在有一个项目支持你说的这个场景了 https://github.com/Serverless-Devs/Serverless-Devs
    jukanntenn
        5
    jukanntenn  
       10 天前
    感谢开源!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 16:32 PVG 00:32 LAX 09:32 JFK 12:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86