初始化 NAS 运维仓库,更新架构文档

新增 mihomo 透明代理完整配置说明、Forgejo 域名更新为 git.51yanmei.com、端口清单补全、dnsmasq 预备状态说明。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-05-30 23:29:17 +08:00
commit b83264bd94
+164
View File
@@ -0,0 +1,164 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
# NAS 运维管理
这个目录是 NASSynology DS925+)的运维配置管理仓库,存放 docker-compose 配置、脚本和文档。
## 连接
```bash
ssh nas # ~/.ssh/config 已配置,HostName 192.168.3.200User wangjia
```
## 硬件概况
| 项目 | 信息 |
|------|------|
| 型号 | Synology DS925+ |
| 系统 | DSM (Linux 5.10.55+, x86_64) |
| 存储 | /volume17TB 总量 |
| IP | 192.168.3.200(静态,手动配置) |
## 目录结构
```
/volume1/docker/
├── forgejo/
│ ├── docker-compose.yml # Forgejo + act-runner
│ ├── data/ # Forgejo 数据(SQLite DB、仓库、app.ini
│ └── runner/ # act-runner 配置
├── proxy/
│ ├── docker-compose.yml # mihomo 容器
│ ├── mihomo/config.yaml # 透明代理配置
│ └── dnsmasq/dnsmasq.conf # dnsmasq 配置(预备,暂未启用)
└── backups/
└── jiu-db/ # jiu 项目 DB 每日备份(.sql.gz
```
## Docker 服务
### 权限说明
`wangjia` 用户不在 docker 组,**无法直接运行 `docker` 命令**。容器管理需通过:
- DSM → Container Manager UI
- 或 root 权限(DSM 终端)
### ForgejoGit 服务)
- **外网地址**`http://git.51yanmei.com/`
- **局域网直连**`http://192.168.3.200:3000/`
- **SSH Clone**`ssh://git@git.51yanmei.com:2222/`
- **配置方式**:优先通过 docker-compose.yml 的环境变量(`GITEA__section__key`)管理,避免直接改 app.ini
- **app.ini 路径**`/volume1/docker/forgejo/data/gitea/conf/app.ini`(属于 uid=1000wangjia 只读)
- **数据库**SQLite`/volume1/docker/forgejo/data/gitea/gitea.db`
- **act-runner**CI/CD runner`forgejo-act-runner`),挂载 `/var/run/docker.sock` 可运行 Docker 任务
```bash
# 查看 Forgejo 日志
ssh nas "tail -f /volume1/docker/forgejo/data/gitea/log/gitea.log"
# 修改 Forgejo 配置(通过环境变量,改完需在 Container Manager 重启容器)
ssh nas "vi /volume1/docker/forgejo/docker-compose.yml"
# 如需直接改 app.ini,必须用 rootDSM 终端)
sudo sed -i 's/旧值/新值/' /volume1/docker/forgejo/data/gitea/conf/app.ini
```
### mihomo(透明代理)
局域网透明代理网关,运行在 NAS 上,Windows 设备(192.168.3.88)以 NAS 为默认网关。
**架构:**
```
Windows (192.168.3.88)
└─ 网关 = 192.168.3.200DNS = 192.168.3.200
NAS mihomo (TUN 模式, Meta 接口)
├─ 国内流量 → DIRECTGEOSITE/GEOIP CN 匹配)
└─ 国外流量 → ec2-sg(新加坡 AWSVLESS + Reality
```
**关键配置:**
- 配置文件:`/volume1/docker/proxy/mihomo/config.yaml`
- DNS:端口 53fake-ip 模式,范围 198.18.0.0/15`fake-ip-persist: true`
- 混合代理端口:7890HTTP/SOCKS5,局域网可用)
- 管理 API`http://192.168.3.200:9090`
- 代理节点:VLESS + Reality**不使用** `flow: xtls-rprx-vision`,已验证与服务端不兼容)
```bash
# 热重载配置(不重启容器)
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"
# 查看活跃连接
ssh nas "curl -s http://127.0.0.1:9090/connections"
```
**dnsmasq(预备,未启用):**
配置文件已就绪(`/volume1/docker/proxy/dnsmasq/dnsmasq.conf`),待未来启用 DHCP 自动分发时使用。启用前需将 mihomo DNS 端口从 53 改为 1053,并将 dnsmasq 加入 docker-compose.yml。
### jiu-db 自动备份
每天 02:00UTC+8)自动备份 jiu 项目 PostgreSQL,存至 `/volume1/docker/backups/jiu-db/`,格式 `jiu_db_YYYYMMDD_HHmmss.sql.gz`,保留约 16 天。
```bash
ssh nas "ls -lh /volume1/docker/backups/jiu-db/"
```
## 端口清单
| 端口 | 服务 |
|------|------|
| 22 | SSH |
| 53 | mihomo DNSfake-ip |
| 80 / 443 | Synology nginx(反代 + DSM 重定向) |
| 2222 | Forgejo SSH |
| 3000 | Forgejo HTTP |
| 5000 / 5001 | DSM Web UIHTTP / HTTPS |
| 5432 | PostgreSQLlocalhost only |
| 6690 | Synology Drive |
| 7890 | mihomo 混合代理(HTTP/SOCKS5 |
| 9090 | mihomo 管理 API |
| 445 / 139 | SMB 文件共享 |
## Synology 反向代理
通过 DSM 内置 nginx 管理:**Control Panel → Login Portal → Advanced → 反向代理服务器**
当前规则:
| 来源 | 目的地 |
|------|--------|
| `http://git.nas.local:80` | `http://localhost:3000` |
## 常用运维
```bash
# 磁盘使用
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"
```
## TODO
- [ ] 路由器配置 `git.nas.local` DNS 解析(当前用 hosts 临时解决)
- [ ] wangjia 用户加入 docker 组,方便 SSH 管理容器
- [ ] Cloudflare Tunnel 外网访问(需提供 CF 托管域名)
- [ ] dnsmasq 启用(全局 DHCP 分发,让其他设备也自动走透明代理)