Files
nas/CLAUDE.md
T
wangjia b83264bd94 初始化 NAS 运维仓库,更新架构文档
新增 mihomo 透明代理完整配置说明、Forgejo 域名更新为 git.51yanmei.com、端口清单补全、dnsmasq 预备状态说明。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 23:29:17 +08:00

5.4 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

NAS 运维管理

这个目录是 NASSynology DS925+)的运维配置管理仓库,存放 docker-compose 配置、脚本和文档。

连接

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 Clonessh://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-runnerCI/CD runnerforgejo-act-runner),挂载 /var/run/docker.sock 可运行 Docker 任务
# 查看 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/15fake-ip-persist: true
  • 混合代理端口:7890(HTTP/SOCKS5,局域网可用)
  • 管理 APIhttp://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"

# 查看活跃连接
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 天。

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

常用运维

# 磁盘使用
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 分发,让其他设备也自动走透明代理)