新增 Tailscale 公网访问方案并落地

- 调研对比 Tailscale / Cloudflare Tunnel / frp / QuickConnect,
  自用+大文件+隐藏IP 场景下选定 Tailscale(避开 CF 免费版 100MB 上限)
- NAS 已上线 tailnet(ds925 / 100.95.151.13),Gitea 与 Synology Photos
  公网访问已验证(含 >100MB 视频上传)
- 修复关键坑:mihomo fake-ip 劫持 Tailscale 控制面域名导致 tailscale up
  卡住,在 fake-ip-filter 加入 +.tailscale.com 等并提供修复脚本
- 文档:docs/public-access.md(部署/踩坑/验证)
- 可选件:docker/derp(自建 DERP 中继)
- 同步更新 CLAUDE.md(修正 git 公网地址、新增公网访问小节、端口、TODO)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-05 21:17:46 +08:00
parent d6692b8776
commit 3fc6b402cd
5 changed files with 212 additions and 2 deletions
+24 -2
View File
@@ -51,9 +51,10 @@ NAS 上实际路径:`/volume1/docker/<服务名>/`,与仓库 `docker/` 目
### ForgejoGit 服务)
- **外网地址**`http://git.51yanmei.com/`
- **`git.51yanmei.com` 当前仅局域网可达**:DNS 记录指向 `192.168.3.200`(内网私有 IP、未走 CF 代理),公网打不开
- **局域网直连**`http://192.168.3.200:3000/`
- **SSH Clone**`ssh://git@git.51yanmei.com:2222/`
- **公网访问**:经 Tailscale`http://100.95.151.13:3000`(或 `https://ds925.tail6e8719.ts.net`),见 `docs/public-access.md`
- **SSH Clone(局域网)**`ssh://git@192.168.3.200:2222/`
- **配置方式**:优先通过 docker-compose.yml 的环境变量(`GITEA__section__key`)管理,避免直接改 app.ini
- **app.ini 路径**`/volume1/docker/forgejo/data/gitea/conf/app.ini`(属于 uid=1000wangjia 只读,需 root 修改)
- **数据库**SQLite`/volume1/docker/forgejo/data/gitea/gitea.db`
@@ -126,6 +127,7 @@ ssh nas "ls -lh /volume1/docker/backups/jiu-db/"
| 6690 | Synology Drive |
| 7890 | mihomo 混合代理(HTTP/SOCKS5 |
| 9090 | mihomo 管理 API |
| 41641/udp | Tailscale WireGuard |
| 445 / 139 | SMB 文件共享 |
## Synology 反向代理
@@ -151,8 +153,28 @@ ssh nas "ip route show table 2022 | head -5"
ssh nas "ip addr show Meta"
```
## 公网访问(Tailscale,已上线)
NAS 通过 **TailscaleWireGuard 网格 VPN** 对外提供 Gitea 与 Synology Photos 访问:
零公网暴露、无文件大小限制、不泄露家庭公网 IP。部署与踩坑详见 `docs/public-access.md`
Cloudflare Tunnel 因免费版 100MB 上限不适合 Photos 大文件,故选 Tailscale。)
- **节点**`ds925`Tailscale IP `100.95.151.13`MagicDNS `ds925.tail6e8719.ts.net`
- **身份**Google SSO`wang880812@gmail.com`);Google 仅登录/进后台时需要,日常用不需要
- **CLI 路径**`/var/packages/Tailscale/target/bin/tailscale`(已设 `--operator=wangjia`,免 sudo
- **关键依赖**mihomo 的 `fake-ip-filter` 必须含 `+.tailscale.com` 等(见 mihomo 配置注释),
否则 fake-ip 劫持会导致 `tailscale up` 卡住。修复脚本:`scripts/fix-mihomo-tailscale.sh`
```bash
ssh nas "/var/packages/Tailscale/target/bin/tailscale status" # 查看节点与对端连接
```
## TODO
- [x] NAS 安装 Tailscale 套件并登录,Gitea/Photos 公网访问已验证(含 >100MB 上传)
- [ ] 后台对 `ds925` 关闭 key expiry(否则 ~180 天掉线需重新过 Google 登录)
- [ ] (可选)`tailscale serve` 给 Gitea 套 HTTPS(解决 Arc 等强制 HTTPS 浏览器超时)
- [ ] (可选)新加坡 EC2 自建 DERP 中继 / 把 Tailscale UDP 排除出 mihomo,从香港中继提速到 P2P 直连(`docker/derp/`
- [ ] wangjia 用户加入 docker 组,方便 SSH 管理容器
- [ ] dnsmasq 启用(全局 DHCP 分发,让其他设备也自动走透明代理)
- [ ] Forgejo app.ini 的 DOMAIN/SSH_DOMAIN/ROOT_URL 改为 `git.51yanmei.com`(需 rootdocker-compose 环境变量已覆盖,改 app.ini 仅为保持一致)