# 内网穿透调试 ## 目标 先用调试模式验证 PWA 可以通过公网域名访问。 模式: - VPS 运行 `frps`。 - 本机运行 Vite 开发服务。 - 本机运行 `frpc` 和 `cert` sidecar。 - `cert` 使用 Let's Encrypt 正式证书。 - `frpc` 通过 HTTPS 转发到本机 `6064`。 ## 前置条件 - 有一个域名,例如 `cents.example.com`。 - 域名 A/AAAA 记录指向 VPS。 - VPS 开放 `80`、`443` 和 `7000`。 - VPS 的 `frps` 配置了 HTTP/HTTPS vhost 端口。 参考配置: - `deploy/frp/frps.example.toml` ## 本机配置 调试模式不读取 `.env`,配置直接写在 `compose.dev.yaml`: - `DOMAIN=dev.cents.homemade.net.cn` - `FRPC_SERVER_HOST=119.28.12.24` - `FRPC_SERVER_PORT=7000` - `APP_HOST=host.docker.internal` - `APP_PORT=6064` - `APP_PROTOCOL=http` - `TEST_MODE=false` ## 启动 启动 API 和前端: ```bash npm run dev ``` 再启动内网穿透: ```bash docker compose -f compose.dev.yaml up -d ``` 查看日志: ```bash docker compose -f compose.dev.yaml logs -f frpc cert ``` ## 验证 ```bash curl -I http://$DOMAIN/.well-known/ curl -vkI https://$DOMAIN ``` 预期: - `cert` 能完成 HTTP-01 校验。 - `/etc/letsencrypt/live/dev.cents.homemade.net.cn/` 中生成正式证书。 - 浏览器可以通过 `https://$DOMAIN` 访问本地 PWA。 ## 生产模式 `.env` 留给生产模式使用: ```bash cp .env.example .env docker compose -f compose.pro.yaml up -d --build ``` 不要提交真实 `.env`。 ## 常见问题 - 证书申请失败:检查域名 DNS、VPS 80 端口、frps vhost HTTP 配置。 - HTTPS 访问失败:检查 frps 443 端口和 frpc 日志。 - 后端连不上:确认 `npm run dev` 已启动 API 和监听 `6064` 的 Vite 服务。 - frps 有 token:需要同步配置 frps 和 frpc,不要把真实 token 提交到仓库。