88 lines
1.8 KiB
Markdown
88 lines
1.8 KiB
Markdown
# 内网穿透调试
|
||
|
||
## 目标
|
||
|
||
先用调试模式验证 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 提交到仓库。
|