IDC计划

IDC计划
梅菜参考链接:IDC计划 | Wiki - Vertex 适用于 PT 玩家的管理工具
0.0 想法
选用Docker为底层环境,选用Alist为云盘综合管理。
选用WebDAV为通信传输,选用Emby媒体服务端。
已通过 CloudCone DediPath Oracle RackNerd 虚拟专用服务器测试。
若是能访问外面,网盘先获取一些资源。
阿里云盘发布频道-1阿里云盘发布频道-2夸克云盘盘夸克云盘发布频道
霸王龙影咖 网站 频道 双云盘发布
主机配置:
| 评价 | 核心 | 运存 | 硬盘 | 带宽 | 其它 |
|---|---|---|---|---|---|
| 尚可 | 1C | 1G | 20GB | 100Mbps | io 200MB/s |
| 较好 | 2C | 2G | 80GB | 500Mbps | io 500MB/s SSD Cached Storage |
| 极佳 | 4C | 4G+ | 200GB+ | 1000Mbps | io 800MB/s SSD/NVME |
项目清单:
| 项目名称 | 功能介绍 | 访问页面 | 官方发布 | 安装方案 | Docker启动开关 | 重启机制 | 备注 |
|---|---|---|---|---|---|---|---|
| Fastdocker | 简单的容器WEB页面管理 | IP地址:8081 | https://hub.docker.com/r/wangbinxingkong/fast | Docker安装,写入系统级文件夹 | –restart always | 保持重启自动启动 | |
| Speedtest-X | 简单的测速WEB页面 | IP地址:80 | https://hub.docker.com/r/stilleshan/speedtest-x | Docker安装,写入系统级文件夹 | –restart unless-stopped | 手动开关使用 | 重启前是什么运行状态,开机就保持什么状态。 |
| Alist | 将多款网盘挂载成为webdav传输 | IP地址:5244 | https://hub.docker.com/r/xhofe/alist | Docker安装,写入/root文件夹公开使用 | –restart always | 保持重启自动启动 | Webdav传输一直有效 |
| Rclone | 将多款网盘挂载成为虚拟目录 | / | https://rclone.org/install/#script-installation | linux源码安装,系统级文件夹 | / | 未设置开机命令自动挂载 | 重启就会丢失挂载信息,需要SSH再次输入挂载命令。 |
| Emby | 媒体服务器 | IP地址:8096 | https://hub.docker.com/r/emby/embyserver | Docker安装,写入/root文件夹公开使用 | –restart no 或者留空此开关不设置 | 未设置自动重启 | 开机后手动启动容器 |
| Jelly | 媒体服务器 | IP地址:8096 | https://hub.docker.com/r/jellyfin/jellyfin/ | Docker安装,写入/root文件夹公开使用 | –restart no 或者留空此开关不设置 | 未设置自动重启 | 开机后手动启动容器 |
| Plex | 媒体服务器 | IP地址:32400 | https://hub.docker.com/r/plexinc/pms-docker | Docker安装,写入/root文件夹公开使用 | –restart no 或者留空此开关不设置 | 未设置自动重启 | 开机后手动启动容器 |
| qbittorrent | Torrent文件下载器 | IP地址:8080 | https://hub.docker.com/r/linuxserver/qbittorrent | Docker安装,写入/root文件夹公开使用 | –restart always | 保持重启自动启动 | |
| homepage | 多功能导航页面 | IP地址:3000 | https://gethomepage.dev/en/installation/docker/ | Docker安装,写入/root文件夹公开使用 | –restart always | 保持重启自动启动 |
0.1 基础
推荐Debian11全新纯净系统;SSH登录主机,root用户。
1 | # 检查双栈网络10次 |
一键完成命令创建基础环境:
自动识别主机架构 x86_64 / AMD64 / ARM64,系统环境 Debian / Ubuntu。
&& 多命令连接执行,前一条执行成功再继续执行下一条命令。
-y 询问是否,自动确认 Y。
查找系统更新 &&安装系统更新 &&安装Curl工具 &&Docker官网稳定版脚本 && Docker 官方安装参考执行安装脚本sh &&修改时区 &&生成并赋权media公共媒体挂载目录 &&生成并赋权emby需要的三个目录 &&生成并赋权jelly需要的两个目录 &&生成并赋权plex需要的三个目录 &&安装fastdocker面板 && fastdocker docker发布页安装speedtest测速 && speedtest-x docker发布页生成并赋权alist目录 &&安装alist && alist docker发布页安装sudo组件 &&安装fuse3组件 &&安装rclone rclone 官方安装参考
VPS演示主机参考:甲骨文-东京-ARM 2c 12g 50Gb 2Gbps 耗时90秒
Bridge 桥接网络
1 | apt update -y && |
Host 主机网络
1 | apt update -y && |
Speedtest-X面板 桥接网络IP地址:12345 主机网络IP地址:80 直接输入纯IP也行
代码跑完之后,自己先打开测速面板试试。
把地址也发给你的好友。电脑/手机都试试,网络环境好才能流畅玩耍。
不要开梯,就是要测试真实网络连接性。
测速完毕后可以关闭容器,减轻VPS负载。

