NAS 折腾日记(7)Lucky 部署与反向代理
创建于 2026-09-15
更新于 2026-09-19
科技
nas
lxc
lucky
反向代理
3455 字 · 约 12 分钟

前言

家庭 Web 服务使用 Lucky 汇总反向代理入口。本文记录在 Alpine LXC 中安装、注册服务、配置域名转发与 HTTPS,以及按访问链路排查问题。

一、部署环境

按照 NAS 折腾日记(2)PVE 与 Docker 基础环境部署 创建非特权 Alpine LXC,示例 CT ID 为 201、主机名为 lucky,不启用 Docker nesting 或 NFS 挂载。示例地址 192.168.20.31/24,网关 192.168.20.1。程序直接运行在该 LXC 中,PVE 设置开机启动。以下命令在 Lucky LXC 执行。

反向代理以 NAS 折腾日记(5)Homepage 部署与服务导航 的 Homepage 为例,其上游为 http://192.168.20.30:3000。先确认从 Lucky LXC 可以访问上游。

二、安装与服务管理

Lucky LXC 内安装下载工具:

bash
1
2
apk update apk add curl ca-certificates tar

Lucky 发布页选择 Linux amd64 安装包,复制对应 release asset 的下载链接。在 Lucky LXC 中下载,下面的地址占位符须替换为完整链接:

bash
1
curl -fL 'REPLACE_WITH_RELEASE_ASSET_URL' -o /tmp/lucky.tar.gz

解压后把 lucky 可执行文件放到 /usr/local/bin/lucky

bash
1
2
3
mkdir -p /tmp/lucky-package /etc/lucky tar -xzf /tmp/lucky.tar.gz -C /tmp/lucky-package find /tmp/lucky-package -type f -name lucky

按上一条输出找到二进制路径,复制到目标位置:

bash
1
2
3
4
# 将示例来源路径改为 find 实际显示的文件 cp /tmp/lucky-package/lucky /usr/local/bin/lucky chmod 755 /usr/local/bin/lucky /usr/local/bin/lucky -c /etc/lucky/lucky.conf

先以前台方式启动,默认管理入口为 http://192.168.20.31:16601,初始账号和密码均为 666。登录后立即修改账号、密码和安全入口,再启用功能模块。管理端口 16601 与后面代理业务使用的 80/443 分开。Lucky 支持指定配置文件或目录,参数见 官方安装说明。下面将相同启动命令整理为 OpenRC 服务,供新建 Alpine 环境使用;实际机器使用安装脚本生成的启动方式。

结束前台进程后,创建 /etc/init.d/lucky

bash
1
2
3
4
5
6
7
8
9
#!/sbin/openrc-run name="Lucky" supervisor="supervise-daemon" command="/usr/local/bin/lucky" command_args="-c /etc/lucky/lucky.conf" depend() { need net }

启用服务:

bash
1
2
3
4
chmod 755 /etc/init.d/lucky rc-update add lucky default rc-service lucky start rc-service lucky status

在 Lucky 的 Web 服务中添加规则,将 home.example.com 转发至 http://192.168.20.30:3000。先使用 HTTP 监听端口 80,确认代理链路:

bash
1
2
# 从能访问 Lucky 的客户端执行 curl -I -H 'Host: home.example.com' http://192.168.20.31/

再通过浏览器访问 http://home.example.com。AdGuard Home 负责将域名解析到 Lucky,Lucky 根据域名转发到 Homepage。

需要 HTTPS 时,在 Lucky 的证书管理中为自己的域名申请证书。使用 DNS 验证时,选择域名对应的 DNS 服务商,填写该服务商要求的凭据,申请成功后在 Web 服务规则中启用 TLS、监听 443 并选择对应证书。Homepage 的 HOMEPAGE_ALLOWED_HOSTS 已包含导航域名,可继续用 https://home.example.com 访问。

三、逐项配置 Web 服务

将配置分为监听、匹配、转发三部分。以导航为例:

配置项 示例
监听端口 HTTP 80,HTTPS 443
匹配域名 home.example.com
上游协议 HTTP
上游主机 192.168.20.30
上游端口 3000
TLS 证书 覆盖 home.example.com 的证书

上游填写 Homepage 所在的 LXC 地址和发布端口。客户端访问的域名由 DNS 指向 Lucky,反代再按域名选择上游。多个服务可以使用同一监听端口、不同域名,各自填写上游。

申请证书后检查证书覆盖的名称、有效期和 Web 服务中选用的证书。DNS 验证的凭据保存在 Lucky 配置中,备份目录按管理数据保存。

四、验证访问链路

在 Lucky LXC 中验证上游:

bash
1
curl -I http://192.168.20.30:3000

在客户端绕过 DNS,指定解析测试 HTTPS:

bash
1
curl --resolve home.example.com:443:192.168.20.31 -I https://home.example.com/

最后使用正常 DNS 访问 https://home.example.com。这样可分别检查应用、代理与域名解析。内网 DNS 配置见 NAS 折腾日记(6)AdGuard Home 部署与内网 DNS

现象 检查项
上游直连失败 Homepage 是否运行、端口发布、LXC 防火墙
返回 502 Lucky 到上游的地址、端口与协议
页面提示 Host 不允许 Homepage 的 allowed hosts
浏览器证书错误 访问域名、证书名称、所选证书与有效期
IP 指定访问正常,域名访问失败 A/AAAA 记录及客户端实际 DNS

五、接入 Homepage

Lucky 使用独立 LXC,本篇通过 PVE 状态与一个实际代理入口检查它。沿用 NAS 折腾日记(5)Homepage 部署与服务导航proxmox.yaml,将以下条目合并进 services.yaml 的“网络服务”分组:

yaml
1
2
3
4
5
6
7
8
- 网络服务: - Lucky: href: http://192.168.20.31:16601/YOUR_SAFE_ENTRY description: 反向代理与证书管理 siteMonitor: https://home.example.com proxmoxNode: pve proxmoxVMID: 201 proxmoxType: lxc

YOUR_SAFE_ENTRY 替换为设置后的安全入口,pve201 替换为实际节点名与 CT ID。这里通过 Homepage 的通用 HTTP 检查观察代理入口是否可用。

siteMonitor 请求由 Homepage 容器发出。部署 AdGuard Home 后,在 Portainer 的 Homepage 网络配置中将 DNS 设为 192.168.20.32,重新部署,让容器也能把 home.example.com 解析到 Lucky。客户端浏览器能访问这个名称,并不能证明容器采用了相同 DNS。

卡片中的 LXC 状态表示 Lucky 所在系统是否运行,HTTPS 检查则经过 DNS、Lucky 和 Homepage 上游。若代理检查异常,按上一节拆开排查;不能仅凭这一项判断一定是 Lucky 进程故障。证书续期状态仍在 Lucky 的证书管理与日志中确认。

六、配置备份与更新

本例配置目录为 /etc/lucky,包含服务规则与证书等数据。实际环境的安装目录由安装脚本决定;备份时按进程的配置参数找到完整目录。

bash
1
2
3
4
mkdir -p /srv/backups rc-service lucky stop tar -czf /srv/backups/lucky-backup.tar.gz -C /etc lucky rc-service lucky start

更新前保存备份,停止服务后替换 /usr/local/bin/lucky,保留配置目录,启动服务并复查一个 HTTP 和一个 HTTPS 入口。本文使用 Web 反代处理 HTTP 服务;其他协议的端口转发按对应协议单独配置。

参考

手机扫码阅读
本文作者: 有次元袋的 tiger
本文链接: https://www.superheaoz.top/2026/09/61054/
版权声明: 本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的个人天地