瑞士小鸡(1)——构造一个流水线看片服务#
如果手上有一台NAS,或者一台闲置的服务器,可以用来部署一套自动追番、追剧的服务。因为没钱买nas以及公网问题,一台服务器(最好是海外的)会更方便。
准备工作#
目录结构如下,可以提前创建好分类目录,其他的目录启动后自然会被docker映射创建:
./my-chick/
├── Caddyfile
├── docker-compose.yml
└── data/
├── torrents/
│ ├── tv/
│ └── movie/
└── media/
├── anime/
├── movie/
└── tv/
使用的docker-compose.yml如下:
services:
ani-rss:
image: wushuo894/ani-rss:latest
container_name: ani-rss
# 自定义 DNS
dns: 8.8.8.8
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
- UMASK=022
- PORT=7789
- CONFIG=/config
volumes:
- ./ani-rss/config:/config
- ./data/media/anime:/data/media/anime
restart: always
network_mode: host
qBittorrent:
image: linuxserver/qbittorrent:latest
container_name: qBittorrent
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
- WEBUI_PORT=8080
volumes:
- ./qBittorrent/config:/config
- ./data/torrents:/data/torrents
- ./data/media/anime:/data/media/anime # ani rss是原地做种,不是硬链接,需要映射目录
restart: always
network_mode: host
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
network_mode: host
volumes:
- ./jellyfin/config:/config
- ./jellyfin/cache:/cache
- ./data/media:/data/media
restart: always
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'
jellyseerr:
image: ghcr.io/fallenbagel/jellyseerr:latest
init: true
container_name: jellyseerr
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
- LOG_LEVEL=info
- PORT=5055 #optional
network_mode: host
volumes:
- ./seerr/config:/app/config
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
restart: always
sonarr:
image: ghcr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: host
volumes:
- ./data:/data
- ./xarr/sonarr_config:/config
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
restart: always
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: host
volumes:
- ./data:/data
- ./xarr/radarr_config:/config
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
restart: always
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: host
volumes:
- ./xarr/prowlarr_config:/config
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
restart: always
FlareSolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
network_mode: host
restart: always
environment:
- PUID=0
- PGID=0
- TZ=America/Los_Angeles
docker compose up -d启动后,下面进行各个组件的配置。
下载器#
这里用qBittorrent举例,新的qBittorrent初次启动会有一个随机密码,我们先查看docker日志获取密码,进行登录后在web ui修改密码,方便其他组件访问。设置默认下载目录为/data/torrents。
流媒体#
这里用jellyfin举例。
访问web地址,配置初步设置。
- 插件
- 存储库添加以下三个
- 官方:https://sgp1.mirror.jellyfin.org/files/plugin/manifest.json
- bangumi:https://jellyfin-plugin-bangumi.pages.dev/repository.json
- 字幕(用处不大):https://github.com/91270/MeiamSubtitles.Release/raw/main/Plugin/manifest-stable.json
- 重启或者等一会,搜索并安装插件,然后重启
- anidb
- open subtitles
- shooter 和 thunder,这俩是射手字幕和迅雷影音
- 存储库添加以下三个
- 媒体库
- 节目/tv
- 追番:
/data/media/anime, 元数据下载器把anidb置顶 - 追剧:
/data/media/tv, 元数据下载器不用动
- 追番:
- 电影/movie
- 追片:
/data/media/movie, 元数据下载器不用动
- 追片:
- 节目/tv
追番#
我们使用ani-rss来方便地进行番剧的订阅、自动下载和管理。
登录ani-rss的web ui,配置一下。
- 下载设置的工具配置好qBittorrent的地址和密码,测试一下
- 保存位置
- 番剧:
/data/media/anime/${themoviedbName}/Season ${seasonFormat},这样方便后续根据tmdb元信息自动刮削 - 剧场版:
/data/media/movie/${themoviedbName}
- 番剧:
- 基本设置
- 添加订阅:打开TMDB标题和自动刮削
- 重命名设置:模板用
${themoviedbName} S${seasonFormat}E${episodeFormat},只打开自动重命名 (下载剧场版的时候单独配置一下重命名模板,上面的模板必须要有集数没办法) - bangumi:根据指引设置一下app授权自动获取
- 其他:设置tmdb api key,需要注册
追剧/追片#
我们使用*arr家族来进行索引、tv和电影的订阅管理,用jellyseerr来搜索美剧和电影
sonarr/radarr#
这俩需要配置的东西基本一致,以中文web ui的设置页面为例
- 通用
- 设置认证为表单,设置用户名和密码后保存刷新,重新输入密码登陆
- 记下API key,后面prowlarr需要用到
- 下载客户端
- 添加一个qBittorrent,填写地址和密码,测试连接。分类里面填写一个
类别(默认有一个tv-sonarr/radarr可以不用改)并记下来,保存。 - 远程路径映射,配置qBittorrent的下载路径,因为所有容器都映射了
/data或其子目录,所以本地路径和远程路径都填写/data/torrents/tv(sonarr)或者/data/torrents/movie(radarr),保存。 - 回到qBittorrent的web ui,查看左边栏的分类,找到刚才的类别,右键编辑类别,把路径改为上一步填写的路径并保存。这样是为了确保下载的种子以及文件在torrents目录下,不会被媒体库识别改名前的文件。
- 添加一个qBittorrent,填写地址和密码,测试连接。分类里面填写一个
- 媒体管理
- 重命名
- sonarr的用
{Series Title} S{season:00}E{episode:00} - radarr的用
{Movie Title} ({Release Year}) - 高级选项打开
使用硬链接代替复制
- sonarr的用
- 根目录指的是你要存放的具体小目录,被媒体库自动刮削。这样可以使得下载的做种文件与媒体库扫描分开识别,同时共用一份硬盘空间。
- 例如sonarr:
/data/media/tv - radarr:
/data/media/movie
- 例如sonarr:
- 重命名
prowlarr#
- 设置
- 通用:认证为表单,设置用户名和密码后保存刷新,重新输入密码登陆
- 索引器:添加搜刮器代理,选flaresolverr,填写地址测试,用来绕过配置了cloudflare的索引器网站
- 应用程序:添加sonarr和radarr,填写地址和API key,测试连接
- 索引器
- 添加一大堆索引器即可,只要测试通过的都可以添加,不用考虑语言限制(一般中文和英文的就ok)
- 有些索引器添加页面提示了需要flaresolverr代理的,添加页面最下面的
标签设置刚才添加flaresolverr时设置的标签,再测试通过即可 - 点一下同步索引器,会推到sonarr和radarr
jellyseerr#
类似ani-rss,用于搜索、订阅电影和电视剧。
打开web ui,根据引导配置好jellyfin、sonarr、radarr的地址和api key即可。后面两个的先测试才能选画质,一般用any就好了。
设置完成之后在主页的设置页面/jellyfin 点一下同步库,把jellyfin配置的媒体库同步过来都打开
通过域名访问#
dns解析#
用cloudflare添加子域名的dns解析到小鸡上即可,海外服务器拉github,docker快,也不用备案。价格没差多少
反向代理#
使用caddy配置,给出一个样例文件(没有配置暴露所有的服务,因为有些不需要公网访问,直接连上服务器访问就好)
{
storage file_system {
root /etc/ssl/caddy
}
}
ani.example.org {
reverse_proxy localhost:7789
}
jelly.example.org {
reverse_proxy localhost:8096
# 如果要开启https,查找cloudflare怎么配置一个账户api令牌,访问dns权限即可
tls {
# 同时需要caddy支持cloudflare插件
dns cloudflare <API KEY>
}
}
seerr.example.org {
reverse_proxy localhost:5055
tls {
dns cloudflare <API KEY>
}
}
