912a495e91
一台全新 Ubuntu/Debian VPS 上一条命令起整套 pangolin:MySQL + Redis(docker)
+ 控制面(HTTP + gRPC agent 服务)+ 节点 agent + sing-box 数据面,客户端连该
VPS 公网 IP 真实出网。
- deploy.sh:幂等编排——构建二进制 → docker MySQL/Redis → 生成 JWT/webhook/
derive 密钥 + Node CA + CA 签发的 gRPC server 证书(SAN localhost,匹配 agent
enroll 后的 mTLS 校验)+ REALITY 密钥对(持久化跨重部署)→ migrate + seed 节点
→ 起控制面(走完整 gRPC 分支)→ nodectl bootstrap-token → 起 agent + sing-box。
- systemd/{pangolin-server,pangolin-agent,sing-box}.service、docker-compose.yml
(MySQL/Redis 仅 loopback)、seed-node.sql.tmpl。
- README.md:架构图 + 部署/验证步骤 + 客户端接线(API URL / PANGOLIN_SINGBOX_BIN
/ sudoers / 真节点 uuid,客户端代码无改动)+ 排查指引。
本机验证:shellcheck + bash -n 通过;openssl CA ↔ mtls.NewCA + gRPC 证书链互通
已单测实测通过。VPS 端到端(出口 IP == VPS IP)待真机到位后执行。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
1.2 KiB
Cheetah
29 lines
1.2 KiB
Cheetah
-- Single-node seed: 1 provider + 1 status='up' node, so GET /v1/nodes returns
|
|
-- this box and the client can connect to it. Placeholders (__VAR__) are filled
|
|
-- by deploy.sh from the generated REALITY keypair + the VPS public IP.
|
|
--
|
|
-- Idempotent: fixed uuid, delete-then-insert so re-running deploy.sh refreshes
|
|
-- the row without duplicating it. The REALITY keys MUST stay stable across
|
|
-- re-deploys (deploy.sh persists them in /etc/pangolin/reality.env) or already
|
|
-- issued client configs would break.
|
|
|
|
DELETE FROM nodes WHERE uuid = '__NODE_UUID__';
|
|
DELETE FROM providers WHERE name = 'single-node';
|
|
|
|
INSERT INTO providers (name, api_kind, regions, pool, enabled)
|
|
VALUES ('single-node', 'manual', '["__REGION__"]', 'consumable', TRUE);
|
|
|
|
INSERT INTO nodes
|
|
(uuid, region, name_zh, name_en, role, tier, endpoint, hy2_port,
|
|
reality_pbk, reality_prk, reality_short_id, reality_sni, provider_id, status, weight)
|
|
VALUES (
|
|
'__NODE_UUID__',
|
|
'__REGION__', '__NAME_ZH__', '__NAME_EN__',
|
|
'exit', 'free',
|
|
'__ENDPOINT__', __HY2_PORT__,
|
|
'__REALITY_PBK__', '__REALITY_PRK__', '__REALITY_SHORT_ID__',
|
|
'__REALITY_SNI__',
|
|
(SELECT id FROM providers WHERE name = 'single-node' LIMIT 1),
|
|
'up', 100
|
|
);
|