故障排查

排查常见安装、登录、TLS、Agent 接入和升级故障。

先按下方症状定位。命令应在故障主机执行;提交 Issue 时不要粘贴 token、注册码、API key 或首次密码。

第一轮检查

sudo serverbee status
sudo ss -ltnp | grep -E ':(80|443|9527)[[:space:]]'

再按部署方式查看日志:

部署方式命令
systemd Serversudo journalctl -u serverbee-server -n 100 --no-pager
systemd Agentsudo journalctl -u serverbee-agent -n 100 --no-pager
OpenRCsudo tail -n 100 /var/log/serverbee-{server,agent}.log
Docker Serverdocker logs --tail 100 serverbee-server
Docker Agentdocker logs --tail 100 serverbee-agent

找不到首次密码

随机密码只在创建首个用户时打印一次。读取最后一段完整凭据:

sudo journalctl -u serverbee-server --no-pager \
  | grep -A8 'FIRST-RUN ADMIN CREDENTIALS' | tail -n 9

docker logs serverbee-server 2>&1 \
  | grep -A8 'FIRST-RUN ADMIN CREDENTIALS' | tail -n 9

数据库已有用户时,重启不会再次生成密码。请使用该部署支持的账号恢复/管理员流程,不要通过删除数据库强制触发首次启动。

保持公网地址与 Cookie 模式一致:

  • 普通 http://IP:9527 需要 auth.secure_cookie = false。
  • HTTPS 需要 auth.secure_cookie = true,代理必须转发 Host、X-Forwarded-Proto 和 WebSocket upgrade。

修改 /opt/serverbee/etc/server.toml 后执行 sudo serverbee restart server。只清除 ServerBee 站点 Cookie 再重试。不要在 HTTPS 生产部署中关闭 Secure Cookie。

端口、DNS 或证书配置失败

  • IP 直连需要入站 TCP 9527。
  • 托管域名方式需要入站 TCP 80、443,并保证没有非 Caddy 服务占用它们;保持 9527 非公网。
  • 用 getent ahosts monitor.example.com 确认域名解析到本机。
  • 用 sudo caddy validate --config /etc/caddy/Caddyfile 和 sudo journalctl -u caddy -n 100 --no-pager 检查 Caddy。

先修复 DNS、防火墙或端口冲突,再重跑 sudo serverbee domain setup --domain monitor.example.com --email admin@example.com -y。

Agent 一直离线或接入失败

  1. 确认 Agent 的 server_url 与浏览器可达的 HTTP/HTTPS origin 完全一致。
  2. 在 Agent 日志中查找 expired、consumed、replaced、限流、TLS 或连接错误。
  3. Enrollment Offer 绑定到具体 Server、单次使用,默认 10 分钟过期。需要时在既有 Server 上替换精确的 outstanding offer。
  4. claim 前在 Agent 本机修正:
sudo serverbee config set server_url https://monitor.example.com -y
sudo serverbee config set enrollment_code NEW_ONE_TIME_CODE -y

不要对已纳管 Agent 重跑 install agent。claim 成功后,应从 Server 详情页发起平滑或紧急重新接入,而不是修改已消费的 code。

选择的发布通道不符合预期

sudo serverbee status
sudo serverbee upgrade --channel stable -y
sudo serverbee upgrade --channel beta -y

默认 auto 策略优先选择无后缀稳定版,只有不存在稳定版时才回退到预发布版。安装器会按组件保存 auto、stable 或 beta,升级时复用;上方任一显式命令成功升级后会替换已保存策略。选择器依据 SemVer 后缀,而不是可能错误的 GitHub prerelease 标记。需要确定性恢复时传 --version vX.Y.Z,并核对该 Release 的资产和校验和。升级后确认服务/容器健康、重启次数稳定、/healthz 成功,且 UI/About 版本符合目标。

获取帮助

请提供部署方式、OS/init、预期与实际版本、脱敏配置键、完整命令、退出码和相关日志,并说明 /healthz 是否成功,以及故障属于 Server、Agent、浏览器还是反向代理。绝不要包含凭据或 token。