飞连(CorpLink)企业 VPN 的 self-hosted Web 控制面板,Go + React 18,零特权运行
4.1K
飞连(CorpLink)企业 VPN 的 self-hosted Web 控制面板
浏览器登录 · 浏览器选节点 · 一个 HTTP / SOCKS5 端口让任何设备走 VPN
非官方第三方实现,与飞连官方均无任何关联。
Fork 自 PinkD/corplink-rs(飞连客户端的 Rust 实现),控制面与数据面已全部用 Go 重写,前端用 React 18 + Tailwind v4 + shadcn/ui 重做。
NET_ADMIN / /dev/net/tun,容器与沙箱友好//go:embed 内嵌进 Go binary,无外部资源依赖镜像已发布在 Docker Hub,多架构(linux/amd64 + linux/arm64),开箱即用:
docker run -d --name corplink-web \
--restart unless-stopped \
-p 6151:6151 -p 23456:23456 \
-v corplink-web-data:/etc/corplink \
riba2534/corplink-web:latest
打开 http://localhost:6151 → 输入企业代号 → 登录 → 选节点 → 连接。
连接成功后 http://localhost:23456 即可作为 HTTP / SOCKS5 代理使用。
标签
latest始终指向主分支最新构建。需要锁定具体版本时,可使用以 commit sha 命名的 tag(例如riba2534/corplink-web:a5fa0c9)。
如果想自己从源码构建镜像:
docker build -t corplink-web:latest .
需要 Go ≥ 1.23、Node ≥ 20。
# 1. 编译前端(产物 embed 到 Go binary 里)
cd web/ui && npm ci && npm run build && cd ../..
# 2. 编译 Go binary
cd web && go build -trimpath -o corplink-web ./cmd/corplink-web
# 3. 启动(首次会自动生成 config.json + WireGuard keypair)
./corplink-web --listen 127.0.0.1:6151 ./config.json
代理默认 listen 在 0.0.0.0:23456(HTTP / SOCKS5 混合),任何能连到这个端口的客户端都能用:
# SOCKS5(用 socks5h:// 让 DNS 也走隧道,避免泄漏)
curl --socks5-hostname 127.0.0.1:23456 https://ifconfig.me
# HTTP CONNECT(HTTPS 走隧道)
curl --proxy 127.0.0.1:23456 https://ifconfig.me
# HTTP plain forward(明文 HTTP)
curl --proxy http://127.0.0.1:23456 http://example.com
代理本身没有鉴权。如果暴露在
0.0.0.0上,任何能到达这个端口的客户端都能拿你的企业 VPN 当跳板。生产部署请放在带防火墙规则、源 IP 白名单或 VPN 网络隔离的环境里。
首次启动若 config.json 不存在或为空,会自动写入 device_id、WireGuard keypair、默认 socks_listen 等字段。常用可调项:
| 字段 | 默认值 | 说明 |
|---|---|---|
company_name | (自动) | 企业代号(首次在 UI 输入后写入) |
username | (自动) | 登录用户名 |
socks_listen | 0.0.0.0:23456 | 代理监听地址(HTTP / SOCKS5 混合) |
vpn_server_id | 0 | 固定节点 ID;0 表示按策略选 |
vpn_select_strategy | default | default(首个可达)/ latency(最低延迟) |
route_mode | full | full(默认,全局)/ split(按服务端下发的 routes) |
socks_listen 也可以直接在 UI 的 设置 弹窗里改,保存后下次连接生效。
*cookies.json 与配置同目录,存登录态;这两类文件都包含敏感信息(WireGuard 私钥、登录会话、企业代号),任何情况下都不要 commit 到公开仓库(已在 .gitignore 里)。
| 端口 | 用途 | 何时 listen |
|---|---|---|
6151 | HTTP 控制面板(前端 + REST API) | 进程启动即 listen |
23456 | HTTP / SOCKS5 混合代理 | 仅当 VPN 已连接时 |
两个端口都可以通过 Docker -p 主机端口:容器端口 自由映射;代理端口也能改 config.json 的 socks_listen,控制面板端口由 --listen 命令行 flag 指定。
127.0.0.1:6151 仅本机访问,要暴露到 LAN 请显式 --listen 0.0.0.0:6151 并配合防火墙 / 反向代理 + 鉴权0.0.0.0:23456,详见上面"代理暴露"段落config.json / *cookies.json 含私钥与登录态,任何情况下都不要 commit欢迎 issue 与 PR。提交前请确认:
config.json、*cookies.json、登录态截图等)cd web/ui && npm run build 与 cd web && go build ./... 都可通过开发流程与项目结构详见 CLAUDE.md。
GNU General Public License v2.0 —— 继承自上游 corplink-rs。完整许可证文本见 license.txt。
Content type
Image
Digest
sha256:affe684ba…
Size
38 MB
Last updated
26 days ago
docker pull riba2534/corplink-web