如何把 opencode web 暴露在局域网内访问,并用 OPENCODE_SERVER_PASSWORD 保护服务
2026/9/10 1:49:32 网站建设 项目流程

如何把 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那一行,它就是局域网内其他设备要访问的地址。

验证:从另一台设备访问

  1. 用同一局域网内的另一台设备,在浏览器打开上一步记录的网络地址(如http://192.168.1.100:4096)。
  2. 浏览器会提示输入 basic auth 凭据:用户名填opencode(或你用OPENCODE_SERVER_USERNAME设置的值),密码填OPENCODE_SERVER_PASSWORD的值。能通过认证并看到 Web 界面,说明暴露和密码保护都已生效。
  3. 如果你没有设置密码,浏览器会直接进入界面——这正是需要避免的状态,文档建议网络访问必须设置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:4096

attach--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 serveopencode 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.localcors是额外允许的浏览器 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询