添加 Docker 服务配置文件
新增 forgejo、mihomo 透明代理的 docker-compose 和配置文件, 敏感凭证(runner token、VLESS UUID)通过 .env 管理不入库。 同步更新 CLAUDE.md 目录结构说明,新增 README.md。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
||||
# Docker 运行时数据
|
||||
*.db
|
||||
*.metadb
|
||||
*.dat
|
||||
*.tar
|
||||
|
||||
# 敏感凭证
|
||||
docker/**/.env
|
||||
|
||||
# 系统文件
|
||||
.DS_Store
|
||||
@@ -21,22 +21,26 @@ ssh nas # ~/.ssh/config 已配置,HostName 192.168.3.200,User wangj
|
||||
| 存储 | /volume1,7TB 总量 |
|
||||
| IP | 192.168.3.200(静态,手动配置) |
|
||||
|
||||
## 目录结构
|
||||
## 仓库目录结构
|
||||
|
||||
```
|
||||
/volume1/docker/
|
||||
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-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 服务
|
||||
|
||||
### 权限说明
|
||||
@@ -51,24 +55,18 @@ ssh nas # ~/.ssh/config 已配置,HostName 192.168.3.200,User wangj
|
||||
- **局域网直连**:`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 只读)
|
||||
- **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 任务
|
||||
|
||||
```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)以 NAS 为默认网关。
|
||||
|
||||
**架构:**
|
||||
```
|
||||
@@ -101,13 +99,10 @@ ssh nas "curl -s --max-time 10 --proxy 'socks5h://127.0.0.1:7890' https://ifconf
|
||||
|
||||
# 查看实时日志
|
||||
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。
|
||||
配置文件已就绪(`docker/proxy/dnsmasq/dnsmasq.conf`),待未来启用 DHCP 自动分发时使用。启用前需将 mihomo DNS 端口从 53 改为 1053,并将 dnsmasq 加入 docker-compose.yml。
|
||||
|
||||
### jiu-db 自动备份
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# NAS 运维配置
|
||||
|
||||
Synology DS925+(192.168.3.200)的 Docker 服务配置管理。
|
||||
|
||||
## 服务
|
||||
|
||||
| 服务 | 说明 | 地址 |
|
||||
|------|------|------|
|
||||
| Forgejo | 自托管 Git 服务 + CI/CD runner | http://git.51yanmei.com |
|
||||
| mihomo | 透明代理网关(VLESS + Reality) | 局域网网关 192.168.3.200 |
|
||||
| dnsmasq | DHCP/DNS(预备,暂未启用) | — |
|
||||
|
||||
## 目录
|
||||
|
||||
```
|
||||
docker/
|
||||
├── forgejo/ # Forgejo + act-runner
|
||||
└── proxy/ # mihomo 透明代理 + dnsmasq
|
||||
```
|
||||
|
||||
## 部署
|
||||
|
||||
### 前置条件
|
||||
|
||||
```bash
|
||||
cp docker/forgejo/.env.example docker/forgejo/.env
|
||||
# 填入 GITEA_RUNNER_REGISTRATION_TOKEN
|
||||
|
||||
cp docker/proxy/mihomo/.env.example docker/proxy/mihomo/.env
|
||||
# 填入 VLESS_UUID(然后手动更新 config.yaml 中的 <VLESS_UUID>)
|
||||
```
|
||||
|
||||
### 启动服务
|
||||
|
||||
```bash
|
||||
# Forgejo
|
||||
cd docker/forgejo && docker compose up -d
|
||||
|
||||
# 透明代理
|
||||
cd docker/proxy && docker compose up -d
|
||||
```
|
||||
|
||||
## 连接
|
||||
|
||||
```bash
|
||||
ssh nas # HostName 192.168.3.200,需配置 ~/.ssh/config
|
||||
```
|
||||
@@ -0,0 +1 @@
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=
|
||||
@@ -0,0 +1,35 @@
|
||||
services:
|
||||
forgejo:
|
||||
image: gitea/gitea:latest
|
||||
container_name: forgejo
|
||||
restart: always
|
||||
environment:
|
||||
USER_UID: 1000
|
||||
USER_GID: 1000
|
||||
GITEA__actions__ENABLED: "true"
|
||||
GITEA__actions__DEFAULT_ACTIONS_URL: https://gitea.com
|
||||
GITEA__server__ROOT_URL: http://git.51yanmei.com/
|
||||
GITEA__server__SSH_DOMAIN: git.51yanmei.com
|
||||
GITEA__server__SSH_PORT: 2222
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "2222:22"
|
||||
volumes:
|
||||
- /volume1/docker/forgejo/data:/data
|
||||
|
||||
act-runner:
|
||||
image: gitea/act_runner:latest
|
||||
container_name: forgejo-act-runner
|
||||
restart: always
|
||||
network_mode: host
|
||||
depends_on:
|
||||
- forgejo
|
||||
environment:
|
||||
CONFIG_FILE: /data/config.yaml
|
||||
GITEA_INSTANCE_URL: http://git.51yanmei.com/
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN}
|
||||
GITEA_RUNNER_NAME: nas-runner
|
||||
volumes:
|
||||
- /volume1/docker/forgejo/runner:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /volume1/docker/backups:/volume1/docker/backups
|
||||
@@ -0,0 +1,23 @@
|
||||
log:
|
||||
level: info
|
||||
|
||||
runner:
|
||||
file: .runner
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
labels:
|
||||
- ubuntu-latest:docker://catthehacker/ubuntu:act-latest
|
||||
|
||||
cache:
|
||||
enabled: true
|
||||
dir: /data/cache
|
||||
|
||||
container:
|
||||
network: bridge
|
||||
privileged: false
|
||||
options: >-
|
||||
-v /volume1/docker/backups:/volume1/docker/backups
|
||||
-v /volume1/docker/tools:/volume1/docker/tools
|
||||
valid_volumes:
|
||||
- /volume1/docker/backups
|
||||
- /volume1/docker/tools
|
||||
@@ -0,0 +1,12 @@
|
||||
# DHCP 服务
|
||||
dhcp-range=192.168.3.10,192.168.3.230,12h
|
||||
dhcp-option=3,192.168.3.200
|
||||
dhcp-option=6,192.168.3.200
|
||||
|
||||
# DNS 上游指向 Mihomo(端口 1053)
|
||||
server=127.0.0.1#1053
|
||||
|
||||
# 本地解析
|
||||
address=/nas.local/192.168.3.200
|
||||
|
||||
no-hosts
|
||||
@@ -0,0 +1,11 @@
|
||||
services:
|
||||
mihomo:
|
||||
image: metacubex/mihomo:latest
|
||||
container_name: mihomo
|
||||
restart: always
|
||||
network_mode: host
|
||||
privileged: true
|
||||
volumes:
|
||||
- /volume1/docker/proxy/mihomo:/root/.config/mihomo
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
@@ -0,0 +1 @@
|
||||
VLESS_UUID=
|
||||
@@ -0,0 +1,69 @@
|
||||
mixed-port: 7890
|
||||
allow-lan: true
|
||||
bind-address: '*'
|
||||
mode: rule
|
||||
log-level: info
|
||||
ipv6: false
|
||||
|
||||
external-controller: 0.0.0.0:9090
|
||||
|
||||
tun:
|
||||
enable: true
|
||||
stack: gvisor
|
||||
mtu: 1500
|
||||
auto-route: true
|
||||
auto-detect-interface: true
|
||||
route-exclude-address:
|
||||
- 18.136.60.128/32
|
||||
dns-hijack:
|
||||
- any:53
|
||||
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:53
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-persist: true
|
||||
fake-ip-range: 198.18.0.0/15
|
||||
fake-ip-filter:
|
||||
- '*.lan'
|
||||
- '*.local'
|
||||
- 'time.*.com'
|
||||
- 'ntp.*.com'
|
||||
- '+.pool.ntp.org'
|
||||
nameserver:
|
||||
- 114.114.114.114
|
||||
- 223.5.5.5
|
||||
fallback:
|
||||
- 8.8.8.8
|
||||
- 1.1.1.1
|
||||
fallback-filter:
|
||||
geoip: true
|
||||
geoip-code: CN
|
||||
|
||||
proxies:
|
||||
- name: "ec2-sg"
|
||||
type: vless
|
||||
server: 18.136.60.128
|
||||
port: 443
|
||||
uuid: <VLESS_UUID>
|
||||
network: tcp
|
||||
tls: true
|
||||
udp: true
|
||||
reality-opts:
|
||||
public-key: fHHr9qWw2JuqNxpv3XTcZTi5k73HWfjipa4vnXFu9W8
|
||||
short-id: 6eb28f1a766a
|
||||
servername: www.cloudflare.com
|
||||
client-fingerprint: chrome
|
||||
|
||||
proxy-groups:
|
||||
- name: "Proxy"
|
||||
type: select
|
||||
proxies:
|
||||
- ec2-sg
|
||||
- DIRECT
|
||||
|
||||
rules:
|
||||
- GEOIP,private,DIRECT
|
||||
- GEOSITE,cn,DIRECT
|
||||
- GEOIP,CN,DIRECT
|
||||
- MATCH,Proxy
|
||||
Reference in New Issue
Block a user