重点注意
教程写到这里,突然声明一些关键词/知识点。
基础环境一键创建是很简单的,接下来的开始有难度了。
现在不理解没关系,当做预习。重点阶段还会有附图演示。
在云盘内建立文件夹尽量名称简单一点,层级少一点。
movie 电影 tvshow 剧集 music 音乐 animation 动画
在这些文件夹之下就是资源本身,或者是资源文件夹。
在VPS内处理信息会变得简单,各个项目之间处理资源变得简单,Emby建立媒体库变得简单。
各种名称建议采用字母数字简单命名,方便记忆和代码布置对应关系。
字母的大小写会产生效果,输错就会执行失败。
Alist配置阿里云盘举例命名三组 /aliyun * /mydisk * /ALYP4T 是访问目录也是文件夹的意思。
Alist配置夸克网盘举例命名三组 /kuakeyun * /kkdisk * /KKYP6T 是访问目录也是文件夹的意思。
Rclone配置WebDAV举例命名四组 /alist * /alist6d * /aliwd * /4DISK 是项目名称用来远程访问。
玩法提示:
用一个Rclone名称访问Alist全局内各种品牌网盘,
用三个Rclone名称配置三个Alist全局访问,
用五个Rclone名称将一个阿里云盘里面的五个文件夹挂载出来。
如果:有很多个VPS,很多个网盘,很多个Emby媒体服务器,很多个播放终端。
但Alist使用了token码/cookies登录云盘,最好只使用一个VPS安装,Alist添加网盘使用本地模式。
然后手机/电脑/电视播放终端使用IP:5244/dav进行远程WebDAV请求。从VPS转发数据过来。
这样阿里云会视为稳定账户,避免被判定为多地登录多处滥用账户。
Win系统PotPlayer 安卓系统nPlayer 苹果系统infuse等等其它软件,本身就支持WebDAV直接访问,添加地址/账密就已经完成远程播放需求了。
但是Emby/Plex没有直接访问WebDAV的功能。所以使用Rclone挂载命令,把WebDAV得到的资源信息虚拟成为文件夹,用来搭建媒体库。
Emby/Plex启动播放视频的请求,查找VPS内虚拟出来的文件夹资源,Rclone使用WebDAV传输向阿里云盘请求视频文件。
视频文件下载到VPS缓存文件夹,Emby/Plex媒体服务器进行数据处理,直推数据给你自己的客户端进行播放。
设计思路:
基础环境的Docker项目,自动跟随系统启动。
云盘Rclone存储挂载,Emby/Plex媒体服务器需要人工开启。
如果VPS遇到故障导致重启,或者人工强制重启VPS。
系统开机是低负载,各项目对云盘无读写操作。
便于维护主机,修复故障。
0.2 布置
Fastdocker面板 IP地址:8081
注册账户密码可能有bug,多试几次。
简单快速的处理容器,启动/停止/重启/删除/修改。
点击容器名字查看详细信息。
点击端口号访问容器页面。
镜像页面删除无效镜像。

