CLAUDE.md 公网访问节与 docs/public-access.md 增加 QuickConnect 备选入口说明: ID、网页 DSM 链接、Photos 移动端用法、与 Tailscale 的取舍。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
NAS 运维管理
这个目录是 NAS(Synology DS925+)的运维配置管理仓库,存放 docker-compose 配置、脚本和文档。
连接
ssh nas # ~/.ssh/config 已配置,HostName 192.168.3.200,User wangjia
硬件概况
| 项目 | 信息 |
|---|---|
| 型号 | Synology DS925+ |
| 系统 | DSM (Linux 5.10.55+, x86_64) |
| 存储 | /volume1,7TB 总量 |
| IP | 192.168.3.200(静态,手动配置) |
仓库目录结构
docker/
├── forgejo/
│ ├── docker-compose.yml # Forgejo + act-runner(token 通过 .env 注入)
│ ├── .env.example # 复制为 .env 填入真实 token
│ └── runner/
│ └── config.yaml # act-runner 配置
└── proxy/
├── docker-compose.yml # mihomo 容器
├── mihomo/
│ ├── config.yaml # 透明代理规则(uuid 用 <VLESS_UUID> 占位)
│ └── .env.example # 复制为 .env 填入真实 UUID
└── dnsmasq/
└── dnsmasq.conf # 预备 DHCP 配置(暂未启用)
NAS 上实际路径:/volume1/docker/<服务名>/,与仓库 docker/ 目录一一对应。
Docker 服务
权限说明
wangjia 用户不在 docker 组,无法直接运行 docker 命令。容器管理需通过:
- DSM → Container Manager UI
- 或 root 权限(DSM 终端)
Forgejo(Git 服务)
git.51yanmei.com当前仅局域网可达:DNS 记录指向192.168.3.200(内网私有 IP、未走 CF 代理),公网打不开- 局域网直连:
http://192.168.3.200:3000/ - 公网访问:经 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=1000,wangjia 只读,需 root 修改) - 数据库:SQLite,
/volume1/docker/forgejo/data/gitea/gitea.db - act-runner:CI/CD runner(
forgejo-act-runner),挂载/var/run/docker.sock可运行 Docker 任务
# 查看 Forgejo 日志
ssh nas "tail -f /volume1/docker/forgejo/data/gitea/log/gitea.log"
mihomo(透明代理)
局域网透明代理网关,Windows 设备(192.168.3.88)以 NAS 为默认网关。
架构:
Windows (192.168.3.88)
└─ 网关 = 192.168.3.200,DNS = 192.168.3.200
NAS mihomo (TUN 模式, Meta 接口)
├─ 国内流量 → DIRECT(GEOSITE/GEOIP CN 匹配)
└─ 国外流量 → ec2-sg(新加坡 AWS,VLESS + Reality)
关键配置:
- 配置文件:
/volume1/docker/proxy/mihomo/config.yaml - DNS:端口 53,fake-ip 模式,范围 198.18.0.0/15,
fake-ip-persist: true - 混合代理端口:7890(HTTP/SOCKS5,局域网可用)
- 管理 API:
http://192.168.3.200:9090 - 代理节点:VLESS + Reality(不使用
flow: xtls-rprx-vision,客户端和服务端均已移除)
# 热重载配置(不重启容器)
ssh nas "curl -s -X PUT 'http://127.0.0.1:9090/configs?force=true' \
-H 'Content-Type: application/json' \
-d '{\"path\":\"/root/.config/mihomo/config.yaml\"}'"
# 测试代理节点
ssh nas "curl -s 'http://127.0.0.1:9090/proxies/ec2-sg/delay?timeout=5000&url=https://www.cloudflare.com/cdn-cgi/trace'"
# 测试出口 IP
ssh nas "curl -s --max-time 10 --proxy 'socks5h://127.0.0.1:7890' https://ifconfig.me"
# 查看实时日志
ssh nas "curl -s http://127.0.0.1:9090/logs -N --max-time 10"
dnsmasq(预备,未启用):
配置文件已就绪(docker/proxy/dnsmasq/dnsmasq.conf),待未来启用 DHCP 自动分发时使用。启用前需将 mihomo DNS 端口从 53 改为 1053,并将 dnsmasq 加入 docker-compose.yml。
jiu-db 自动备份
每天 02:00(UTC+8)自动备份 jiu 项目 PostgreSQL,存至 /volume1/docker/backups/jiu-db/,格式 jiu_db_YYYYMMDD_HHmmss.sql.gz,保留约 16 天。
ssh nas "ls -lh /volume1/docker/backups/jiu-db/"
端口清单
| 端口 | 服务 |
|---|---|
| 22 | SSH |
| 53 | mihomo DNS(fake-ip) |
| 80 / 443 | Synology nginx(反代 + DSM 重定向) |
| 2222 | Forgejo SSH |
| 3000 | Forgejo HTTP |
| 5000 / 5001 | DSM Web UI(HTTP / HTTPS) |
| 5432 | PostgreSQL(localhost only) |
| 6690 | Synology Drive |
| 7890 | mihomo 混合代理(HTTP/SOCKS5) |
| 9090 | mihomo 管理 API |
| 41641/udp | Tailscale WireGuard |
| 445 / 139 | SMB 文件共享 |
Synology 反向代理
通过 DSM 内置 nginx 管理:Control Panel → Login Portal → Advanced → 反向代理服务器
当前规则:
| 来源 | 目的地 |
|---|---|
http://git.nas.local:80 |
http://localhost:3000 |
常用运维
# 磁盘使用
ssh nas "df -h /volume1"
# 查看路由规则(透明代理策略路由)
ssh nas "ip rule list"
ssh nas "ip route show table 2022 | head -5"
# 查看网络接口(Meta = mihomo TUN)
ssh nas "ip addr show Meta"
公网访问(Tailscale,已上线)
NAS 通过 Tailscale(WireGuard 网格 VPN) 对外提供 Gitea 与 Synology Photos 访问:
零公网暴露、无文件大小限制、不泄露家庭公网 IP。部署与踩坑详见 docs/public-access.md。
(Cloudflare Tunnel 因免费版 100MB 上限不适合 Photos 大文件,故选 Tailscale。)
- 节点:
ds925,Tailscale IP100.95.151.13,MagicDNSds925.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
ssh nas "/var/packages/Tailscale/target/bin/tailscale status" # 查看节点与对端连接
QuickConnect(DSM 官方中转,已启用)
- QuickConnect ID:
wangjia812(查看/修改:DSM → 控制面板 → 外部访问 → QuickConnect) - 网页 DSM 入口:http://QuickConnect.cn/wangjia812(国内走 .cn 中转节点)
- Synology Photos / Drive 等移动端登录:服务器地址直接填
wangjia812 - 走 Synology 中转服务器,大文件传输速度一般;自用优先 Tailscale(
100.95.151.13), QuickConnect 主要留给家人或未装 Tailscale 的设备
TODO
- NAS 安装 Tailscale 套件并登录,Gitea/Photos 公网访问已验证(含 >100MB 上传)
- 后台对
ds925关闭 key expiry(已确认 KeyExpiry=None,不会再因密钥过期掉线) - (可选)
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(需 root,docker-compose 环境变量已覆盖,改 app.ini 仅为保持一致)