6979411c1d
dev 本机置备(新增 dev/):
- docker-compose.yml: MySQL :13306 + Redis :16379(避让本机已占的 3306/6379)
- run-local.sh 一键: 起容器→openssl 生成密钥(dev/.local gitignore)→migrate→
seed→启动 server :18080(避让 8080);LogMailer 把验证码打日志
- seed.sql(1 provider + 1 HK 节点)、run-local.md 手册、.gitignore
后端两处修复(本地无 gRPC 场景,注释意图与代码不符的 bug):
- main.go: 无 gRPC 时真正构造 Hub-only nodeSvc(原只建 hub 没赋值),/v1/nodes 才能挂
- main.go: /me 改 Route 子路由根 Get,修 Get("/me")+Route("/me") 冲突致 404
客户端接真后端:
- token_store: MacOsOptions(useDataProtectionKeyChain:false) 修 keychain -34018
- auth_screen: 删 dev 旁路(test 账户内存登录),所有登录走真 API
验收: 后端 curl 端到端全通(验证码→注册→登录→/nodes→/me);
server go build/vet/test 通过, client analyze 0 + test 84
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
本地开发:一键起后端
让后端在本机真跑起来(auth 注册/登录 + 节点列表),供 mac app 接真后端调试。
前置
- Docker(起 MySQL + Redis)
- Go(
/opt/homebrew/bin在 PATH,脚本已内置) - openssl(生成 JWT 密钥)
一键启动
cd <项目根> # pangolin/
bash dev/run-local.sh
脚本做的事:
docker compose起pangolin-dev-mysql(:13306)+pangolin-dev-redis(:16379,避让本机已占用的 3306/6379),等 MySQL 就绪- 首次生成密钥到
dev/.local/(gitignore):RS256 JWT 私钥/公钥、webhook_secret、derive_key - 组装 env(
DB_DSN/WEBHOOK_SECRET/NODE_DERIVE_KEY/JWT_*),不配 SMTP → 验证码打日志 go run ./cmd/migrate up(建表 + plans seed),dev/seed.sql插一个 HK 测试节点- 前台启动
go run ./cmd/server(:18080)—— 注册验证码会打印在终端日志
停止:Ctrl+C(停 server);docker compose -f dev/docker-compose.yml down 停容器(加 -v 清库)。
端到端验证(curl)
# 1) 发验证码(看 server 终端日志读 6 位码)
curl -XPOST localhost:18080/v1/auth/code -H 'Content-Type: application/json' \
-d '{"email":"me@x.com"}'
# 2) 注册(填上一步日志里的码)
curl -XPOST localhost:18080/v1/auth/register -H 'Content-Type: application/json' \
-d '{"email":"me@x.com","code":"<码>","password":"pass1234"}'
# → {"access_token":"...","refresh_token":"..."}
# 3) 拉节点列表(带 access token)
curl localhost:18080/v1/nodes -H 'Authorization: Bearer <access>'
# → 含 HK 测试节点
# 4) 当前用户
curl localhost:18080/v1/me -H 'Authorization: Bearer <access>'
mac app 接它
cd client
# 客户端默认连 :8080;本机 8080 被占用,dev 后端在 18080,故显式指定:
flutter run -d macos --dart-define=PANGOLIN_API_URL=http://localhost:18080
注册页输真邮箱 → 发验证码(后端日志读码)→ 填码+密码 → 进主界面 → 节点页显示真节点(HK·测试)。
说明
- 密钥纯本地玩具:
dev/.local/不进 git;换机重跑脚本会重新生成。 - 节点 endpoint 占位(
127.0.0.1:11443):档 2 只验证列表 + connect 配置渲染,不真连。真连接出网见档 3。 - 不连 EC2 生产 MySQL(本地隔离,避免污染线上)。