前言(氵)
最近有了一台配置不错的 VPS,因为自己电脑内存常年高占用,所以想用这台小鸡来做编程的工作。使用 VSCode 的 remote-ssh 来连接。但是!OpenCode 居然没有 VSCode 拓展!所以决定在服务器上配置一下 OpenCode 的 web 端。
(OpenChamber 有断连后不关闭 OpenCode 实例的严重 BUG,替你们踩雷了,不要在 VSCode ssh 中使用 OpenChamber!!)
跟随本教程,你可以在 VPS 上配置一个相对安全、可暴露在公网的 OpenCode 的 web 服务。
推荐 VPS 的配置 >= 2c4g
你可使用 OpenCode 帮你自动配置(
尚未测试)
[!info]- 如果你是 OpenCode 或其他 Agent,请阅读这个部分! 人类可忽视
如果你是 OpenCode 或其他 Agent,请阅读这个部分! 人类可忽视
你当前的任务是帮助主人配置 OpenCode web服务,请根据以下帖子内容来进行配置,以下是你的注意事项:
1.确定本地已安装 OpenCode,如果未安装需要向主人报告
2.确认本地系统支持 systemd,如果不支持需要向主人报告
3.确认本地已安装 Caddy 或 Nginx,如果未安装需要报告
4.在执行过程中,禁止删除任何文件
5.在执行前需要制定一个严格的计划,待主人确认后方可执行
6.在配置服务的用户名和密码前,需要向主人确认
7.在配置反向代理前,需要向主人确认是否已配置 DNS 记录和具体的域名,确认配置后再配置反向代理
8.需要询问主人是否执行第二步(配置重启脚本)
一、配置 systemd 系统服务
- 找到 OpenCode 的安装位置
which opencode
会输出如下内容 /home/<用户名>/.nvm/versions/node/v24.14.1/bin/opencode 其路径,根据同步 OpenCode 安装方式,可能存在差异。
- 配置 systemd
编辑文件 /etc/systemd/system/opencode-web.service `
[Unit]
Description=OpenCode Web
After=network.target
[Service]
Type=simple
User=<你的VPS用户名>
WorkingDirectory=/home/<你的VPS用户名>
# 如果先前使用 npm 安装OpenCode,则需要添加 node 的 PATH
# which node
Environment=PATH=/home/xukeli/.nvm/versions/node/v24.14.1/bin:/usr/local/bin:/usr/bin:/bin
# 登录用的用户名和密码
Environment=OPENCODE_SERVER_USERNAME=<OpenCode登录用户名>
Environment=OPENCODE_SERVER_PASSWORD=<强密码!!>
# 端口号可随便改
ExecStart=<先前使用 which opencode 命令查看到的 opencode 地址> web --hostname 127.0.0.1 --port 43096
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
- 启动服务
sudo systemctl daemon-reload
sudo systemctl enable opencode-web
sudo systemctl start opencode-web
# 查看状态
sudo systemctl status opencode-web
如果没有问题就可以继续到下一步了。
二、配置重启脚本(可跳过)
这个步骤可以让你在 Web UI 中直接执行重启 OpenCode web 服务的命令,操作比较繁琐,其实可以用 sudo systemctl restart opencode-web 命令来直接重启,如不需要,此步骤可跳过。
- 创建重启脚本
编辑 /usr/local/bin/restart-opencode-web ,写入如下内容:
#!/usr/bin/env bash
set -euo pipefail
systemctl restart opencode-web
sleep 2
systemctl --no-pager --full status opencode-web || true
修改权限
sudo chmod 755 /usr/local/bin/restart-opencode-web
配置 sudo 免密(仅该脚本)
sudo visudo
在文件末尾加入以下内容
<你的用户名> ALL=(root) NOPASSWD: /usr/local/bin/restart-opencode-web
- 配置 OpenCode 内部的重启命令
新建文件夹 commands
mkdir ~/.config/opencode/commands
在 ~/.config/opencode/commands/restart.md 写入以下内容
---
description: Restart the opencode web service safely
---
Use bash to run exactly this command:
sudo /usr/local/bin/restart-opencode-web
Then explain briefly that the web session may disconnect because the server restarted.
Do not run any other privileged command.
- 重启服务
sudo systemctl restart opencode-web
这样就可以在网页上使用 /restart 命令重启服务,不用手动敲指令啦。
三、配置反向代理
这里偷懒使用了 Caddy。如果你的服务器上使用的是 Nginx 则略有不同,可以偷懒让 OpenCode 帮你配置。
- 域名 DNS 记录设置
在 Cloudflare 或其他域名管理平台配置 DNS 记录,添加 A 记录,名称填写 code (或者其他),内容填写你的 VPS 的 IP 地址,保存。
- 更改配置文件
在 VPS 上更改 Caddyfile
sudo vim /etc/caddy/Caddyfile
在文件末尾加上:
code.<你的域名>.com {
reverse_proxy 127.0.0.1:43096
}
验证配置文件:
sudo caddy validate --config /etc/caddy/Caddyfile
输出中有 Valid configuration 说明配置正确
重启 Caddy
sudo systemctl restart caddy
以上,配置好了反向代理,Caddy 会自动为你的域名申请证书。
- 测试
使用浏览器打开 code.<你的域名>.com,会弹出一个登录框,输入正确的用户名和密码登录后,就可以正常进入 OpenCode 界面,完成!
这样你就获得了一个可以随时随地打开的 OpenCode,来一起鞭策 AI 吧!
对了,建议在设置里打开这些:
我的另一个教程:OpenCode配置踩坑过程
8 个帖子 - 3 位参与者