本文最后更新于 2024年8月22日 晚上
最近放假回家,准备秋招之余有一些闲功夫,又正好在帮家里更新一些软硬件设备,就把自己目前搭建 Emby 的技术栈做一些简单的记录和配置罗列。
1 - Emby 的 Docker 配置
我的所有自建基本能放在 docker-compose
中的就尽量用 docker compose 管理,emby 也不例外。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 version: "3" services: emby: image: emby/embyserver:latest container_name: embyserver restart: always user: root volumes: - ./config:/config - /theater/movie:/mnt/share1 - /theater/tv:/mnt/share2 ports: - 8096 :8096 - 8920 :8920
其中需要备份的目录就是 ./config
目录,而 /theater/movie
和 /theater/tv
用于挂载自己的影视盘,这里我选用的是 rclone 挂载 Google Drive / One Drive,具体配置和方案会在下面说明。
光是 Emby 本身的搭建不是很吃 CPU 和内存,不过建议至少 2C2G 的 VPS 起步吧,我自己搭建的这个占用情况(运行了半年没重启和停机后的状态):
1 2 # docker stats --no-stream | grep emby 384f61138e22 embyserver 0.03% 1.412GiB / 9.716GiB 14.53% 4.31GB / 498GB 2.74GB / 5.23GB 82
也就是大概需要 1.4G 左右的 MEM,仅供参考。
关于 Emby 服务器启动后的配置
这里不对具体的每一项配置做多的说明,只说个比较重要的:由于 VPS 没有 GPU 并且 CPU 一般很拉胯, 记得把服务端解码全关了。
2 - Rclone 挂载 Google Drive
要说国外挂载 Emby 最合适的网盘,目前比较合适的方案就是用 Google Drive 或者 One Drive,其他网盘的读写实测都受到了不同程度的限制,并且稳定性肯定也不如大厂(当然,也有可能还有很多更好更实惠的方案我没有探索出来)。
One Drive 可以上闲鱼购买合租的 Office365 套餐,大概 20 左右 1 年,有 1T 的空间,感觉也是挺划算的。
Google Drive 可以直接开土区的套餐,2T 大概在 100 RMB 左右(不过目前好像土区受到限制了,不知道未来是否会受影响)。
Google Drive 的 Plan
目前我用的 Plan 是土耳其 2TB 的套餐,目前资费是 500 土耳其里拉,换算成人民币也就是大概 100 块左右每年的样子。
Rclone 的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 version: "3" services: rclone: image: mumiehub/rclone-mount container_name: rclone user: root network_mode: host restart: always cap_add: - SYS_ADMIN devices: - /dev/fuse security_opt: - apparmor:unconfined volumes: - /root/.config/rclone:/root/.config/rclone - /theater:/mnt/mediaefs:shared environment: - RemotePath=gdtry:/ - ConfigDir=/root/.config/rclone - ConfigName=rclone.conf - MountCommands=--use-mmap --umask 000 --default-permissions --no-check-certificate --allow-other --allow-non-empty --vfs-cache-mode full --buffer-size 256M --vfs-read-ahead 512M --vfs-read-chunk-size 32M --vfs-read-chunk-size-limit off --vfs-cache-max-size 30G --low-level-retries 200
rclone 的配置我也是用的 docker-compose,主要是为了方便日志管理和自动重启。
然后直接将宿主机的 rclone config 也就是 ~/.config/rclone
挂载到容器内部,这样就不需要容器内部再重新登录了。
这里的 Environment
部分添加了一些乱七八糟的 MountCommands
参数,也是网上搜索了一波后配的,自我感觉比较重要的是 --vfs-cache-mode full --vfs-cache-max-size 30G
,可以根据 VPS 的硬盘大小尽量扩大这个值,文件缓存到本地了自然就快了~。
3 - 反代服务器的配置
我的 emby 服务器本身是找了个大流量高性能的 US VPS (5C10G),然后实际上一般这种性能的美西服务器都不会配备一个好的线路,这时候就需要进行一波反代。
反代的线路如何选择就各种各样了,我本身是为了方便家里观看,实际上如果是自己看的话完全可以用代理连接,就不用再套一层反代了。
反代的配置我也写的很简单,就是单纯用 caddy 代理一层 https,实测也有不错的效果。
1 2 3 4 5 https://<反代域名> { tls {$EMAIL} encode gzip zstd reverse_proxy <emby-ip>:8096 }
4 - PT 下载和上传
这部分就是涉及到如何从网上找资源,以及上传到 Google Drive。
这一部分内容只是我自己的极为简单的配置,仅仅为了满足我自己追剧的需要,不涉及刷 PT 这一系列的骚操作。
qbittorrent 配置
简单说一下我的 qbittorrent 的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 version: "3" services: qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent network_mode: host environment: - PUID=0 - PGID=0 - TZ=Etc/UTC - WEBUI_PORT=8080 volumes: - ./config:/config - ./downloads:/downloads - /resources:/resources restart: unless-stopped
上传到 Google Drive 的 Shell Script
我用写了个简单的 script 用于在 qbit 下载结束后快速将资源上传到 Google Drive 对应的目录,这里也记录一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 uptv () { local source_path="$1" local destination="<google drive 目录>" local filename=$(basename "$source_path") echo "upload tv: $filename" if [ -d "$source_path" ] then destination_path="$destination/$filename" else destination_path="$destination/" fi echo "source: $source_path --> destination: $destination_path" rclone copy "$source_path" "$destination_path" -Pv }
QB 自动删除脚本
一般在上传到 Google Drive 后,不能马上删除种子和文件。
需要在满足 PT 站的保种规则一段时间后,就可以删除种子了,我使用的是 autoremove-torrents 来做到自动清除,由于这个工具本身对于 qbittorrent 4.5.4+ 具有一些兼容性问题,我 fork 了一个并且把我的配置也记录在了其中:https://github.com/Lincest/autoremove-torrents/tree/master
安装 :
1 cd && git clone https://github.com/lincest/autoremove-torrents.git && cd autoremove-torrents && python3 setup.py install
配置文件 :
PS: 这个配置文件的主要是用来适配北洋园的规则,可以根据自己的需求自助修改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 my_task: client: qbittorrent host: http://127.0.0.1:8080 username: password: strategies: my_strategy: remove: ' (size < 10 and seeding_time > 86400) or (size > 10 and size < 20 and seeding_time > 172800) or (size > 20 and size < 30 and seeding_time > 259200) or (size > 30 and size < 40 and seeding_time > 345600) or (size > 40 and size < 50 and seeding_time > 432000) or seeding_time > 604800 or ratio > 10 ' delete_data: true
cronjob 配置 :
1 */15 * * * * /usr/local/bin/autoremove-torrents --conf= <配置目录>/autoremove-config.yml --log=/root/logs
5 - Emby 的客户端
整体可以参考 Misakaf 的 Wiki 来下载各个平台的安卓客户端,个人体验下来比较好用的:
MacOS / IOS: infuse 和 vidhub
Windows: 小秘的客户端, TG Channel
Android: 小秘的客户端和 Yamby