媒体库选择
本文选择pikpak作为媒体库。目前首年优惠价格为466.99元。
购买地址:https://mypikpak.com/drive/payment
产品参数:10TB,下行流量 - 4 TB / 月
如果下行流量不够使用需要购买额外流量。
pikpak服务器使用的新加坡阿里云,检测延时:
https://www.itdog.cn/ping/dav.mypikpak.com
发现并未做anycast。所谓全球超高速下载有点夸张,还不如猫子的cdn系统。
使用rclone挂载媒体库
安装rclone
安装地址:Rclone downloads
官方安装脚本
curl https://rclone.org/install.sh | sudo bash
安装fuse
apt-get install fuse
高版本会出现
failed to mount FUSE fs: fusermount: exec: "fusermount3": executable file not found in $PATH错误。
解决
ln -s /bin/fusermount /bin/fusermount3
配置rclone
rclone config
选择New remote
输入远程的名称
选择类型,56,各版数字不一样,注意数字
输入WebDav运行地址
接下来的容器选择其他
在PikPak界面右上角点击设置
实验室功能 - WebDAV(会员专享)
输入用户名和密码
剩下的高级配置不用管,直接回车即可。
推出配置页面,输入
rclone tree pikpak:/
出现文件目录则表示配置成功
挂载
确保配置成功的情况下,使用
mkdir -p /data/movies
#rclone mount (远程的名称):/ 需要挂载的路径
rclone mount pikpak:/ /data/movies
卸载
fusermount -qzu 挂载的本地目录
开机启动
[Unit]
Description=Rclone
After=network-online.target
[Service]
Type=simple
ExecStart=rclone mount pikpak:/ /data/movies
Restart=on-abort
User=root
[Install]
WantedBy=default.target
systemctl enable rclone
到此挂载完成
EMBY搭建
安装docker
curl -fsSL https://get.docker.com | sh
安装docker-compose
apt install docker-compose
docker-compose.yml
version: "2.3"
services:
emby:
image: amilys/embyserver
container_name: embyserver
network_mode: host
volumes:
- /data/emby:/config
- /data/movies:/mnt/share
restart: on-failure
启动empy
docker-compose up -d
域名证书
由于猫子的域名托管在Cloudflare,所以通过 Cloudflare API,一键申请 SSL 证书,并自动保存!
Cloudflare API获取
点击查看,输入密码即可查看API令牌
申请脚本
bash <(curl -Ls https://v2rayssr.com/tool/acme.sh)
根据脚本提示输入主域名、 Cloudflare API、证书路径等信息,完成申请。
证书路径建议为/data/nginx/cert/
目录,即Nginx证书目录。
Nginx反代
docker-compose.yml
openresty:
image: openresty/openresty:latest
container_name: openresty
restart: always
network_mode: host
volumes:
- /etc/localtime:/etc/localtime
- /data/nginx/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf:ro
- /data/nginx/logs:/usr/local/openresty/nginx/logs
- /data/nginx/cert:/usr/local/openresty/nginx/cert
- /data/nginx/html:/usr/local/openresty/nginx/www:ro
nginx.conf
路径:/data/nginx/conf/nginx.conf
user daemon daemon;
worker_processes auto;
error_log logs/error.log notice;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
server_names_hash_bucket_size 2048;
server_names_hash_max_size 4096;
log_format main '{ "@timestamp": "$time_local", '
'"@fields": { '
'"uri":"$request_uri",'
'"url":"$uri",'
'"upstream_addr":"$upstream_addr",'
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"host":"$host",'
'"server_addr":"$server_addr",'
'"request_time": "$request_time", '
'"request_time":"$request_time",'
'"status":"$status",'
'"request": "$request", '
'"request_method": "$request_method", '
'"size":$body_bytes_sent,'
'"upstream_time":"$upstream_response_time"'
'"http_referrer": "$http_referer", '
'"body_bytes_sent":"$body_bytes_sent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_user_agent": "$http_user_agent" } }';
access_log off;
sendfile on;
tcp_nopush on;
keepalive_timeout 10;
client_header_timeout 10s;
client_body_timeout 10s;
send_timeout 10s;
fastcgi_buffer_size 512k;
fastcgi_buffers 6 512k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
connection_pool_size 256;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 1m;
client_body_buffer_size 1024k;
client_body_temp_path /usr/local/openresty/nginx/client_body_temp;
proxy_temp_path /usr/local/openresty/nginx/proxy_temp;
fastcgi_temp_path /usr/local/openresty/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_buffering on;
proxy_buffers 64 128k;
gzip off;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name xxx.xxx.com;
access_log logs/xxx.access.log main;
error_log logs/xxx.error.log notice;
ssl_certificate /usr/local/openresty/nginx/cert/xxx.crt;
ssl_certificate_key /usr/local/openresty/nginx/cert/xxx.key;
ssl_stapling on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m; # 如果与其他配置冲突,请注释此项
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://localhost:8096;
proxy_cache off;
proxy_buffering off;
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_set_header X-Forwarded-Proto $scheme;
}
}
}
启动nginx
docker-compose up -d
域名解析
添加A记录,并关闭小黄鱼。
如果使用Cloudflare CDN代理,可能会被封号,所以猫子选择简单的自建ssl证书。
配置EMBY
此时,我们已经可以通过https://xxx.xxx.com访问emby服务了。
EMBY初始化
略
设置新增用户
禁止视频转码,该选项会占用cpu资源。
新增媒体库
点击新增媒体库
点击添加
选择文件夹,选择子文件夹
媒体库设置
字幕下载,点击确认
最终效果。
评论