网址
GitHub: https://github.com/gdy666/lucky
Wiki: https://lucky666.cn
一键部署 docker
Docker中使用
这里我选择挂在配置版本 群晖中使用 /root/luckyconf 换成你的挂载目录 群晖我默认在/volume1/docker/lucky
- 不挂载主机目录, 删除容器同时会删除配置# host模式, 同时支持IPv4/IPv6, Liunx系统推荐 docker run -d --name lucky --restart=always --net=host gdy666/lucky # 桥接模式, 只支持IPv4, Mac/Windows推荐,windows 不推荐使用docker版本 docker run -d --name lucky --restart=always -p 16601:16601 gdy666/lucky
- 在浏览器中打开
http://主机IP:16601
,修改你的配置,成功 - [可选] 挂载主机目录, 删除容器后配置不会丢失。可替换
/root/luckyconf
为主机目录, 配置文件夹为lucky docker run -d --name lucky --restart=always --net=host -v /root/luckyconf:/goodluck gdy666/lucky
群晖挂在配置目录方便自用
先创建文件夹 在给权限
mkdir /volume1/docker/lucky
chmod 777 /volume1/docker/lucky
docker run -d --name lucky --restart=always --net=host -v /volume1/docker/lucky:/goodluck gdy666/lucky
默认登陆信息
默认登陆地址 : http://\{IP地址\}:16601
默认账号:666
默认密码:666
其他系统搭建看wiki
常见错误
lucky 设置好DDNS 和证书自动续签后 证书映射目录 会在/volume1/docker/lucky 基础上新建文件夹 因为你只挂载了这个目录他找不到其他的目录 还有证书映射挂载的目录前面不要带/ 不然不生效
我准备给emby 长期自动续签 这个自动执行脚本lucky里面并没有openssl 也不能在容器内执行重启docker emby (太复杂我目前只想在宿主机执行)并生成PFX格式证书(emby需要) 和重启emby
如果申请证书失败那你可以添加代理 代理在lucky证书 选项中有
emby添加一个ssl文件夹/volume1/docker/lucky/ssl
在lucky默认30天 自动续签域名(就是重新申请)在群晖控制面板 任务计划中添加[任务计划执行为 bash /volume1/docker/lucky/ssl/updated.sh ] 时间执行 每天执行一次脚本 脚本中有检测证书时间和pem是否更新 并把以下脚本{updated.sh} 放到指定目录 /volume1/docker/lucky/ssl
ChatGpt 写的脚本
#!/bin/bash
# 路径配置
SSL_DIR="/volume1/docker/lucky/ssl"
DOMAIN="你的域名"
CERT_FILE="${SSL_DIR}/${DOMAIN}.pem"
KEY_FILE="${SSL_DIR}/${DOMAIN}.key"
PFX_FILE="${SSL_DIR}/${DOMAIN}.pfx"
PFX_PASSWORD="emby123"
EMBY_CONTAINER="emby"
LOG_FILE="${SSL_DIR}/check_cert_and_generate_pfx.log"
TIMESTAMP_FILE="${SSL_DIR}/${DOMAIN}.pem.timestamp"
# 阈值
DAYS_LEFT_THRESHOLD=5
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
log "▶️ 开始检查证书"
# 基本校验
if [ ! -f "$CERT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
log "❌ 缺少证书或私钥文件:$CERT_FILE 或 $KEY_FILE"
exit 1
fi
# 检查剩余天数
EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_FILE" | cut -d= -f2)
EXPIRY_TIMESTAMP=$(date -d "$EXPIRY_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_TIMESTAMP - CURRENT_TIMESTAMP) / 86400 ))
log "📅 证书剩余天数:$DAYS_LEFT 天"
# 检查文件是否被更新(mtime)
CURRENT_MTIME=$(stat -c %Y "$CERT_FILE")
LAST_MTIME=$(cat "$TIMESTAMP_FILE" 2>/dev/null || echo 0)
SHOULD_UPDATE=0
if [ "$DAYS_LEFT" -le "$DAYS_LEFT_THRESHOLD" ]; then
log "⚠️ 证书即将过期,准备更新 .pfx"
SHOULD_UPDATE=1
elif [ "$CURRENT_MTIME" -ne "$LAST_MTIME" ]; then
log "🔄 检测到证书文件已更新,准备同步 .pfx"
SHOULD_UPDATE=1
else
log "✅ 证书尚未过期且无变化,跳过处理"
fi
if [ "$SHOULD_UPDATE" -eq 1 ]; then
openssl pkcs12 -export \
-out "$PFX_FILE" \
-inkey "$KEY_FILE" \
-in "$CERT_FILE" \
-passout pass:"$PFX_PASSWORD"
if [ $? -eq 0 ]; then
log "✅ PFX 文件生成成功:$PFX_FILE"
echo "$CURRENT_MTIME" > "$TIMESTAMP_FILE"
else
log "❌ PFX 生成失败"
exit 1
fi
docker restart "$EMBY_CONTAINER" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
log "🔁 Emby 容器已重启"
else
log "❌ Emby 容器重启失败"
fi
fi
log "🏁 脚本结束"
Comments NOTHING