{"id":51106090,"url":"https://github.com/faithererer/gost-pool-panel","last_synced_at":"2026-06-24T14:01:14.872Z","repository":{"id":353896984,"uuid":"1221325722","full_name":"faithererer/gost-pool-panel","owner":"faithererer","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-26T06:10:59.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T06:24:33.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/faithererer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-26T03:41:37.000Z","updated_at":"2026-04-26T06:11:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/faithererer/gost-pool-panel","commit_stats":null,"previous_names":["faithererer/gost-pool-panel"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/faithererer/gost-pool-panel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faithererer%2Fgost-pool-panel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faithererer%2Fgost-pool-panel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faithererer%2Fgost-pool-panel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faithererer%2Fgost-pool-panel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/faithererer","download_url":"https://codeload.github.com/faithererer/gost-pool-panel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/faithererer%2Fgost-pool-panel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34735266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-24T14:00:59.711Z","updated_at":"2026-06-24T14:01:14.857Z","avatar_url":"https://github.com/faithererer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GOST Pool Panel\n\nGOST Pool Panel 是一个面向多台 VPS 的代理池管理面板。管理端负责 Web 控制台、节点接入、任务下发、分组和代理池入口；节点端运行 Linux agent，自动注册、安装 GOST、同步代理配置并上报状态。\n\n它的目标是把“逐台 VPS SSH 搭代理”的流程收敛成面板操作：生成一键命令，节点上线，分组，创建 HTTP/SOCKS5 代理池，然后复制带认证的代理地址或测试命令直接使用。\n## 运行截图\n\u003cimg width=\"3088\" height=\"1581\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f6a85d2d-819c-4efc-a992-ff707ce59749\" /\u003e\n\n## 功能概览\n\n- 中文 Web 管理面板。\n- 一次性注册 token 和 Linux 一键安装命令。\n- Linux 节点自动注册、心跳、任务轮询和结果回传。\n- 节点端自动安装 GOST v3，启动 HTTP/SOCKS5 代理。\n- 节点分组，一个节点可加入多个分组。\n- 管理端代理池入口，按分组聚合节点出口，支持 HTTP/SOCKS5。\n- 全局一组代理认证账号密码。\n- 节点直连代理地址和代理池入口地址复制，默认包含认证信息。\n- 出口网络模式：自动、强制 IPv4、IPv6 优先、强制 IPv6、自定义接口/IP。\n- 远程同步节点代理、重启 GOST、升级 agent、卸载 agent。\n- 任务列表、失败重试、任务清理。\n- 节点流量统计：今日上传/下载、累计上传/下载。\n- Docker Compose 部署，GitHub tag 触发 GHCR 镜像构建。\n\n## 架构\n\n```mermaid\nflowchart TD\n  Browser[\"浏览器 / 管理员\"]\n  Client[\"AI 中转 / 代理客户端\"]\n\n  subgraph Management[\"管理端机器\"]\n    Panel[\"管理端 gost-pool-panel\"]\n    PoolGost[\"代理池入口 GOST\"]\n    Panel --\u003e UI[\"Web UI / Admin API\"]\n    Panel --\u003e Install[\"注册 token / install.sh / agent 下载\"]\n    Panel --\u003e Store[\"JSON 状态存储\"]\n    Panel --\u003e PoolGost\n  end\n\n  subgraph Node[\"Linux 节点 VPS\"]\n    NodeGost[\"节点侧 GOST HTTP/SOCKS5\"]\n    Agent[\"gost-pool-agent\"] --\u003e Tasks[\"心跳 / 任务轮询 / 结果回传\"]\n    Agent --\u003e GostOps[\"安装 / 配置 / 重启 GOST\"]\n    Agent --\u003e Traffic[\"流量统计上报\"]\n    GostOps --\u003e NodeGost\n  end\n\n  Browser --\u003e Panel\n  Client --\u003e PoolGost\n  Client -.-\u003e NodeGost\n  Panel \u003c--\u003e Agent\n  PoolGost --\u003e NodeGost\n```\n\n管理端可运行在 Linux、Windows 或容器中；节点端必须是 Linux，当前内置 `amd64` 和 `arm64` agent。\n\n## 快速部署\n\n推荐生产环境使用 Docker Compose：\n\n```bash\ngit clone https://github.com/faithererer/gost-pool-panel.git\ncd gost-pool-panel\ncp .env.example .env\n```\n\n编辑 `.env`：\n\n```bash\nPANEL_BASE_URL=http://你的管理端公网IP:3000\nPANEL_ADMIN_USER=admin\nPANEL_ADMIN_PASSWORD=一个强密码\nPANEL_SECRET=一段随机字符串\nPANEL_PROXY_USERNAME=proxy\nPANEL_PROXY_PASSWORD=一个代理入口密码\n```\n\n启动：\n\n```bash\ndocker compose --env-file .env up -d --build\n```\n\nDocker Compose 默认使用 `host` 网络，便于管理端同时暴露面板端口和代理池入口端口。请在安全组/防火墙中只放行需要的端口。\n\nHTTPS 不内置。生产环境需要 HTTPS 时，请用 Nginx、Caddy、宝塔等反向代理到面板端口。\n\n## 使用镜像\n\n本仓库的 GitHub Actions 只在推送 `v*` tag 或手动触发 workflow 时构建镜像，普通提交不会触发镜像发布。\n\ntag 镜像示例：\n\n```bash\ndocker pull ghcr.io/faithererer/gost-pool-panel:v0.3.9\n```\n\n使用镜像部署时，把 `docker-compose.yml` 里的 `build: .` 替换成：\n\n```yaml\nimage: ghcr.io/faithererer/gost-pool-panel:v0.3.9\n```\n\n然后启动：\n\n```bash\ndocker compose --env-file .env up -d\n```\n\n## 环境变量\n\n| 名称 | 默认值 | 说明 |\n| --- | --- | --- |\n| `PANEL_PORT` | `3000` | 管理端端口 |\n| `PANEL_LISTEN` | `:3000` | 管理端监听地址 |\n| `PANEL_BASE_URL` | `http://127.0.0.1:3000` | 节点访问管理端的公网 URL |\n| `PANEL_ADMIN_USER` | `admin` | 管理员账号 |\n| `PANEL_ADMIN_PASSWORD` | `admin123` | 管理员密码，生产环境必须修改 |\n| `PANEL_SECRET` | `change-me` | 登录 Cookie 签名密钥，生产环境必须修改 |\n| `PANEL_PROXY_USERNAME` | `proxy` | 首次初始化时使用的代理账号 |\n| `PANEL_PROXY_PASSWORD` | 随机生成 | 首次初始化时使用的代理密码 |\n| `PANEL_DATA_PATH` | `data/state.json` | 数据文件路径 |\n| `PANEL_FRONTEND_DIST` | 空 | 可选，自定义前端构建产物目录 |\n\n如果管理端使用 IPv6 公网地址，`PANEL_BASE_URL` 需要写成带中括号的 URL：\n\n```text\nhttp://[2600:1700:abcd::1234]:3000\n```\n\n## 节点接入\n\n1. 登录管理端。\n2. 进入“接入命令”，创建注册 token。\n3. 在 Linux VPS 上执行页面生成的一键安装命令。\n4. 节点自动注册上线。\n5. 进入“节点”，下发“同步节点代理”。\n6. 进入“分组”，把节点加入分组。\n7. 进入“代理池”，选择分组并配置 HTTP/SOCKS5 入口端口。\n8. 复制代理池入口地址或测试命令。\n\n注册 token 对新节点是一次性的。已注册节点重复执行安装命令时，脚本会优先读取本机保存的节点身份，用于原地升级 agent，不会再次消耗 token。\n\n## 出口网络模式\n\n在“同步节点代理”任务里可以选择出口网络：\n\n- `自动`：交给系统路由和 GOST 默认行为。\n- `强制 IPv4`：agent 自动选择本机 IPv4 源地址作为 GOST 出口。\n- `IPv6 优先`：同步节点代理时先探测节点 IPv6 出口；探测通过则优先使用 AAAA/IPv6，探测失败则自动下发 IPv4-only 配置。IPv4-only 目标也会走 IPv4。\n- `强制 IPv6`：agent 自动选择本机 IPv6 源地址作为 GOST 出口，并让 GOST 只使用 AAAA 解析结果；目标没有 AAAA 记录时会失败。\n- `自定义接口/IP`：手动填写网卡名或本机 IP，例如 `eth0`、`ens3` 或 `2600:...`。\n\n如果某些应用使用强制 IPv6 时返回 503，通常是目标服务 IPv4-only、应用直接访问 IPv4 地址，或本机 IPv6 出口不稳定。优先改用 `IPv6 优先`。\n\n## 代理地址\n\n面板登录账号和代理入口账号是两套凭据。代理认证账号密码在“设置”页维护。\n\n节点直连代理和代理池入口都会展示带认证的完整 URL：\n\n```text\nhttp://proxy:password@8.209.236.102:18080\nsocks5h://proxy:password@8.209.236.102:18081\n```\n\n测试命令示例：\n\n```bash\ncurl -x \"http://proxy:password@管理端IP:28080\" https://api64.ipify.org\ncurl -x \"socks5h://proxy:password@管理端IP:28081\" https://api64.ipify.org\n```\n\n## 本地开发\n\nWindows 本地运行管理端：\n\n```powershell\ncd F:\\WorkSpace\\opensource\\gost-pool-panel\n$env:PANEL_PORT=\"3000\"\n$env:PANEL_BASE_URL=\"http://127.0.0.1:3000\"\n$env:PANEL_ADMIN_USER=\"admin\"\n$env:PANEL_ADMIN_PASSWORD=\"admin123\"\n$env:PANEL_SECRET=\"dev-secret\"\ngo run ./cmd/panel\n```\n\n前端开发：\n\n```powershell\ncd frontend\nnpm install\nnpm run dev\n```\n\n完整构建：\n\n```powershell\n.\\scripts\\build.ps1\n```\n\nLinux/macOS：\n\n```bash\nsh ./scripts/build.sh\n```\n\n构建产物：\n\n```text\ndist/gost-pool-panel.exe\ndist/gost-pool-agent-linux-amd64\ndist/gost-pool-agent-linux-arm64\nfrontend/dist/\n```\n\n## 运维说明\n\n- 管理端状态默认保存在 `./data/state.json`，容器内路径为 `/data/state.json`。\n- 节点 agent 安装在 `/opt/gost-pool-agent`。\n- 节点 GOST 配置写入 `/etc/gost/gost.json`。\n- 节点 GOST 二进制安装到 `/usr/local/bin/gost`。\n- 远程卸载 agent 只删除本项目 agent 和 systemd 服务，不停止、不禁用、不删除 GOST。\n- 流量统计依赖节点侧 `iptables` / `ip6tables` 计数规则。\n\n## 文档\n\n- [发布指南](docs/RELEASE.md)\n- [VPS 调试指南](docs/VPS_DEBUG.md)\n- [前端 API 文档](docs/FRONTEND_API.md)\n- [产品规格](REQUIREMENTS.md)\n\n## 当前限制\n\n- 仅支持一个管理员账号。\n- HTTPS 不内置。\n- 代理认证为全局一组账号密码。\n- 数据存储为本地 JSON 文件。\n- 节点端只支持 Linux。\n- 尚未实现主动健康检查和自动剔除故障节点。\n- 流量统计适合面板展示，不作为账单级计费依据。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaithererer%2Fgost-pool-panel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaithererer%2Fgost-pool-panel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaithererer%2Fgost-pool-panel/lists"}