diff --git a/README.md b/README.md index 7902906..2920de5 100644 --- a/README.md +++ b/README.md @@ -245,7 +245,7 @@ docker-compose down - Docker 前端同时暴露 `http://localhost:4002` 和自签名证书的 `https://localhost:4443`;麦克风听写建议使用 HTTPS 演示入口。 - `api` 服务运行 NestJS 后端,启动时默认执行 `prisma migrate deploy` 和 `prisma db seed`,并把上传文件目录挂载到 `uploads_data` volume。 - `db` 服务运行 PostgreSQL 16。 -- `frpc` 服务是可选公网隧道客户端。`# XXX` 默认通过 Compose profile 关闭,配置文件在 `frpc/frpc.toml`,需要映射到公网服务器时再启用。 +- `frpc` 服务是可选公网隧道客户端。`# XXX` 默认 Docker Compose 通过 profile 关闭,配置文件在 `frpc/frpc.toml`;NAS 版为了适配 Container Station 图形界面会默认创建 `tuwen_frpc`,读取 `frpc/frpc.nas.toml`。 - `nginx.conf` 已配置 SPA 路由回退、`/api` 反向代理和 `100m` 请求体上限。 - `nginx.conf` 已支持 `/api/speech/iat` WebSocket upgrade。 完整 Docker 说明见 [docs/docker.md](./docs/docker.md)。 @@ -260,7 +260,7 @@ docker-compose down - API 默认映射到 NAS 宿主机 `4102`,前端仍映射到 `4002`。 - 保留 `api` 网络别名,确保容器内 Nginx 可以继续把 `/api` 代理到后端。 - 使用 `127.0.0.1` 做 API 健康检查,规避部分 NAS 固件上的 IPv6 localhost 解析问题。 -- 内置可选 `frpc` profile,可复用 [frpc/frpc.toml](./frpc/frpc.toml) 把 `4002` 映射到公网服务器。 +- 默认创建 `tuwen_frpc` 容器,读取 [frpc/frpc.nas.toml](./frpc/frpc.nas.toml),把容器内 `tuwen_web:80` 映射到公网服务器;如果不需要公网映射,可删除或注释 `tuwen_frpc` 服务。 NAS 终端部署: @@ -289,12 +289,12 @@ HTTPS_PROXY=http://PROXY_IP:PROXY_PORT NO_PROXY=localhost,127.0.0.1,LAN_CIDR,tuwen_db,tuwen_api,tuwen_web,api,db,web ``` -启用 NAS 上的 frpc 隧道: +NAS 上的 frpc 隧道: ```bash -# XXX 先编辑 frpc/frpc.toml,替换 serverAddr 和 auth.token。 -docker compose -f docker-compose-Nas.yaml --profile frpc up -d --build -docker compose -f docker-compose-Nas.yaml logs -f frpc +# XXX 先编辑 frpc/frpc.nas.toml,替换 serverAddr 和 auth.token。 +docker compose -f docker-compose-Nas.yaml up -d --build +docker compose -f docker-compose-Nas.yaml logs -f tuwen_frpc ``` `# XXX` NAS 公网访问仍然只需要把 `4002` 通过 frpc 映射到公网服务器,再由 Nginx Proxy Manager 给 `your-domain.example` 提供 HTTPS。`4443` 仍只是本机自签名 HTTPS 演示入口,不建议映射到公网域名。 diff --git a/docker-compose-Nas.yaml b/docker-compose-Nas.yaml index 646e079..ac3362a 100644 --- a/docker-compose-Nas.yaml +++ b/docker-compose-Nas.yaml @@ -98,17 +98,15 @@ services: timeout: 5s retries: 6 - frpc: - # XXX 可选公网隧道客户端。启用前先编辑 frpc/frpc.toml。 + tuwen_frpc: + # XXX 威联通 Container Station 通常不会启用 Compose profiles,所以 NAS 版默认启动 frpc。 + # XXX 启用前先编辑 frpc/frpc.nas.toml;如果不需要公网映射,可删除/注释整个 tuwen_frpc 服务。 image: snowdreamtech/frpc:latest container_name: tuwen_frpc restart: unless-stopped - network_mode: host command: ["frpc", "-c", "/etc/frp/frpc.toml"] volumes: - - ./frpc/frpc.toml:/etc/frp/frpc.toml:ro + - ./frpc/frpc.nas.toml:/etc/frp/frpc.toml:ro depends_on: tuwen_web: condition: service_healthy - profiles: - - frpc diff --git a/docs/docker.md b/docs/docker.md index 352453c..1bb08dd 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -88,15 +88,15 @@ TRUST_PROXY=true CORS_ORIGIN=http://NAS_IP:4002,https://your-domain.example ``` -启用 NAS 上的 frpc 隧道: +NAS 上的 frpc 隧道: ```bash -# XXX 先编辑 frpc/frpc.toml,替换 serverAddr 和 auth.token。 -docker compose -f docker-compose-Nas.yaml --profile frpc up -d --build -docker compose -f docker-compose-Nas.yaml logs -f frpc +# XXX 先编辑 frpc/frpc.nas.toml,替换 serverAddr 和 auth.token。 +docker compose -f docker-compose-Nas.yaml up -d --build +docker compose -f docker-compose-Nas.yaml logs -f tuwen_frpc ``` -`# XXX` 公网正式入口只映射 `4002` 即可;不要把 `4443` 自签名 HTTPS 演示端口映射为公网域名入口。公网 HTTPS 应由 Nginx Proxy Manager 提供。 +`# XXX` NAS 版为了适配 Container Station 图形界面会默认创建 `tuwen_frpc`,不依赖 Compose profile;如果不需要公网映射,可删除或注释 `docker-compose-Nas.yaml` 中的 `tuwen_frpc` 服务。公网正式入口只映射 `4002` 即可;不要把 `4443` 自签名 HTTPS 演示端口映射为公网域名入口。公网 HTTPS 应由 Nginx Proxy Manager 提供。 ## 初始化开关 diff --git a/frpc/frpc.nas.toml b/frpc/frpc.nas.toml new file mode 100644 index 0000000..d74d154 --- /dev/null +++ b/frpc/frpc.nas.toml @@ -0,0 +1,23 @@ +# XXX QNAP/NAS frpc template. +# XXX Replace serverAddr and auth.token before deploying; do not commit real production tokens. +# XXX This file is mounted by docker-compose-Nas.yaml. frpc connects to tuwen_web:80 inside Docker. + +# 基础连接配置 +serverAddr = "XX.XX.XX.XX" +serverPort = 7000 + +# 权限验证 - 必须与服务端一致 +auth.method = "token" +auth.token = "XXX" + +# 传输配置优化 +transport.poolCount = 5 +transport.heartbeatTimeout = -1 + +# --- 映射 图文系统访问端口 (TCP) --- +[[proxies]] +name = "TuWen_System_V2" +type = "tcp" +localIP = "tuwen_web" +localPort = 80 +remotePort = 4002