所有 docker 项目均采用 docker compose 的方式部署
1、emby(影音服务器)
version: "2.3"
services:
emby:
image: lovechen/embyserver:latest
container_name: embyserver-cp
network_mode: bridge
environment:
- UID=1026
- GID=100
- GIDLIST=100,0
volumes:
- /volume1/docker/emby:/config
- /volume1/1/raws-Music:/data
- /volume4/4:/data1
- /volume3/3:/data2
- /volume2/2:/data3
ports:
- 8095:8096
devices:
- /dev/dri:/dev/dri
restart: unless-stopped
推荐关闭硬件转码功能,使用开心版只是因为可以显示歌词。数据库这里推荐将数据库缓存大小(MB)改为 512,分析行限制改为 4000。
另外,如果你启用了实时监控,但是没生效,不扫描新文件,网上很多人给的方法是定时重启 emby、去计划任务设置 Scan media library 狠狠地扫,这些都是错的,其实是元数据信息太多,然后群晖有限制上限导致的,具体可以参见——
解决方式:群晖控制面板-计划任务-添加一个 root 任务,取名随便,比如 fix for RTM,执行如下脚本即可——
sysctl fs.inotify.max_user_watches=1048576;
sysctl fs.inotify.max_user_instances=4096;
2、qbittorrent(BT 下载器)
使用下载器之前,推荐提前建立一个 macvlan 的网络接口,ssh 登录群晖——
sudo -i
#获取root权限
ip addr
#查看网络接口名称,通常不是eth0就是ovs_eth0
sudo ip link set ovs_eth0 promisc on
#开启混杂模式
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 --ipv6 --subnet=fd0d:7eb5:2afd::/64 --gateway=fd0d:7eb5:2afd::1 -o parent=ovs_eth0 macnet
#双栈版本,192.168.2.0改为你的ipv4网段,192.168.2.1改为你的ipv4网关,后面ipv6随便设置一个f开头的内网地址,可以照抄,macnet可以随便取名,后面建立容器需要用到
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=ovs_eth0 macnet
#仅ipv4版本,如果添加错了,可以去群晖container manager网络里面直接删除,如果删除不了,取消已经链接的容器就可以执行删除了
这里推荐 qbittorrent 的 4.3.9 版本,给两个案例仅供参考——
version: "2.1"
services:
qbittorrent:
image: linuxserver/qbittorrent:14.3.9
container_name: qbittorrent-pt
restart: unless-stopped
networks:
macnet:
ipv4_address: 192.168.2.4
volumes:
- /volume1/docker/qbittorrent-pt:/config
- /volume3/3/PT:/downloads
environment:
- WEBUI_PORT=8080
- TZ=Asia/Shanghai
- PUID=1026
- PGID=100
ports:
- 8080:8080
- 52004:52004
- 52004:52004/udp
networks:
macnet:
external: true
version: "2.1"
services:
qbittorrent:
image: johngong/qbittorrent:4.3.9
container_name: qbittorrent-skyey2
restart: unless-stopped
networks:
macnet:
ipv4_address: 192.168.2.5
volumes:
- /volume1/docker/qbittorrent-skyey2:/config
- /volume1/1/downloads/pt:/Downloads
environment:
- WEBUIPORT=8989
- TZ=Asia/Shanghai
- PUID=1026
- PGID=100
- UMASK=022
- TRACKERSAUTO=NO
ports:
- 8989:8989
- 52003:52003
- 52003:52003/udp
networks:
macnet:
external: true
另外说下个人喜欢的配置——
选项-下载-默认 Torrent 管理模式改为自动,自己创建分类的时候请设置好下载地址,其他地方全不打钩;连接,全不勾选;
速度-设置速度限制,保持默认选 1、3;BitTorrent,如果是 BT 勾选隐私前三个,如果是 PT,隐私均不勾选,并关闭做种限制,均关掉 Torrent 排队和自动添加 tracker;
如果需要外网访问,在 Web UI-验证-启用 Host header 属性验证,取消勾选。
其他保持默认即可。另外,如果发现切换版本后种子信息不显示(没有文件、tracker 信息等),清除下浏览器 cookie 和缓存即可,并不是降级/升级版本失败。
3、AutoBangumi(自动追番神器)
因为群晖出于安全考虑,有默认限制 macvlan 网络的容器与宿主机之间的访问,所以如果把 AutoBangumi 建立在 host 或者 bridge 下面是没法访问 qbittorrent 的,但是 macvlan 网络的容器之间可以访问,而且路由器访问也是没问题,这里就不介绍如何用代码实现 macvlan 容器与群晖互通并添加计划任务了,直接将 AutoBangumi 也建立在 macvlan 下即可。
version: "3.8"
services:
AutoBangumi:
image: "estrellaxd/auto_bangumi:latest"
container_name: AutoBangumi
volumes:
- ./config:/app/config
- ./data:/app/data
ports:
- "7892:7892"
restart: unless-stopped
networks:
macnet:
ipv4_address: 192.168.2.3
environment:
- TZ=Asia/Shanghai
- AB_METHOD=Advance
- PGID=1026
- PUID=100
- UMASK=022
networks:
macnet:
external: true
AutoBangumi 经历多个版本,界面已经又换成了中文,配置非常简单,官方也有详细的说明文档,这里就简单说下我自己解析设置的排除内容:
720 \d+-\d BIG5 繁日双语 先行版 繁體 繁体 Bilibili 繁日内嵌 简体内嵌
4、zflie(简洁直观的在线文件目录程序)
version: "3"
services:
zfile:
image: stilleshan/zfile:latest
container_name: zfile-cp
ports:
- 8094:8080
volumes:
- /volume1/docker/zfile:/root/.zfile-v4:rw
- /volume1/1/Share:/root/zfile/data:rw
restart: always
network_mode: bridge
建议就把 zfile 作为本地共享的一种方式,配置比 alist 简单多了。
5、chatgpt-web(使用 api 的 ChatGPT 演示网页)
version: '3'
services:
app:
image: chenzhaoyu94/chatgpt-web:latest
network_mode: host
restart: always
ports:
- 3002:3002
environment:
# 二选一
OPENAI_API_KEY: sk-*******************************
# 二选一
# OPENAI_ACCESS_TOKEN:
# API接口地址,可选,设置 OPENAI_API_KEY 时可用
OPENAI_API_BASE_URL: https://api.chatanywhere.com.cn
# API模型,可选,设置 OPENAI_API_KEY 时可用
# OPENAI_API_MODEL:
# 反向代理,可选
# API_REVERSE_PROXY:
# 访问权限密钥,可选
AUTH_SECRET_KEY: *******************************
# 每小时最大请求次数,可选,默认无限
# MAX_REQUEST_PER_HOUR: 0
# 超时,单位毫秒,可选
TIMEOUT_MS: 60000
# Socks代理,可选,和 SOCKS_PROXY_PORT 一起时生效
# SOCKS_PROXY_HOST:
# Socks代理端口,可选,和 SOCKS_PROXY_HOST 一起时生效
# SOCKS_PROXY_PORT:
推荐去这里领取免费 api,https://github.com/chatanywhere/GPT_API_free,上面我自己用不到的部分都用#注释了,有需要可以自己去#添加。
6、speedtest(测速软件,测试你当前的设备和群晖之间的网速)
version: "3"
services:
web:
image: adolfintel/speedtest:latest
container_name: speedtest
hostname: speedtest
restart: unless-stopped
network_mode: bridge
ports:
- 8844:80
7、qdtoday(自动签到,支持大部分论坛和部分应用)
version: "3"
services:
qiandao:
image: qdtoday/qd:latest
container_name: qiandao
network_mode: bridge
volumes:
- /volume1/docker/qiandao:/usr/src/app/config
ports:
- 8923:80
restart: unless-stopped
配置很复杂,不过主要难点还是在于获取 cookies,电脑上就用 Chrome 之类的按 F12 获取,手机上推荐 Alook 和 VNET,另外推荐一个仓库:https://github.com/wjf0214/qd-templates,分支写 master。
8、qinglong(自动京东打工签到,还支持阿里云盘)
version: '2'
services:
web:
container_name: qinglong
image: whyour/qinglong:latest
network_mode: bridge
volumes:
- /volume1/docker/qinglong:/ql/data
ports:
- "0.0.0.0:5700:5700"
restart: unless-stopped
推荐 KingRan 库,https://github.com/KingRan/KR.git
阿里云盘每日签到,https://github.com/mrabit/aliyundriveDailyCheck.git
以及二次元虫洞的签到脚本
https://github.com/CelestialRipple/2cycd_Autosignin/blob/main/autosignin.py
直接去脚本管理新建一个文件,取名 2cycd.py,记得一定要加.py,复制上面的代码进去,然后去定时任务那里新建一个任务,命令/脚本填写 task 2cycd.py,定时规则比如每天 8 点,0 8 * * *,这样就可以了。
另外京东的环境变量可以只写 JD_WSCK,需要手机 app 抓取(推荐),也可以在网页抓 JD_COOKIE,失效很快就是。前者格式为 pin=123;wskey=123;(注意最后的;),后者格式为 pt_key=123;pt_pin=123;(注意最后的;)。
9、flaresolverr(签到 PT 站等脚本的依赖,作用是跳过 cloudflare 的验证)
version: "3"
services:
web:
image: 15cm/flaresolverr:3.0.0
container_name: flaresolverr
hostname: flaresolverr
restart: unless-stopped
network_mode: bridge
ports:
- 8191:8191
environment:
- TZ="Asia/Shanghai"
- LOG_LEVEL=info
10、reader(非常有名的 Legado 的 docker 版阅读器)
version: '3.1'
services:
reader:
container_name: reader
image: hectorqin/reader:latest
restart: always
network_mode: bridge
ports:
- 4395:8080
volumes:
- /volume1/docker/reader/logs:/logs
- /volume1/docker/reader/storage:/storage
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_SECURE=true #开启登录鉴权,开启后将支持多用户模式
- READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0
- READER_APP_SECUREKEY=123456 #管理员密码 可自行修改
- READER_APP_INVITECODE=123456 #注册邀请码,如需要取消注释 可自行修改
个人感觉比 calibre 好用,推荐作为本地书籍的在线阅读管理器,当然也可以添加网络源。
11、ms-ra-forwarder(一个本地的在线文本转语音 API,支持微软语音)
version: '3'
services:
ms-ra-forwarder:
container_name: ms-ra-forwarder
image: wxxxcxx/ms-ra-forwarder:latest
restart: unless-stopped
network_mode: bridge
ports:
- 3000:3000
environment:
# 不需要可以不用设置环境变量
- TOKEN=123456
搭配上面的 reader 使用。
12、Alist(多网盘文件列表程序)
version: '3.3'
services:
alist:
image: 'xhofe/alist:latest'
container_name: alist
volumes:
- '/volume1/docker/alist:/opt/alist/data'
- '/volume1/1/downloads/the story:/1'
- '/volume2/2/after story:/2'
- '/volume3/3/temp:/3'
- '/volume4/4/before story:/4'
ports:
- '5244:5244'
environment:
- PUID=1026
- PGID=100
- UMASK=022
restart: unless-stopped
network_mode: host
群晖的 Alist 和 aria2、qb 的联动,导入种子后的下载权限总是有问题,提示下载错误。再加上离线下载这个功能并不太实用,试了很多权限添加方式后,都不行,果断放弃了,欢迎有爱的大佬告诉我解决方法呀~
13、NASTools(NAS 媒体库管理工具)
version: "3"
services:
nas-tools:
image: hsuyelin/nas-tools:latest
ports:
- 3003:3000
volumes:
- /volume1/docker/nas-tools:/config
- /volume3/3:/3
environment:
- PUID=1026
- PGID=100
- UMASK=022
- NASTOOL_AUTO_UPDATE=false
- NASTOOL_CN_UPDATE=false
restart: always
network_mode: bridge
hostname: nas-tools
container_name: nas-tools
本人用 nastools 主要是用于创建硬链接,PT 刷流什么的,还是喜欢手动。
14、CloudDrive2(云盘本地挂载的一站式的多云盘解决方案)
sudo -i
#获取root权限
mkdir -p /etc/systemd/system/docker.service.d/
cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
#开启MountFlags
mount --make-shared /volume1
#开启share类型挂载,这里需要预先在群晖控制面板-共享文件夹里新建一个共享文件夹,这里以建立在volume1硬盘下自定义名称为CloudNAS的共享文件夹为例进行演示,如果你建立在其他volume,请自行更改命令行里的数字
#后续每次启动docker前都需要运行mount……volume1这一行命令,建议在群辉控制面板-计划任务,新增触发的任务,并设置开机启动即可
事先准备完成后,下面是 compose——
version: "3.8"
services:
cloudnas:
image: cloudnas/clouddrive2:latest
container_name: clouddrive2
network_mode: bridge
environment:
- TZ=Asia/Shanghai
- CLOUDDRIVE_HOME=/Config
volumes:
- /volume1/CloudNAS:/CloudNAS:shared
- /volume1/docker/clouddrive2:/Config
- /volume1/1:/1
- /volume2/2:/2
- /volume3/3:/3
- /volume4/4:/4
ports:
- 29798:19798
devices:
- /dev/fuse:/dev/fuse
restart: unless-stopped
privileged: true
可以建立多个,比如我还建立了一个如下——
version: "3.8"
services:
cloudnas:
image: cloudnas/clouddrive2:latest
container_name: clouddrive
network_mode: bridge
environment:
- TZ=Asia/Shanghai
- CLOUDDRIVE_HOME=/Config
volumes:
- /volume1/CloudNAS:/CloudNAS:shared
- /volume1/docker/clouddrive:/Config
- /volume1/1:/1
- /volume2/2:/2
- /volume3/3:/3
- /volume4/4:/4
ports:
- 19798:19798
devices:
- /dev/fuse:/dev/fuse
restart: unless-stopped
privileged: true
注意:想要映射给容器里的本地文件夹目录,挂载时后面不需要加“:share”,容器创建完成后需要登录 clouddrive2 进行挂载网盘操作,具体可以参考https://www.huluohu.com/posts/332/的第四步——
1、选择需要挂载的网盘,然后点击上面的“电脑”图标
2、在弹出的界面中选择挂载点,选择/CloudNAS
3、选完以后,点击挂载,就 OK 啦(可自定义挂载文件夹名称)
如果嫌麻烦,也可以使用矿神源的套件版来安装 clouddrive2,套件地址——
https://spk7.imnks.com/
开机启动脚本更换为——
sudo sed -i 's/package/root/g' /var/packages/CloudDrive2/conf/privilege
不过套件每次安装后都会在群辉系统里残留很多垃圾,比如系统内部用户、一些缓存设置文件之类的,如果有强迫症,可以参考这篇文章进行删除https://www.takochan.moe/archives/91,需要 root 执行权限,请务必小心操作!
15、miniflux(开源轻量级 RSS 阅读器)
version: "3"
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- FETCH_YOUTUBE_WATCH_TIME=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=adminadmin
- BASE_URL=http://127.0.0.1:8480
- POLLING_FREQUENCY=20
- POLLING_PARSING_ERROR_LIMIT=0
- BATCH_SIZE=100
- POLLING_SCHEDULER=entry_frequency
- SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL=45
- MEDIA_PROXY_PRIVATE_KEY=password
- DATABASE_MAX_CONNS=50
- DATABASE_MIN_CONNS=5
- WORKER_POOL_SIZE=10
restart: always
ports:
- "8480:8080"
db:
image: postgres:latest
container_name: miniflux-postgres
restart: always
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=miniflux
volumes:
- /volume1/docker/miniflux:/var/lib/postgresql/data
注意提前创建/volume1/docker/miniflux 目录来装 postgres 的数据库,开启文件夹 everyone 读写权限并保证为空白目录(目录下没有任何文件、文件夹)。admin/adminadmin 的用户名和密码登录后均可修改,SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL 变量最高就是 30min 刷新一次,我这里设置成 45 也没有效果,如果不需要如此频繁的刷新,建议手动禁止(如一些个人博客之类的)。
还有就是项目会自行创建一个 miniflux_default 的 bridge 网络,这个保持这样就好,不然会报错(miniflux 无法找到数据库,会一直去 dns 服务器:53 的地址找)。原因大概如下——
User-defined bridges provide automatic DNS resolution between containers. Containers on the default bridge network can only access each other by IP addresses, unless you use the —link option, which is considered legacy. On a user-defined bridge network, containers can resolve each other by name or alias.
翻译过来大意:就是用户自定义的网卡可以在容器之间提供自动的 DNS 解析,缺省的桥接网络上的容器只能通过 IP 地址互相访问,除非使用 —link 参数。在用户自定义的网卡上,容器直接可以通过名称或者别名相互解析。
如果需要自建 rsshub 服务,可以参考如下配置——
version: "3"
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
depends_on:
- db
- rsshub
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- FETCH_YOUTUBE_WATCH_TIME=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=adminadmin
- BASE_URL=http://127.0.0.1:8480
- POLLING_FREQUENCY=60
- POLLING_PARSING_ERROR_LIMIT=0
- BATCH_SIZE=100
- POLLING_SCHEDULER=entry_frequency
- SCHEDULER_ENTRY_FREQUENCY_MAX_INTERVAL=30
- MEDIA_PROXY_PRIVATE_KEY=password
- DATABASE_MAX_CONNS=50
- DATABASE_MIN_CONNS=5
- WORKER_POOL_SIZE=10
restart: always
ports:
- "8480:8080"
db:
image: postgres:latest
container_name: miniflux-postgres
restart: always
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=miniflux
volumes:
- /volume1/docker/miniflux:/var/lib/postgresql/data
rsshub:
image: diygod/rsshub:latest
container_name: miniflux-rsshub
restart: always
ports:
- "1200:1200"
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000'
depends_on:
- redis
- browserless
browserless:
image: browserless/chrome:latest
container_name: miniflux-browserless
restart: always
ulimits:
core:
hard: 0
soft: 0
redis:
image: redis:alpine
container_name: miniflux-redis
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:
我个人是觉得官方的 rsshub.app 已经足够好用了,没必要浪费服务器资源自己搭建,当然有需要用到个人 cookies 的除外。创建好后在订阅地址填写 http://rsshub:1200/或者 http://内网服务器 ip 地址
/就行,若要映射到公网请自行研究。再提一嘴,大部分个人博客网站,包括 wordpress 在内的默认 rss 订阅地址都是网址/feed,比如本站就是RSS,阿里嘎多喵。
另外如果没有软路由还可以用 DDNS-GO 来进行 ddns。
以后发现了其他有意思好玩实用的 docker 项目再推荐给大家~祝大家新年快乐,天天开心。

喜欢的话,留下你的评论吧~