From 32b4808535d5d11c794f5954340defa5cc67330d Mon Sep 17 00:00:00 2001 From: "SilverAg.L" Date: Sun, 19 Apr 2026 14:09:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20pigallery2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aria2/docker-compose.yml | 10 ++++-- jellyfin/docker-compose.yml | 2 +- pigallery2/docker-compose.yml | 27 +++++++++++++++ readme.md | 62 ++++++++++++++++++++++++----------- 4 files changed, 79 insertions(+), 22 deletions(-) create mode 100644 pigallery2/docker-compose.yml diff --git a/aria2/docker-compose.yml b/aria2/docker-compose.yml index 9ff5122..01500d0 100644 --- a/aria2/docker-compose.yml +++ b/aria2/docker-compose.yml @@ -14,10 +14,16 @@ services: - ${DOWNLOAD_PATH}:/downloads restart: 'unless-stopped' environment: - - PUID=${PUID} - - PGID=${PGID} + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} - UMASK_SET=022 + - RPC_SECRET=${ARIA2_RPC_SECRET:-P3TERX} + - RPC_PORT=${ARIA2_RPC_PORT:-6800} + - LISTEN_PORT=${ARIA2_BT_PORT:-6888} + - DISK_CACHE=64M + - IPV6_MODE=false - UPDATE_TRACKERS=true + #- CUSTOM_TRACKER_URL= - TZ=Asia/Shanghai network_mode: host diff --git a/jellyfin/docker-compose.yml b/jellyfin/docker-compose.yml index 289f594..77470a1 100644 --- a/jellyfin/docker-compose.yml +++ b/jellyfin/docker-compose.yml @@ -7,7 +7,7 @@ services: network_mode: "host" volumes: - jellyfin-config:/config - - jellyfin-cache:/cache + - jellyfin-cache:/cache # maybe split transcodes into tmpfs - ${MEDIA_PATH:-/media}:/media:ro,nosuid,nodev # recursive 'rx' # - /dev/dri/renderD128:/dev/dri/renderD128 - type: bind diff --git a/pigallery2/docker-compose.yml b/pigallery2/docker-compose.yml new file mode 100644 index 0000000..62aa711 --- /dev/null +++ b/pigallery2/docker-compose.yml @@ -0,0 +1,27 @@ +services: + pigallery2: + image: bpatrik/pigallery2:latest + container_name: pigallery2 + deploy: + resources: + limits: + memory: 2G # <1GB RAM might also work. It will trigger GC more often. GC is slow. See https://github.com/bpatrik/pigallery2/issues/1080 + environment: + - NODE_ENV=production # set to 'debug' for full debug logging + # - NODE_OPTIONS=--enable-source-maps # enable source map support on the backend for development + volumes: + - "pig-cfg:/app/data/config" # CHANGE ME + - "db-data:/app/data/db" + - "${IMG_DIR:-}:/app/data/images:ro" # CHANGE ME, ':ro' means read-only + # - "/var/tmp/pigallery2:/app/data/tmp" # CHANGE ME + - type: tmpfs + target: /app/data/tmp + tmpfs: + size: 512M + mode: 1777 + ports: + - ${PIG_PORT:-80}:80 + restart: always + +volumes: + db-data: diff --git a/readme.md b/readme.md index f67a890..e7c808b 100644 --- a/readme.md +++ b/readme.md @@ -8,26 +8,50 @@ > > 当然直接编辑 compose 配置也无何不可,万一不满意别的配置呢? -| 服务 | 是否容器化 | 环境变量(=默认值) | 备注 | +| 服务 | 是否容器化 | 环境变量 | 默认值 | |------|------------|----------|------| -| cockpit dashboard | ❌ | - | (太长了,附表格后) | -| mihomo | ✅ | PWD | Compose 会继承终端当前目录 $PWD,无需手写 | -| jellyfin | ✅ | MEDIA_PATH=/media | (太长了,附表格后) | -| aria2 | ✅ | PUID, PGID, CONF_PATH, DOWNLOAD_PATH, ARIANG_PORT=6880 | (太长了,附表格后) | -| filebrowser | ✅ | FB_PORT=8080, PUID, PGID, SRV_PATH | 和上面 DOWNLOAD_PATH 一个逻辑,自行指定共享根目录 | -| navidrome | ✅ | MUSIC_PATH, PUID, PGID | `ND_`开头的环境变量配置可参见[在线文档](https://www.navidrome.org/docs/usage/configuration/options/#environment-variables);我最终选择把音乐库暴露给公网,因此配置单也加了很多限制措施,仅供参考 | +| cockpit dashboard | ❌ | - | - | +| nginx | ❌ | - | - | +| mihomo | ✅ | PWD | 当前终端的 $PWD | +| jellyfin | ✅ | MEDIA_PATH | /media | +| aria2 | ✅ | PUID, PGID | 1000 | +| | | ARIA2_RPC_SECRET | P3TERX | +| | | ARIA2_RPC_PORT | 6800 | +| | | ARIA2_BT_PORT | 6888 | +| | | ARIANG_PORT | 6880 | +| | | CONF_PATH, DOWNLOAD_PATH | +| filebrowser | ✅ | FB_PORT | 8080 | +| | | PUID, PGID, SRV_PATH | +| navidrome | ✅ | MUSIC_PATH, PUID, PGID | +| pigallery2 | ✅ | PIG_PORT | 80 | +| | | IMG_DIR | -- cockpit - - 新版 Ubuntu 的 sudo 命令行不完全,暂时需回退为`sudo.ws` - - 需要用`nmcli`另建一空网口以便正常检查软件包更新 - - chrony 需要换用国内 NTP 服务器 +## 备注 -- jellyfin - 1. 独显/按摩店核显可能仍需要刷入驱动 - 2. 阴特耳核显现在应该不用再进容器检查渲染节点的用户组了 - 3. 由于 ii. 所限,本容器**不允许非 root 运行** +### cockpit +- 新版 Ubuntu 的 sudo 命令行不完全,暂时需回退为`sudo.ws` +- 需要用`nmcli`另建一空网口以便正常检查软件包更新 +- chrony 需要换用国内 NTP 服务器 -- aria2 - - 容器会自动下载 [P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf) 配置到 CONF_PATH。 - - DOWNLOAD_PATH 是什么样,下载的位置就是什么样,这个就没有什么前后缀。 - - 防火墙务必提前放行 aria2 监听端口(至少放`6888/tcp,udp`) +### jellyfin +1. 部署流程参见[这篇知乎专栏](https://zhuanlan.zhihu.com/p/624670198)。 + - nyanmisaka 版(即本仓库用的镜像)可以省略“在容器里安装英特耳显卡驱动”的步骤。 + - 我曾遇到过容器缺失 render 组导致 QSV 硬解调用 renderD128 时出现问题。 + 在 GitHub 相关问题帖中,有人只挂载`/dev/dri/renderD128`并反馈可用。于是我也干了。 + - 你在管理面板里能选的硬解格式很大程度上取决于 vainfo 命令的输出,并非像很多教程里说的“尽量都选上”。 + 无论如何,进容器里检查一下总归不碍事。 + +2. 如需使用硬件加速功能,切记**不许非 root 运行**! + +### aria2 +- 容器会自动下载 [P3TERX/aria2.conf](https://github.com/P3TERX/aria2.conf) 配置到 CONF_PATH。 +- DOWNLOAD_PATH 是什么样,下载的位置就是什么样。 +- 防火墙务必提前放行 aria2 监听端口(至少放`$ARIA2_BT_PORT/tcp,udp`) +- P3TERX 默认禁用 IPv6。经多方测试,咱家也的确没有 IPv6。在现有条件(无 IPv6 无公网)下最优解就是保留现状。 + +### filebrowser +事实上我更推荐 FileStash。只是 Office 组件调教起来比较麻烦。我没得出比较便捷的方案,就先用这个备选了。 + +### navidrome +- `ND_`开头的环境变量配置可参见[在线文档](https://www.navidrome.org/docs/usage/configuration/options/#environment-variables)。 +- 我最终选择把音乐库暴露给公网,因此配置单也加了很多限制措施,仅供参考。