需要准备的东西#
- 一个带有的公网服务器
- 一个域名
- 一个畅通的网络
- 一双灵巧的手
一个健康正常的脑子
我推荐使用 docker 安装毕竟可以免去不是的配置问题
docker#
以 Ubuntu 为例#
- 你也可以使用一键脚本安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
- 手动安装
- 先卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
- 更新 apt 包索引和安装要使用 apt 包
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
- 添加 Docker 的官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
- 设置存储库
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新 apt 索引
sudo apt-get update
- 安装 Docker Engine、containerd 和 Docker Compose
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 测试
sudo docker run --rm hello-world
能正常输出不报错就算安装成功了
- 善后
添加当前用户到 docker 组免去 sudo
sudo usermod -aG docker $USER
exit
Alist#
安装#
docker run -d --restart=always \
--name="alist" \
-v /etc/alist:/opt/alist/data \ #'/etc/alist'本机映射路径可以设置到自己习惯的位置
-p 5244:5244 \ #如果不想映射到公网,可以使用-p 127.0.0.1:5244:5244 由于Rclone 也在docker里面 可能得加上 -p 172.17.0.1:5244:5244
xhofe/alist:latest
配置#
跳转官方文档足够详细
Rclone#
- 你可能需要先安装 fuse
sudo apt-get install fuse
安装#
生成配置文件#
docker run -it --rm \
-v /etc/rclone:/config/rclone \
rclone/rclone \
config
- 创建新的配置
- 设置配置名称
可以使用其他后面的 运行 rclone 中的mount Rclone
需要保持一致 - 选择协议
一般都是 webdav - 设置主机地址
一般指向 docker 网关即可 - 选择 webdav 服务类型
Alist 推荐我们选择 nextcloud - 输入用户名
- 输入
一般选择 y 使用自己的密码
然后输入两次密码,输入不会有提示 - token 和高级配置
留空和默认即可 - 检查
核对无误 y 保存 - 完成
创建完成 q 退出即可
运行 rclone#
docker run -itd --name rclone \
# cpu数量限制不是必须的,如果出现rclone异常占用可以使用限制。
--cpuset-cpus="1" \
-v /etc/rclone:/config/rclone \
-v /mnt/rclone:/data:shared \
--device /dev/fuse \
--cap-add SYS_ADMIN \
--security-opt apparmor:unconfined \
rclone/rclone \
mount Rclone:/ /data --umask 0000 --vfs-cache-mode full --default-permissions --allow-non-empty --allow-other --buffer-size 1G --dir-cache-time 6h --vfs-read-chunk-size 64M --vfs-read-chunk-size-limit 1G --vfs-cache-max-size 20G
--vfs-cache-max-size 20G 最大缓存大小根据自己的磁盘空间大小进行修改
解除挂载#
一般来说 docker stop rclone 后默认会解除挂载,如果解除失败可以使用:fusermount -qzu /mnt/挂载路径
强制解除。
视频站#
Emby 安装#
docker run -itd \
--restart always \
--name emby \
-v /etc/emby:/config \
-v /mnt/rclone:/rclone \
-p 8096:8096 \
-e TZ=Etc/UTC+8 \
--device /dev/dri:/dev/dri \
linuxserver/emby:latest
Jellyfin 安装#
docker run -itd \
--name=jellyfin \
-e TZ=Etc/UTC+8 \
-p 8096:8096 \
-v /etc/jellyfin:/config \
-v /mnt/rclone:/rclone \
--restart always \
--device /dev/dri:/dev/dri \
linuxserver/jellyfin:latest
配置#
基本配置就不赘述了
主要涉及几个自动扫描功能会导致 云盘风控 高网络占用什么的
- 简介标记
- 计划任务
这五个中会自动生成计划任务并且长时间大量占用资源,建议手动删除。
映射公网#
推荐使用 Nginx 或其他反代服务器,不建议使用 emby 和 jellyfin 内部的 https 服务
申请 TLS 证书#
- 安装 acme.sh
官方文档
curl https://get.acme.sh | sh -s [email protected]
- 使用 acme.sh 签 TLS 证书 cloudflare 版本
export CF_Token="token"
export CF_Account_ID="ID"
export CF_Zone_ID="ID"
cd ~/.acme.sh
./acme.sh --issue -d ex.com -d *.ex.com --server letsencrypt --dns dns_cf
Account_ID 和 Zone_ID 为
Token 直接使用模板:编辑区域 dns,即可;区域选择自己的域名
Nginx#
编写配置文件#
sudo mkdir /etc/nginx
sudo vi /etc/nginx/nginx.conf
按 i
进入编辑模式
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 512;
}
http {
ssl_certificate /etc/ssl/let/fullchain.pem;
ssl_certificate_key /etc/ssl/let/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
resolver 8.8.8.8 1.1.1.1 valid=60s;
# gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name emby.ex.com;
# server_name emby4.ex.com; # 默认不需要
# server_name emby6.ex.com; # 默认不需要
error_page 497 =301 https://$host:$server_port$request_uri;
location / {
proxy_pass http://127.0.0.1:8096/;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
按 Esc 输入 :wq
回车退出
安装#
sudo touch /etc/nginx/nginx.conf
docker run -itd --restart always --name nginx --network host \
-v /path/fullchain.cer:/etc/ssl/let/fullchain.pem:ro \
-v /path/ex.com.key:/etc/ssl/let/privkey.pem:ro \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
你需要将/path
和/path/ex.com.key
修改为 acme.sh 告诉你的路径
媒体文件直连#
Cloudflare 设置#
- 选择规则中的重定向规则
- 如果不需要 v4、v6 分流只需要创建一个规则且红框圈住的不需要
- 以下为 v4
- 以下为 v6
Nginx 设置#
咕咕咕