一次服务器维护引发的连锁灾难:我如何重建 Dokploy + Traefik 架构
2025/12/04

一次服务器维护引发的连锁灾难:我如何重建 Dokploy + Traefik 架构

记录一次由服务商维护引发的连锁故障,误删 Traefik 导致的全面瘫痪,以及如何通过重建控制层实现更稳健的远程部署架构。

最近经历了一次非常特殊的事故,值得写下来给后来者踩坑前参考。

事情的起因非常简单:美国服务器因为服务商维护重启。

结果重启之后,Dokploy 下的部分项目开始异常:

  • 域名 404
  • SSL 报错
  • 容器能跑但不对外服务

在焦虑下,我犯了一个严重错误:

我手动删除了原本 Dokploy 自动管理的 Traefik。

没想到这一删,直接导致几十个项目一夜之间全部失联。

误删 Traefik 导致所有项目失联


第一阶段:手动救火,但越救越乱

为了先把业务救起来,我快速手动启动了一个 Traefik,并开始为每个服务写路由配置。

短期效果还行,部分项目能访问了。但很快问题开始滚雪球:

  • 多端口应用(比如 MinIO 9000/9001)难以保持一致
  • 复杂服务(Plausible、ClickHouse)反向代理配置越来越乱
  • 每修一个配置都会引发新的网络问题
  • 整个系统变成一堆补丁

说白了:手工 Traefik 完全不是 Dokploy 的设计方式,补丁越打越烂。


第二阶段:决定彻底重建控制层

折腾一天后我下定决心:

  1. 所有业务的数据卷必须保留
  2. 所有 UI 配置重新整理
  3. Traefik 要回到 Dokploy 官方模式
  4. 整个 PaaS 控制层重建,但业务不动

为了降低风险,我选择:用香港服务器作为新的 Dokploy 控制面板(控制端),再用它远程部署到美国服务器(执行端)。

这样结构更干净,未来也更能扩展。

香港控制面板 + 美国执行节点的分层架构


第三阶段:打通远程部署链路

我在香港服务器生成 SSH Key:

ssh-keygen -t ed25519 -C "dokploy-from-hk" -f ~/.ssh/dokploy_hk

把公钥加入美国服务器的 authorized_keys

cat ~/.ssh/dokploy_hk.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

在香港 Dokploy 中添加私钥,并新建 Remote Server。测试连接成功的那一刻,我知道远程部署的基础设施已经到位。

配置 SSH 密钥并建立远程服务器连接


第四阶段:完整重装美国 Dokploy

这一步最关键的是只删服务,不删数据

删除旧的 Dokploy 服务:

docker service rm dokploy dokploy-traefik dokploy-postgres dokploy-redis

删除 Dokploy 自己的数据卷(不删除业务卷):

docker volume rm dokploy dokploy-postgres dokploy-redis dokploy-docker-config

然后重新安装:

curl -sSL https://dokploy.com/install.sh | sh

官方 Traefik 跟着一起恢复。整个入口层总算恢复到「可维护的状态」。


第五阶段:逐个重建项目配置

我把所有项目的 UI 配置重新录入香港 Dokploy:

  • Git 仓库
  • Build 设置
  • 环境变量
  • 域名配置
  • 端口
  • 数据库连接

然后切换部署目标为 美国服务器 → 点击 Deploy

Dokploy 会自动执行:SSH 到美国服务器 -> 构建镜像 -> 创建 Swarm 服务 -> 自动写 Traefik 路由。

这比我手动折腾 Traefik 不知干净多少倍。

在 Dokploy 中重新配置项目并远程部署


第六阶段:MinIO 数据恢复

第一次部署 MinIO 后,我发现:所有桶消失了。

我以为数据没挂对,于是检查 volume:

docker inspect <minio容> | grep Source

发现真正的历史数据卷不是我以为的那个,而是:aluo-minio-ttmwjm_minio-data-aluo-minio-ttmwjm

修改 compose 挂载正确的卷后重启——所有桶和文件重新出现。

这一步真的像掂着心跳在做,但结果非常完美。


最终结果

几小时的折腾之后:

  • 所有项目恢复正常
  • 所有数据完好无损
  • Traefik 回到健康状态
  • UI 配置集中管理到香港服务器
  • 美国服务器变成干净的部署节点
  • 整个部署链条比过去更强、更稳、更易维护

所有项目恢复正常运行的最终状态


教训与建议

最后总结几点:

  1. 永远不要手动删除 Dokploy 的 Traefik:这是系统入口,动它等于断电。
  2. 数据卷是生命线,务必保护好:有卷就能复活。
  3. 使用 Remote Deploy:这才是 Dokploy 管理多台服务器的正确姿势。
  4. 越乱越不能急:删 Traefik 就是典型"心急误伤队友"。
  5. 备份配置信息:环境变量、域名配置、数据库连接等信息要有备份。
  6. 分层架构的价值:控制面板和执行节点分离,让系统更加健壮。

结语

这次故障虽然带来了不少麻烦,但也让我对 Dokploy 的架构有了更深的理解。通过将控制面板和部署节点分离,不仅解决了眼前的问题,也为未来的扩展打下了更好的基础。