跳到内容
StateDockStateDock
返回 Blog
自部署版本发布MCP

一条命令,把 Agent 的共享记忆装到 5 美元的服务器上

StateDock Local 现在可以一条命令装到任何 Linux VPS 上,作为 systemd 服务常驻:不用 Docker,不用另装数据库,每次升级自动备份、失败自动回滚。

StateDock Local 一开始是一个装在电脑上的应用:下载、双击,你的 Coding Agent 就有了一个共同记录目标、决定、待执行任务和交付结果的地方。

但电脑会睡眠。VPS 上的 Agent 连不上它,手机看不到进度,凌晨三点定时跑起来的任务也领不到活。

0.1.0 版解决了这个问题:同一个程序现在可以作为常驻的小服务器运行,安装只要一条命令。

一条命令

任何使用 systemd 的 Linux(Ubuntu、Debian、Fedora……),x64 或 ARM64 都可以:

curl -fsSL https://raw.githubusercontent.com/statedock/statedock-local/main/scripts/install.sh \
  | sudo bash -s -- --public-url https://dock.example.com

大约一分钟后你会得到:

  • 一个名为 statedock 的服务,开机自启、崩溃自动重启,以独立的无特权用户运行;
  • 程序在 /opt/statedock,数据在 /var/lib/statedock,配置在 /etc/statedock/statedock.env;
  • 一个访问令牌:sudo statedock token 就能看到。

不用 Docker,不用 Node.js,不用 Postgres。发布包自带运行时,数据就是一个 SQLite 文件,1 核 1G 的机器跑起来绰绰有余。

还没有域名?去掉 --public-url 也能装,先在服务器本机上跑起来,域名以后再加。

让它能被访问

默认只监听 127.0.0.1:4040,在你决定怎么开放之前,什么都不会暴露出去。最简单的办法是用 Caddy,它会自己申请 HTTPS 证书:

dock.example.com {
    reverse_proxy 127.0.0.1:4040
}

不想开放任何端口的话,也可以用 Cloudflare Tunnel 或 Tailscale 指向 http://127.0.0.1:4040。

一个所有者,一个令牌

在服务器上,StateDock 会进入服务器模式。没有账号、角色、邀请要管理,只有一个令牌:

  • 浏览器在 /login 登录一次,保持 30 天;
  • Agent 把它作为 Bearer 令牌发送;
  • 除了健康检查和静态文件,所有访问都需要它。

以 Claude Code 为例:

claude mcp add --transport http statedock https://dock.example.com/mcp \
  --header "Authorization: Bearer 你的令牌"

Cursor、Codex、Windsurf 等 MCP 客户端用同样的地址和请求头。万一令牌泄露,删除 /var/lib/statedock/agent_token 再重启服务即可:会生成新令牌,所有旧的登录同时失效。

升级不会弄丢数据

我最在意的,恰恰是最不起眼的这一条:

sudo statedock-ctl update

它会下载新版本并校验 checksum,停止服务,把数据库的一致性快照写到 /var/lib/statedock/backups/,然后切换到新版本,等它报告正常。

如果新版本 30 秒内没起来,脚本会恢复快照、切回旧版本并重新启动。结果只有两种:要么升级成功,要么原样回到升级前。

最近三个版本会保留在磁盘上。statedock backup 随时可以手动做一次快照,运行中也可以。

Docker 还在,只是变薄了

如果你的服务器上全是 Docker,ghcr.io/statedock/statedock 就是装在容器里的同一个程序,仓库里还带了一份搭配 Caddy 的 Compose 文件。不再有一个会落后于主线的独立 Docker 版:原来的 statedock-docker 仓库已经归档,它的 ./data 目录可以直接给新镜像用。

数据到哪儿都一样

电脑、VPS、Docker 运行的是同一个程序、同一种数据库格式。先在电脑上用着,想让它 24 小时在线时,停掉它,把 ~/.statedock/statedock.db 复制到服务器上,再启动服务就行。数据库迁移会自动向前执行。

试试看

StateDock Local 基于 AGPL-3.0 开源。如果安装脚本在你的发行版上出了问题,欢迎带上输出开个 issue,这正是这个版本最需要的反馈。