Alist面板 IP地址:5244
初次登录需要使用 admin 默认密码
两种方法:
- Fastdocker面板 点击alist后面的日志按钮,日志栏查看密码。
Successfully created the admin user and the initial password is: ******** - SSH打印容器日志内的密码命令
1 | docker exec -it alist ./alist password |
进入页面后,下方的管理按钮进入后台进行相关配置。
首先修改用户名及密码,使用WebDAV访问也是此账密。
https://alist.nn.ci/zh/guide Alist官方教程页面
查看Alist官方教程页面添加存储,查看阿里云配置方案,点击 获取 Token,手机APP扫码。
WebDAV 策略:
302传输 数据不走VPS,直接连阿里云盘传输,适合独立程序纯粹使用WebDAV访问阿里云。
(Win系统PotPlayer 安卓系统nPlayer 苹果系统infuse等等其它软件)
本地代理 数据先下载到VPS内的存储硬盘,再转发给有需要的程序。
演示
保存成功后,点击左边的主页。
刚才后台配置的”挂载路径*”,就是现在的主目录文件夹。阿里云盘之下的所有内容都展示出来。
WebDAV搭建成功。
Rclone
配置命令
1 | rclone config |
代码呈现演示 (不做为执行命令)
1 | # 注:配置文件存放的位置 |
首次远程访问测试
Rclone功能 ls列出目录所含子目录及文件 alist搭建的远程访问项目名称 :根目录开始全局输出
1 | rclone ls alist: |
代码呈现演示 (不做为执行命令)
1 | root@debian:~# rclone ls alist: |
增强:
如果Alist里面添加了很多品牌的网盘。
如果某个网盘有很多文件夹。
列出不同目录下的资源。
代码呈现演示 (不做为执行命令)
1 | rclone ls alist: #Alist之下的全部网盘 |
挂载
默认选择Alist全局挂载,如需要指定目录可以自己编写。
Rclone功能 mount挂载命令 alist远程访问项目名称 VPS内的公共文件夹
以下可用 但不可靠 需要重新设计 进行参数修改 高强度测试
1 | rclone mount alist: /root/media --cache-dir /tmp --allow-other --attr-timeout 5m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 10G --vfs-read-chunk-size-limit 100M --buffer-size 100M & |
1 | rclone mount alist: /root/media --cache-dir /tmp --allow-other --attr-timeout 10m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 20G --vfs-read-chunk-size-limit 200M --buffer-size 400M & |
1 | rclone mount alist: /root/media --cache-dir /tmp --allow-other --attr-timeout 20m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 20G --vfs-read-chunk-size-limit 400M --buffer-size 600M & |
网络摘抄:
–allow-other:允许非当前Rclone用户外的用户进行访问
–attr-timeout 5m:文件属性缓存,(大小,修改时间等)的时间。如果小鸡配置比较低,建议适当提高这个值,避免过多的和内核交互,占用资源。
–vfs-cache-mode full:开启VFS文件缓存,这样可减少Rclone与API交互,同时可提高文件读写效率。
–vfs-cache-max-age 24h:VFS文件缓存时间,这里设置的24小时,如果文件很少更改,建议设置更长的时间。
–vfs-cache-max-size 10G:VFS文件缓存上限大小,建议不超过当前空余磁盘的50%。
–vfs-read-chunk-size-limit 100M:分块读取大小,这里设置的是100M,可提高文件读的效率,比如1G的文件,大致分为10个块进行读取,但与此同时API请求次数也会增多。
–buffer-size 100M:内存缓存,如果您内存比较小,可降低此值,如果内存比较大,可适当提高。
演示
输出一个随机编号表示成功,刷新一下media文件夹可以看见内容。
Rclone更多命令的使用查看官网 https://rclone.org/commands/
0.3 搭建
Emby服务器
IP地址:8096 embyserver docker发布页
在FinalShell中使用鼠标粘贴代码;或者键盘Ctrl+Shift+V粘贴代码,回车运行代码。
安装完成后访问Emby配置页面,设定相关参数,开始使用Emby。
媒体库位置选择 /mnt/share1
Bridge 桥接网络
1 | docker run -d \ |
Host 主机网络
1 | docker run -d \ |
如果是ARM主机 用下面的代码替换掉上面的
1 | emby/embyserver_arm64v8:latest |
演示



