# Wormhole 内网穿透 + 反向代理网关(Go + Vue),SQLite 持久化 + 内存缓存。服务端与客户端为**同一二进制**,配置在 Web 管理台完成。 ## 功能 - 客户端管理(Agent 注册、在线状态、verify_key) - 域名解析(HTTP/HTTPS Host 反代) - TCP/UDP 隧道 - IP 安全:精确/CIDR/正则白黑名单、请求 IP 监控、一键拉黑 - 统一登录 + 账号管理(admin/user) - 资源级访问验证(Basic / 表单 / 回调) - 仪表盘:流量与请求 IP 统计 ## 快速开始 ```bash make install make build # 启动服务端(无需配置文件,默认 admin/admin) make run # 或: ./bin/wormhole server # 在管理台「系统设置」中调整端口等参数 # 启动客户端 Agent(仅需命令行参数) ./bin/wormhole agent -server 127.0.0.1:8528 -key ``` 管理界面:http://127.0.0.1:8529(首次启动默认端口,可在系统设置中修改) ## Docker 镜像由 [Gitea Actions](.gitea/workflows/ci.yml) 在 push 到 `main`/`master` 或打 `v*` 标签时自动构建并推送到 Gitea Container Registry。详见 [.gitea/README.md](.gitea/README.md)。 ```bash # 将 替换为你的 Gitea 域名与仓库所有者 IMAGE=//wormhole:latest # 服务端 docker run -d --name wormhole \ -p 8529:8529 -p 8528:8528 -p 8081:8081 -p 8443:8443 \ -v wormhole-data:/app/data \ "$IMAGE" # Agent(同一镜像;务必加 --restart,服务端重启后 Agent 会自动重连) docker run -d --name wormhole-agent \ --restart=unless-stopped \ --network host \ "$IMAGE" \ agent -server <服务端IP>:8528 -key ``` 本地自行构建(与 CI 参数一致): ```bash docker buildx build --platform linux/amd64 \ --build-arg IMAGE_PREFIX=docker.1panel.live/library/ \ --build-arg GOPROXY=https://goproxy.cn,direct \ -f Dockerfile -t wormhole:local . ``` > **注意**:Agent 容器必须与 Server 分开部署。更新 Server 镜像时不要用同一 compose 重建 Agent;Agent 需 `--restart=unless-stopped`,否则收到 `SIGTERM` 后容器会保持 `Exited` 状态。 ## 命令 | 命令 | 说明 | |------|------| | `wormhole server` | 启动服务端 | | `wormhole agent -server <地址> -key ` | 启动 Agent | 数据与配置存储在 `./data/wormhole.db`(SQLite)。 ## 默认端口 | 端口 | 用途 | |------|------| | 8529 | 管理 API + Web UI | | 8528 | Agent Bridge | | 8081 | HTTP 域名反代 | | 8443 | HTTPS 域名反代 | 可在管理台 **系统设置** 中修改(监听端口变更需重启服务)。 ## 默认账号 - 用户名:`admin` - 密码:`admin` ## 开发与 CI | 路径 | 说明 | |------|------| | [`.gitea/workflows/ci.yml`](.gitea/workflows/ci.yml) | Go 测试 + Docker 多架构构建/推送 | | [`.gitea/README.md`](.gitea/README.md) | Runner、Registry、Variables 配置说明 | | [`.gitea/act-runner/`](.gitea/act-runner/) | act_runner 部署参考(可选) | ## License [MIT](LICENSE)