From b83264bd9418e0e6273b355f1de8a8d878f63903 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Sat, 30 May 2026 23:29:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=20NAS=20=E8=BF=90?= =?UTF-8?q?=E7=BB=B4=E4=BB=93=E5=BA=93=EF=BC=8C=E6=9B=B4=E6=96=B0=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 mihomo 透明代理完整配置说明、Forgejo 域名更新为 git.51yanmei.com、端口清单补全、dnsmasq 预备状态说明。 Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..33f81f3 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,164 @@ +# 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 配置、脚本和文档。 + +## 连接 + +```bash +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(静态,手动配置) | + +## 目录结构 + +``` +/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 终端) + +### Forgejo(Git 服务) + +- **外网地址**:`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=1000,wangjia 只读) +- **数据库**: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,必须用 root(DSM 终端) +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.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`,已验证与服务端不兼容) + +```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:00(UTC+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 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 | +| 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 分发,让其他设备也自动走透明代理)