为什么需要 DDNS 和反向代理?
家里的 NAS、Home Assistant、Emby 等服务只能在内网访问,出门就断了。Lucky 解决两个问题:
- DDNS:家宽 IP 会变,自动更新域名解析,始终指向你家
- 反向代理:把多个内网服务通过不同域名/端口暴露出去,统一 HTTPS 入口
实际应用场景:
- 🏠 外网访问飞牛 NAS 文件
- 🎬 出门看 Emby 影视库
- 🎵 LX Music 歌曲同步
- 🏡 远程控制 Home Assistant
- 📊 查看监控面板
技术架构
外网用户
↓
域名 xxx.1681588.xyz(阿里云 DNS)
↓
家庭宽带 IP(动态)
↓
路由器端口转发(8888 → NAS:8888)
↓
Lucky 反向代理
↓
┌─────────────┬─────────────┬─────────────┐
│ LX Music │ Emby │ 其他服务 │
│ :9527 │ :8096 │ :xxxx │
└─────────────┴─────────────┴─────────────┘
部署步骤
第一步:创建项目目录
mkdir -p ~/docker/lucky
cd ~/docker/lucky
第二步:编写 docker-compose.yml
services:
lucky:
image: gdy666/lucky:latest
container_name: lucky
restart: unless-stopped
ports:
- "16601:16601" # 管理面板
- "8888:8888" # 反向代理端口
volumes:
- ./config:/goodluck # 配置持久化
environment:
- http_proxy= # OrbStack 代理兼容
- https_proxy=
- ALL_PROXY=
network_mode: bridge # 必须用 bridge,host 模式不通
第三步:启动容器
docker compose up -d
第四步:访问管理面板
浏览器打开 http://你的NAS-IP:16601
默认账号密码:admin / admin123
配置 DDNS
第一步:获取域名
在阿里云注册域名(如 1681588.xyz),或使用免费二级域名。
第二步:获取 API Token
阿里云:
- 登录阿里云控制台
- 访问密钥管理 → 创建 AccessKey
- 记录 AccessKey ID 和 Secret
Cloudflare:
- 登录 Cloudflare
- My Profile → API Tokens → Create Token
- 权限选择 Zone:DNS:Edit
第三步:添加 DDNS 任务
在 Lucky 管理面板:
- 左侧菜单 → 动态域名
- 点击 添加任务
- 配置:
- 域名:
你的域名.1681588.xyz - DNS 服务商:阿里云 / Cloudflare
- 填入 API Token
- 更新间隔:5 分钟
- 域名:
第四步:验证
查看 DDNS 任务状态,确认 IP 已更新:
nslookup 你的域名.1681588.xyz
# 应该返回你家的公网 IP
配置反向代理
第一步:添加反向代理规则
在 Lucky 管理面板:
- 左侧菜单 → 反向代理
- 点击 添加规则
- 配置:
| 字段 | 值 |
|---|---|
| 监听端口 | 8888 |
| 域名 | lx.1681588.xyz |
| 目标地址 | http://localhost:9527 |
| 启用 HTTPS | 可选 |
第二步:常用反向代理示例
| 域名 | 内网地址 | 用途 |
|---|---|---|
lx.1681588.xyz:8888 | localhost:9527 | LX Music 同步 |
emby.1681588.xyz:8888 | localhost:8096 | Emby 影视 |
ha.1681588.xyz:8888 | localhost:8123 | Home Assistant |
sunpanel.1681588.xyz:8888 | localhost:3000 | Sun-Panel 导航 |
第三步:路由器端口转发
在路由器中设置端口转发:
| 外部端口 | 内部 IP | 内部端口 | 协议 |
|---|---|---|---|
| 8888 | NAS IP | 8888 | TCP |
| 16601 | NAS IP | 16601 | TCP(可选,仅管理用) |
HTTPS 证书配置
自动证书(推荐)
Lucky 支持自动申请 Let’s Encrypt 证书:
- 在反向代理规则中勾选 启用 HTTPS
- 选择 自动申请证书
- 填入邮箱
- 保存后自动申请并续期
手动证书
如果有通配符证书或其他证书:
- 上传证书文件(.cem + .key)
- 在反向代理规则中选择 手动证书
安全加固
修改管理端口
不要用默认的 16601,改成冷门端口:
- 设置 → 系统设置 → 管理端口
- 改成如
58888
IP 白名单
在反向代理规则中可以设置:
- 只允许特定 IP 访问管理面板
- 或者限制整个 IP 段
定期更新
# 更新 Lucky 镜像
cd ~/docker/lucky
docker compose pull
docker compose up -d
坑
⚠️ OrbStack host 模式不通:OrbStack 中 network_mode: host 出站 TCP 不通,必须用 bridge + 端口映射。
⚠️ 家宽 80/443 端口被封:大部分家宽封了 80 和 443,需要用非标端口(如 8888)。
⚠️ 双 NAT 问题:如果光猫是桥接模式就没问题;如果是路由模式,需要在光猫上也做端口转发。
⚠️ 域名备案:如果用国内服务器(阿里云 DNS),域名需要备案才能解析到国内 IP。用 Cloudflare 不需要备案。
验证
# 测试反向代理是否通
curl -I http://lx.1681588.xyz:8888
# 应该返回 LX Music 的响应
# 测试 HTTPS
curl -I https://lx.1681588.xyz:8888