原因
在飞牛OS系统设置中启用DDNS配置了域名之后,在Docker面板中打开Jellyfin后台,默认使用了https访问,访问不了。
申请证书又麻烦,飞牛OS DDNS自带证书和还支持自动续期。
解决思路
找到 飞牛OS DDNS证书保存路径 /usr/trim/var/trim_connect/ssls
通过飞牛应用中心的 计划任务 应用 将DDNS证书复制到Jellyfin config目录并根据crt、key生成Jellyfin支持的fpx证书。
然后在 Jellyfin 控制台-网络 中,启用 HTTPS,在 自定义 SSL 证书路径 中选择/config/ssl目录中的pfx结尾的证书文件。
在docker中 绑定8920端口,当然也可以自定义你需要的端口。
实现过程
1.在应用中心 下载应用 任务计划;
2.新建任务,任务名称“DDNS证书同步”,用户账号选root
3.每十分钟执行一次,cron表达式
*/10 * * * *
4.重点!!!任务内容复制粘贴以下代码并修改你的域名
#!/bin/bash
# Jellyfin SSL 证书同步脚本
# 从最新的时间戳目录中找到证书文件并拷贝到 Jellyfin 配置目录
# 修改下方DOMAIN参数为你的域名 不要带前缀和/ 如:baidu.com
# 如果你的Jellyfin配置目录和我不一样记得更改 SSL_DST
DOMAIN="这里填写域名 如:baidu.com"
SSL_SRC="/usr/trim/var/trim_connect/ssls/$DOMAIN"
SSL_DST="/vol1/1000/Jellyfin/config/ssl"
# 查找最新时间戳命名的文件夹
latest_dir=$(ls -1 "$SSL_SRC" | grep -E '^[0-9]+$' | sort -n | tail -1)
if [ -z "$latest_dir" ]; then
echo "[ERROR] 未找到时间戳目录: $SSL_SRC"
exit 1
fi
LATEST_PATH="$SSL_SRC/$latest_dir"
echo "[INFO] 最新证书目录: $LATEST_PATH"
# 创建目标目录(如果不存在)
mkdir -p "$SSL_DST"
# 拷贝证书文件
# 常见证书文件:fullchain.pem / cert.pem / privkey.pem / chain.pem 等
found=0
for pattern in "*.pem" "*.crt" "*.key" "*.cert"; do
for file in "$LATEST_PATH"/$pattern; do
if [ -f "$file" ]; then
cp "$file" "$SSL_DST/"
echo "[OK] 已拷贝: $file -> $SSL_DST/"
found=1
fi
done
done
# 也检查 cert/ 或 live/ 子目录(常见的 certbot/acme.sh 结构)
for sub in cert live; do
subdir="$LATEST_PATH/$sub"
if [ -d "$subdir" ]; then
for pattern in "*.pem" "*.crt" "*.key"; do
for file in "$subdir"/$pattern; do
if [ -f "$file" ]; then
cp "$file" "$SSL_DST/"
echo "[OK] 已拷贝: $file -> $SSL_DST/"
found=1
fi
done
done
fi
done
if [ "$found" -eq 0 ]; then
echo "[WARN] 在 $LATEST_PATH 中未找到证书文件"
exit 1
fi
# 在目标目录将 DOMAIN.crt 和 DOMAIN.key 合并为 pfx
crt_file="$SSL_DST/$DOMAIN.crt"
key_file="$SSL_DST/$DOMAIN.key"
pfx_file="$SSL_DST/$DOMAIN.pfx"
if [ -f "$crt_file" ] && [ -f "$key_file" ]; then
echo "[INFO] 合并 pfx: $crt_file + $key_file"
openssl pkcs12 -export \
-out "$pfx_file" \
-inkey "$key_file" \
-in "$crt_file" \
-passout pass: 2>/dev/null
if [ $? -eq 0 ]; then
echo "[OK] pfx 合并完成: $pfx_file(无密码)"
else
echo "[ERROR] pfx 合并失败"
fi
else
echo "[WARN] 缺少 $DOMAIN.crt 或 $DOMAIN.key,跳过 pfx 合并"
fi
echo "[DONE] SSL 证书同步完成"
exit 0
然后保存,选中刚才添加的任务,点击上方的执行按钮等待执行完成。
这个时候 Jellyfin config目录中就会有 ssl文件夹,里面放的有域名证书
5.进入Jellyfin 控制台 网络中 启用https 并配置 证书路径 ,选择config/ssl中的pfx证书文件,保存并重启Jellyfin即可。
注意
1.请提前做好 飞牛OS DDNS的相关配置;
2.请提前配置 Docker 的8920端口或你自定义的端口;教程论坛搜
3.第一次发整活贴如有描述不周,请多多包涵,有不清楚的地方回复,我会解答。