如何把 opencode web 暴露在局域网内访问,并用 OPENCODE_SERVER_PASSWORD 保护服务
【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode
opencode web启动的是一个本地 HTTP 服务加 Web 界面,默认情况下它只绑定在127.0.0.1上、使用一个随机可用端口,并自动打开本地浏览器——也就是说,只有运行 opencode 的这台机器自己能用它。如果你的目标是从局域网内的另一台设备(另一台电脑、手机)通过浏览器访问同一个 opencode 会话,需要做两件事:让服务绑定到网络可达的地址(0.0.0.0),以及设置OPENCODE_SERVER_PASSWORD启用 HTTP basic auth,避免服务裸奔在网络上。
本文只针对opencode web这一条路径,相关文档见 web、server、cli 和 config。
默认行为:为什么局域网里访问不到
opencode web的默认参数决定了它的可见范围:
- 绑定地址:默认
127.0.0.1(仅 localhost),其他设备无法建立连接。 - 端口:默认随机选取一个可用端口,每次启动可能不同,不便在其他设备上固定访问。
- 认证:如果未设置
OPENCODE_SERVER_PASSWORD,服务不带任何认证。文档明确提示:这对纯本地使用没问题,但用于网络访问时应当设置密码。
所以局域网暴露的最小改动就是:指定--port、指定--hostname 0.0.0.0、设置密码环境变量。
启动:绑定 0.0.0.0 并设置密码
在运行 opencode 的机器上执行:
OPENCODE_SERVER_PASSWORD=secret opencode web --port 4096 --hostname 0.0.0.0其中secret是文档给出的示例值,请替换为你自己选定的密码;4096也是文档示例端口,可按需替换。OPENCODE_SERVER_PASSWORD会让服务启用 HTTP basic auth,用户名默认为opencode,也可以用OPENCODE_SERVER_USERNAME覆盖默认用户名(例如OPENCODE_SERVER_USERNAME=admin,放在同一行命令的最前面即可)。
启动成功后,使用0.0.0.0时终端会同时打印本地与网络两个访问地址,文档中的示例输出如下(IP 只是示例,你的地址取决于本机网卡):
Local access: http://localhost:4096 Network access: http://192.168.1.100:4096记下Network access那一行,它就是局域网内其他设备要访问的地址。
验证:从另一台设备访问
- 用同一局域网内的另一台设备,在浏览器打开上一步记录的网络地址(如
http://192.168.1.100:4096)。 - 浏览器会提示输入 basic auth 凭据:用户名填
opencode(或你用OPENCODE_SERVER_USERNAME设置的值),密码填OPENCODE_SERVER_PASSWORD的值。能通过认证并看到 Web 界面,说明暴露和密码保护都已生效。 - 如果你没有设置密码,浏览器会直接进入界面——这正是需要避免的状态,文档建议网络访问必须设置
OPENCODE_SERVER_PASSWORD。
此外,服务本身暴露了/global/health端点(GET,返回{ healthy: true, version: string },接口清单见 server 文档)。在局域网设备上请求http://<你的IP>:4096/global/health(凭同样的 basic auth 凭据),返回healthy: true也可以作为服务可达性的检查方式;http://<hostname>:<port>/doc则是该服务的 OpenAPI 3.1 spec 页面。
如果你希望终端 TUI 也连到这个远程服务,可以在另一台终端里 attach 到它,文档示例如下(10.20.30.40为文档示例 IP,替换为你的网络地址):
# 已启动: opencode web --port 4096 --hostname 0.0.0.0 opencode attach http://10.20.30.40:4096attach的--password/--username参数默认就取自OPENCODE_SERVER_PASSWORD/OPENCODE_SERVER_USERNAME,所以服务端设置好环境变量后,attach 端无需额外配置即可通过认证。
可选分支:mDNS 发现与配置文件
mDNS 发现(可选)。如果你的网络支持 mDNS,可以用--mdns让服务在局域网内自动可发现:
opencode web --mdns它会自动把 hostname 设为0.0.0.0并将服务以opencode.local通告。同一网络跑多个实例时,用--mdns-domain定制域名以避免冲突:
opencode web --mdns --mdns-domain myproject.local配置文件方式(可选)。除了命令行参数,也可以在opencode.json里通过server项固定这些设置,供opencode serve和opencode web共用;命令行参数的优先级高于配置文件:
{ "$schema": "https://opencode.ai/config.json", "server": { "port": 4096, "hostname": "0.0.0.0", "mdns": true, "mdnsDomain": "myproject.local", "cors": ["http://localhost:5173"] } }各字段含义:port监听端口;hostname监听地址(启用mdns且未显式设置 hostname 时默认为0.0.0.0);mdns/mdnsDomain控制局域网服务发现,mdnsDomain默认opencode.local;cors是额外允许的浏览器 origin,仅在你要用自定义前端通过浏览器跨域访问 HTTP 服务时才需要,值必须是完整 origin(scheme + host + 可选端口)。注意配置文件不管理认证,密码仍然通过OPENCODE_SERVER_PASSWORD环境变量提供。
限制与注意
- 不设置
OPENCODE_SERVER_PASSWORD时服务是未受保护的,文档明确建议网络访问必须设置;局域网暴露和设置密码应当在同一条启动命令里完成,不要先裸奔再补。 - 认证是 HTTP basic auth,凭据会随请求在网络上明文传输。文档没有给出进一步的 TLS/加密配置项,如果你需要在不可信网络中使用,这一点需要自行评估。
- 端口占用时换一个
--port值即可;opencode serve(无界面 HTTP 服务)与opencode web共享同一套认证环境变量,配置方式一致。 - Windows 用户文档建议从 WSL 而非 PowerShell 里运行
opencode web,以获得完整的文件系统与终端集成体验。
【免费下载链接】opencodeThe open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/openc/opencode
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考