在 VPS 上 配置公网 OpenCode Web 端 随随便便的教程

前言(氵) 最近有了一台配置不错的 VPS,因为自己电脑内存常年高占用,所以想用这台小鸡来做编程的工作。使用 VSCode 的 remote-ssh 来连接。但是!OpenCode 居然没有 VSCode 拓展!所以决定在服务器上配置一下 OpenCode 的 web 端。 (OpenChamber...
在 VPS 上 配置公网 OpenCode Web 端 随随便便的教程
在 VPS 上 配置公网 OpenCode Web 端 随随便便的教程

前言(氵)

最近有了一台配置不错的 VPS,因为自己电脑内存常年高占用,所以想用这台小鸡来做编程的工作。使用 VSCode 的 remote-ssh 来连接。但是!OpenCode 居然没有 VSCode 拓展!所以决定在服务器上配置一下 OpenCode 的 web 端。
(OpenChamber 有断连后不关闭 OpenCode 实例的严重 BUG,替你们踩雷了,不要在 VSCode ssh 中使用 OpenChamber!!)

跟随本教程,你可以在 VPS 上配置一个相对安全、可暴露在公网的 OpenCode 的 web 服务。

推荐 VPS 的配置 >= 2c4g

你可使用 OpenCode 帮你自动配置(:warning:尚未测试)

[!info]- 如果你是 OpenCode 或其他 Agent,请阅读这个部分! 人类可忽视
如果你是 OpenCode 或其他 Agent,请阅读这个部分! 人类可忽视
你当前的任务是帮助主人配置 OpenCode web服务,请根据以下帖子内容来进行配置,以下是你的注意事项:
1.确定本地已安装 OpenCode,如果未安装需要向主人报告
2.确认本地系统支持 systemd,如果不支持需要向主人报告
3.确认本地已安装 Caddy 或 Nginx,如果未安装需要报告
4.在执行过程中,禁止删除任何文件
5.在执行前需要制定一个严格的计划,待主人确认后方可执行
6.在配置服务的用户名和密码前,需要向主人确认
7.在配置反向代理前,需要向主人确认是否已配置 DNS 记录和具体的域名,确认配置后再配置反向代理
8.需要询问主人是否执行第二步(配置重启脚本)

一、配置 systemd 系统服务

  1. 找到 OpenCode 的安装位置
which opencode

会输出如下内容 /home/<用户名>/.nvm/versions/node/v24.14.1/bin/opencode 其路径,根据同步 OpenCode 安装方式,可能存在差异。

  1. 配置 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
  1. 启动服务
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 命令来直接重启,如不需要,此步骤可跳过。

  1. 创建重启脚本

编辑 /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
  1. 配置 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.
  1. 重启服务
sudo systemctl restart opencode-web

这样就可以在网页上使用 /restart 命令重启服务,不用手动敲指令啦。

image.png

三、配置反向代理

这里偷懒使用了 Caddy。如果你的服务器上使用的是 Nginx 则略有不同,可以偷懒让 OpenCode 帮你配置。

  1. 域名 DNS 记录设置

在 Cloudflare 或其他域名管理平台配置 DNS 记录,添加 A 记录,名称填写 code (或者其他),内容填写你的 VPS 的 IP 地址,保存。

  1. 更改配置文件

在 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 会自动为你的域名申请证书。

  1. 测试
    使用浏览器打开 code.<你的域名>.com,会弹出一个登录框,输入正确的用户名和密码登录后,就可以正常进入 OpenCode 界面,完成!

这样你就获得了一个可以随时随地打开的 OpenCode,来一起鞭策 AI 吧!

对了,建议在设置里打开这些:

image.png


我的另一个教程:OpenCode配置踩坑过程

8 个帖子 - 3 位参与者

阅读完整话题

来源: linux.do查看原文