Files

5.4 KiB
Executable File
Raw Permalink Blame History

仓库概述

本目录 (/vol4/1000/docker) 是基于 Docker Compose 的自托管基础设施生态系统。每个服务都在各自的子目录中运行,拥有独立的 docker-compose.yml 文件,并通过全局 .env 文件共享通用配置。

核心架构原则:

  • 模块化服务:每个服务隔离在独立目录中,按功能分类组织
  • 集中配置:根目录 .env 包含所有共享变量 - 绝不在独立的 compose 文件中硬编码这些值
  • 共享网络:所有服务使用外部 Docker 网络 trim-default 进行服务间通信
  • 统一重启策略:所有服务使用 restart: unless-stopped

常用操作命令

启动/更新服务

cd <service_directory>
docker compose up -d

查看日志

cd <service_directory>
docker compose logs -f <service_name>

停止服务

cd <service_directory>
docker compose down

更新所有服务

# 拉取最新镜像并重新创建容器
for dir in */; do
  cd "$dir"
  docker compose pull
  docker compose up -d
  cd ..
done

全局配置文件 (.env)

根目录 .env 是唯一的真实配置源。在 compose 文件中通过 ${VARIABLE_NAME} 引用变量。

关键变量:

  • TZ=Asia/Shanghai - 所有容器的时区
  • PUID=1000, PGID=1000 - Linux 用户映射,用于文件权限控制
  • NETWORK_NAME=trim-default - 外部 Docker 网络名称
  • HTTP_PROXY/HTTPS_PROXY - 代理配置 192.168.68.1:7890(主路由 OpenClash)
  • ADMIN_USER/ADMIN_PASSWORD - 通用管理员凭据
  • 数据库凭据:MYSQL_ROOT_PASSWORD、MYSQL_PASSWORD、POSTGRES_PASSWORD、REDIS_PASSWORD

存储路径:

  • BACKUP_DIR=/vol4/1000/docker/backups
  • MEDIA_ROOT=/vol3/1000/Media(含子目录 Cache、Pt、Porn、Music)

服务分类与说明

📚 媒体服务

media-cloud (媒体云服务)

端口范围: 17080-17089

  • openlist: 文件列表服务,端口 17081
  • aria2: 网盘直链下载器,端口 17085
  • openlist-strm: 115/网盘 STRM 生成与快照差分同步服务,端口 17088 (注:pansou、quark-auto-save 已迁移至 Oracle ARM 云端运行)

media-pt (PT 下载服务)

端口范围: 17030-17033

  • qbittorrent: BT 下载器,端口 17030 (Web)/17031 (BT)
  • transmission: BT 下载器,端口 17032 (Web)/17033 (BT)

media-servers (媒体管理服务)

端口范围: 17021-17026

  • moviepilot: 媒体管理,端口 17021,连接 qbittorrent 和 transmission
  • bonita: 媒体工具,端口 17026 (注:danmu-api 已迁移至 Oracle ARM 云端;music-tag-web 已被飞牛音乐取代下线)

media-player (媒体播放服务)

端口范围: 17060-17061

  • emby: 媒体服务器,端口 17060,支持硬件加速
  • jellyfin: 媒体服务器,端口 17061,支持硬件加速

🛠️ 开发服务

development (开发工具)

  • gitea: Git 服务器,端口 17100 (Web)/17101 (SSH),使用 PostgreSQL 数据库 (注:sjzl 已废弃下线移除)

📖 其他服务

calibre-web

  • 镜像:johngong/calibre-web
  • 端口:17090 (Web)/17091 (数据库)
  • 用途:电子书库管理器,挂载 library 和 config

lucky

  • 镜像:待补充
  • 用途:工具服务,使用 network_mode: host,无需端口映射

代理配置管理

  • 用途:Oracle 双出口 Hysteria2 代理客户端配置集(支持 OpenWrt OpenClash、FlClash、sing-box PC & Android 1.14+)
  • 维护路径:/vol4/1000/download/tool/代理/(统一在此处维护,供各终端直接下载配置文件与 APK)

端口规划总结

所有服务端口已按以下规范重新规划(所有端口均避开数字 4):

  • 1702x → media-servers (媒体管理)
  • 1703x → media-pt (PT 下载)
  • 1706x → media-player (媒体播放)
  • 1708x → media-cloud (媒体云)
  • 1709x → calibre-web (电子书)
  • 1710x → development (开发工具)

Docker 网络

所有服务使用外部网络 trim-default。启动服务前此网络必须存在:

docker network create trim-default

服务间通信使用容器名作为主机名(例如,moviepilot 连接到 qbittorrent 和 transmission)。

环境文件使用模式

大多数服务通过软链接引用根目录 .env:

cd <service_directory>
ln -s ../.env .env

这实现了集中式凭据管理。添加新服务时,遵循此模式而非复制环境变量。

统一配置规范

重启策略

  • 默认:restart: unless-stopped

网络配置

所有服务必须包含:

networks:
  - trim-default

networks:
  trim-default:
    external: true

env_file 配置

所有服务使用:

env_file:
  - .env

开发指南

  1. 永不提交敏感凭据 - .env 文件包含真实密码,应设置安全权限(chmod 600)
  2. 使用变量替换 - 始终在 compose 文件中引用 ${VARIABLE_NAME}
  3. 保持目录隔离 - 将服务特定配置保存在各自的子目录中
  4. 遵循现有模式 - 添加新服务时参考类似服务
  5. 测试网络连通性 - 在依赖服务前确保服务可通过容器名互相访问
  6. 统一配置规范 - 所有服务使用 restart: unless-stopped 和 trim-default 网络
  7. 虚拟机数据管理 - 修改共享配置前务必备份数据,确保数据安全