jellyfin 服务器
待定
容器端口冲突需要修改
Plex服务器
IP地址:32400 pms-docker docker发布页
在FinalShell中使用鼠标粘贴代码;或者键盘Ctrl+Shift+V粘贴代码,回车运行代码。
媒体库位置选择 /data
注:ARM架构Plex需要命令行手动编译镜像,具体请查看Docker发布页。
访问https://www.plex.tv/claim 获得4分钟有效期的令牌然后启动docker,可以跳过下面的隧道访问
Bridge 桥接网络
1 | docker run -d \ |
Host 主机网络
1 | docker run -d \ |
隧道访问(可选)
远程Plex搭建最难的就是初次访问后台,创建全新服务器。
FinalShell鼠标右键,编辑VPS的信息,添加隧道。
保存隧道信息,断开VPS再重新登录VPS
浏览器输入http://localhost:32400/web
登录认证Plex账户。出现正确页面才是后台服务器创建。
遇到访问等待太久,建立服务器失败。就清空数据库再来一遍。
停止容器 &&删除用户数据库 &&启动容器
1 | docker stop plex && |
参考隧道配置
1 | 方向:本地(拨出) |


Jav插件:JPmag.net
0.4 注意
再来复习一下工作流程:
- Docker环境正常:打开Fastdocker面板 IP地址:8081 OK!
- Internet环境正常:打开Speedtest-X面板 IP地址:12345 测速 OK!
- Alist容器运行正常:打开Alist面板 IP地址:5244 看见网盘文件夹 OK!
- WebDAV传输运行正常:独立APP使用WebDAV读取资源播放 OK!
(走到这一步,独立APP使用WebDAV已经成功) - Rclone运行正常:Rclone ls Alist: 打印资源列表正常。 OK!
(选一个东西少一点的文件夹,十几个文件就行。几万个文件打印列表很久的) - mount挂载正常:FinalShell刷新文件夹看得见资源。 OK!
(本教程的挂载是每次重启都会丢失,需要再次输入mount挂载组合命令)
(走到这一步,Emby/Plex才能启动容器,正确读取虚拟文件夹的资源) - VPS云媒体库至此搭建成功。可以正常看片了。
为了锻炼自己的能力,此刻立即reboot重启VPS,按照工作流程检查云媒体环境。
出现错误维护一下。
修复不了错误就重装系统再来一遍。
为了写这篇教程,历时2个月,反复构思流程。装机几十次。总结经验。
分享给群友一起装机测试,收集问题,调试细节。
0.5 备份 待测试
折腾到了一个稳定的阶段,养成备份的好习惯。
容器更新版本是可以继续使用数据库的。
VPS重装系统,迁移更换VPS。可以使用备份进行恢复。
Alist自带备份与恢复
两个默认用户是无法恢复的

