接入舰队代理
舰队代理是运行在另一台 VPS 上的小守护进程,让 Dockstash 也能备份那台主机上的容器。代理经 HTTPS 主动回连——你的机器不开任何入站端口——并执行与主服务器相同的「先转储后 restic」流水线。多 VPS 舰队是 Business 档的功能。
怎么做
打开 Fleet 页面
在控制台进入 Fleet。该页面列出每个已注册代理及其在线/离线状态、版本与最近一次心跳。
注册代理
点击 Register agent,填写名称和它将运行的主机。同一对话框里,把 Project directories 字段设为那台 VPS 上 Compose 项目所在的位置(默认 /var/www)——代理只会在这些目录内发现、备份和还原。
复制一次性令牌
注册会铸造形如 dsa_<agentId>.<secret> 的令牌并只显示一次——服务器上只存带密钥的 HMAC,永远无法再取回。现在就复制。丢了就在代理行上用 Rotate key:新令牌一铸出,旧令牌立即失效。
在 VPS 上安装代理
注册对话框展示一段可直接复制粘贴的 docker-compose 配置,已预填你的令牌和项目目录。粘贴到目标 VPS 并启动。内置的 docker-socket-proxy 按最小权限原则给代理 Docker 访问(仅容器 + exec)——它绝不触碰裸 socket。
docker compose -f docker-compose.agent.yml pull docker compose -f docker-compose.agent.yml up -d --force-recreate检查项目目录的挂载
列出的每个目录还必须在 compose 中以读写方式 bind 挂载(容器内外路径一致)——还原要把文件写回去。以后要加目录,打开代理的 Setup 对话框,加入后重新执行显示的 compose 命令。
确认代理在线
约 30 秒内第一次心跳到达,Fleet 行翻为在线。若仍离线,确认两个容器都在运行,且从 VPS 能访问你的 Dockstash 地址。
docker compose -f docker-compose.agent.yml ps把项目指派给代理
打开某项目的 Plan 标签,把「Runs on」设为新代理(默认是「This server (local)」)。此后该项目的排程与手动备份都由代理认领执行,实时日志流回你的控制台。
常见 问题
Dockstash 服务器会连进我的 VPS 吗?
不会。连接只有出站:代理用 Bearer 令牌经 HTTPS 轮询和发心跳。你不开任何入站端口,服务器也从不主动拨号你的机器。
代理能看到我服务器上的什么?
只有你允许的部分。文件系统访问限于配置的项目目录(且必须显式挂载),Docker 访问经 socket 代理,只暴露容器列表和 exec——没有镜像构建、没有卷挂载、没有主机 root。
代理在备份中途挂了会怎样?
每个任务都有租约(默认 15 分钟,日志流动时续期)。租约到期任务标记失败并发出警报——绝不静默重试,你总能知道某次运行没有完成。
还原演练在舰队代理上运行吗?
还不行——演练仍在主服务器上执行。备份、校验(restic check)、prune 和还原都在代理上远程运行。
我轮换了密钥,代理开始收 401。怎么办?
运行中的容器还握着旧令牌。更新 docker-compose.agent.yml 里的 DOCKSTASH_AGENT_TOKEN 并重建容器。轮换会立即吊销旧令牌——设计如此。