Files
webui4frpc/deploy
jianf eda9bb9597 feat: cluster reliability (leader failover, crash rejoin, key exchange) + auth/users + canvas/forwards enhancements + comprehensive README + API docs
- Cluster: forwardToNext offline detection (leader+non-leader), WatchLeader 1s heartbeat fallback, 409 for standalone nodes, Node.NodeKey key exchange via token ring, ClusterPeers persistence + auto-rejoin, Forward delegates to forwardToNext (bugfix)
- Auth: Basic Auth (flag-creds fast path) + bcrypt users (admin/viewer) + Bearer API keys (read/write/admin scope)
- Frontend: UsersView (accounts+API keys), ClusterView (ring/nodeKey/tasks/topology/log), StatusView (group management, per-proxy status), CanvasView (edge toggle/group), PortEdge (disabled/group labels)
- API: handlers split (canvas/forwards/users/logs), canvas export/import, forwards group start/stop/assign/delete, cluster endpoints
- Docs: comprehensive README rewrite (all flags/APIs/auth/cluster), docs/cluster-api.md (cluster management API reference)
- Deploy: run-cluster.sh now 4-node ring + 1 isolated standalone, test-forward.sh updated for 4 nodes
- Removed plan.md (design notes consolidated into README + API docs)
2026-08-19 21:09:24 +08:00
..

webui4frpc Docker 集群演示

一键起一套 frps + backend + 3×webui4frpc 节点(node-a 种子,node-b/c 通过 -peer 加入并自动从邻居拉取 frpc 二进制)。

前置

  • Docker 可用(无需 build:用宿主编译产物挂载进容器)
  • 宿主机有 /home/jianf/Program/frp/bin/{frpc,frps}(或设置 FRP= 指向别的目录)

启动/停止

cd deploy
go build -o artifacts/webui4frpc ../cmd/webui4frpc   # 首次/改代码后重建
go build -o artifacts/backend ./demo-backend
bash run-cluster.sh          # 启动集群
bash run-cluster.sh stop     # 停止

拓扑

               ┌──────────┐    ┌───────────────────────┐
               │ w4f-frps │◄───│ node-a (7501, 种子)    │
  tunnel:      │ 7000/7080/18081 ├── node-b (7502, peer a)│
  http://127.0.0.1:18081 └──────────┘    └── node-c (7503, peer b)│
      ▼                     └───────────────────────┘
  w4f-backend (8080)  ← frpc 转发

演示点

  • M6 二进制分发:node-a 预置 bin/frpc-0.70.1/frpc;node-b/c 无 frpc,入网后自动向邻居拉取并落盘缓存
  • M3 状态:node-a 配置 adminPort,状态页显示真实 per-proxy 状态(running)
  • 隧道:node-a 画布 local=backend:8080 × remote=frps1,frpc worker 启动后经 frps:18081 访问 backend

验证

# 二进制分发
curl -s -u admin:admin123 http://127.0.0.1:7502/api/manager/cluster/nodes
# 隧道
curl http://127.0.0.1:18081/   # -> hello from w4f demo backend
# 代理状态
curl -s -u admin:admin123 http://127.0.0.1:17401/api/status