媒体库的备份与恢复
停止容器生成并赋权backups公共备份目录 &&打包容器数据库 &&上传云盘指定文件夹
tar开关注释
z压缩包 c创建包 x解压包 t查看包 v打印信息 f指定名称
单封装
1 | docker stop emby && |
单封装
1 | docker stop plex && |
双封装
1 | docker stop emby plex && |
检查压缩包
1 | tar -ztvf /root/backups/*.gz |
启动容器 单启动 双启动
1 | docker start emby |
1 | docker start plex |
1 | docker start emby plex |
云上传
备份包恢复的Emby 立即展开使用 会触发直接转码播放
修复方案一 直接重启容器 或者VPS 重新加载Emby设定文件
修复方案二 浏览全部设置页面,检查各项设定,转码功能选择关闭
0.6 恢复 待测试
1 | rclone copy -P alist:aliyun/vpsmediabackups /root/backups |
0.7 增强
已成功 待优化
写入Docker IPV6 配置参数
https://imciel.com/2021/03/31/config-docker-ipv6/
1 | cat > /etc/docker/daemon.json <<EOF |
检查Docker网络
1 | systemctl restart docker |
测试V6联通
1 | docker run --network=bridge --rm -it busybox ping -6 -c4 google.com |
特定情况下有个讨厌的合集媒体库 删除
/root/emby/config/root/default/合集
0.8 更新
docker 官方 镜像命令用法
https://docs.docker.com/engine/reference/commandline/images/
显示悬空镜像
docker images -f “dangling=true”
删除悬空镜像
docker rmi $(docker images -f “dangling=true”)
另外一种方法
docker rmi -f $(docker images | grep “none” | awk ‘{print $3}’)
想法:
完全静默,无人管理式的更新可以使用Watchtower。
本教程基于人工更新的方式执行,做出自己的规划。
逻辑:
强制删除容器
拉取最新镜像
删除旧镜像 none悬空镜像
创建容器
Alist
1 | docker rm -f alist && |
Plex
1 | docker rm -f plex && |
0.8 最小化 Lite in VPS
草稿页
| 项目名称 | 访问页面 | 官方发布 | 安装方案 | Docker启动开关 | 重启机制 | 备注 |
|---|---|---|---|---|---|---|
| Fastdocker | IP地址:8081 | https://hub.docker.com/r/wangbinxingkong/fast | Docker安装,写 入系统级文件夹 |
–restart always |
保持重启自动 启动 |
|
| Speedtest-X | 桥接网络IP地 址:12345 主机 网络IP地址:80 |
https://hub.docker.com/r/stilleshan/speedtest-x | Docker安装,写 入系统级文件夹 |
–restart unless-stopped |
手动开关使用 |
重启前是什么运 行状态,开机就 保持什么状态。 |
| Alist | IP地址:5244 | https://hub.docker.com/r/xhofe/alist | Docker安装,写 入/root文件夹公 开使用 |
–restart always |
保持重启自动 启动 |
Webdav传输一 直有效 |
| Rclone | / | https://rclone.org/install/#script-installation | linux源码安装, 系统级文件夹 |
/ | 未设置开机命 令自动挂载 |
重启就会丢失 挂载信息,需 要SSH再次输 入挂载命令。 |
| Emby | IP地址:8096 | https://hub.docker.com/r/emby/embyserver | Docker安装,写 入/root文件夹公 开使用 |
–restart no 或者留空此开关 不设置 |
未设置自动重 启 |
开机后手动启动 容器 |
| Jelly | IP地址:8096 | https://hub.docker.com/r/jellyfin/jellyfin/ | Docker安装,写 入/root文件夹公 开使用 |
–restart no 或者留空此开关 不设置 |
未设置自动重 启 |
开机后手动启动 容器 |
| Plex | IP地址:32400 | https://hub.docker.com/r/plexinc/pms-docker | Docker安装,写 入/root文件夹公 开使用 |
–restart no 或者留空此开关 不设置 |
未设置自动重 启 |
开机后手动启动 容器 |
| qbittorrent | IP地址:8080 | https://hub.docker.com/r/linuxserver/qbittorrent | Docker安装,写 入/root文件夹公 开使用 |
–restart always |
保持重启自动 启动 |
|
| homepage | **** | https://gethomepage.dev/en/installation/docker/ | Docker安装,写 入/root文件夹公 开使用 |
–restart always |
保持重启自动 启动 |






