把 opencode 网页端做成后台服务

之前 opencode 的网页端跑在终端里,关掉窗口或者 SSH 断开就没了。这次用 systemd 用户服务把它做成常驻后台,开机自启、崩溃自动恢复。

确认 opencode 路径

1
2
which opencode
# /root/.opencode/bin/opencode

opencode 提供了 opencode serve 命令,以 headless 模式启动 Web 服务器,不打开浏览器,适合后台服务场景:

1
2
3
opencode serve --help
# --hostname 监听地址(默认 127.0.0.1)
# --port 监听端口(默认 0,随机分配)

写入服务文件

把下面的配置贴到终端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mkdir -p ~/.config/systemd/user

cat <<'EOF' > ~/.config/systemd/user/opencode-web.service
[Unit]
Description=OpenCode Web Interface
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/root/.opencode/bin/opencode serve --hostname 0.0.0.0 --port 32999
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
EOF

启动并启用开机自启

1
2
systemctl --user daemon-reload
systemctl --user enable --now opencode-web.service

验证

1
systemctl --user status opencode-web.service

看到 active (running) 就对了。再确认端口在监听:

1
ss -tlnp | grep ':32999'

管理命令备忘

1
2
3
4
5
6
7
8
# 查看状态
systemctl --user status opencode-web

# 重启
systemctl --user restart opencode-web.service

# 停用
systemctl --user disable --now opencode-web.service

注意事项

  • --hostname 0.0.0.0 允许外部网络访问,如果需要限制为本机,改为 127.0.0.1
  • 如果 OPENCODE_SERVER_PASSWORD 环境变量未设置,服务器无认证保护,生产环境建议设置密码
  • 修改端口后执行 systemctl --user daemon-reload && systemctl --user restart opencode-web.service