需要準備的東西#
- 一個帶有的公網伺服器
- 一個域名
- 一個暢通的網路
- 一雙靈巧的手
一個健康正常的腦子
我推薦使用 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 設置#
咕咕咕