Files
nas/CLAUDE.md
T
wangjia 71a7eef7e6 更新 TODO 和代理配置说明
- 移除已完成的 TODO(git.nas.local DNS、Cloudflare Tunnel)
- XTLS-Vision 标注为客户端和服务端均已移除
- 新增 Forgejo app.ini 待统一 TODO

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

164 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- [ ] wangjia 用户加入 docker 组,方便 SSH 管理容器
- [ ] dnsmasq 启用(全局 DHCP 分发,让其他设备也自动走透明代理)
- [ ] Forgejo app.ini 的 DOMAIN/SSH_DOMAIN/ROOT_URL 改为 `git.51yanmei.com`(需 rootdocker-compose 环境变量已覆盖,改 app.ini 仅为保持一致)