本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 3 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。

它是什么

Lucky 是国内常用的「网络瑞士军刀」:反向代理、端口转发(STUN/内网穿透)、动态域名(DDNS)、ACME 证书申请、Web 服务托管,全部在一个 Web 面板里完成。

很多人用它替代 Nginx Proxy Manager,配合家里没有公网 IP 的场景做内网穿透。

前置条件

  • 一台 Linux 服务器(1C512M 起);
  • 已安装 Docker 与 Compose v2;
  • 需要 DDNS 的话,准备好域名与 DNS 服务商的 API Key。
curl -fsSL https://get.docker.com | sh
mkdir -p /srv/docker/active/lucky && cd /srv/docker/active/lucky

镜像地址

gdy666/lucky:v2

目录结构

/srv/docker/active/lucky/
├── docker-compose.yml
└── conf/                 # 所有配置、证书、规则

部署步骤

# docker-compose.yml
services:
  lucky:
    image: gdy666/lucky:v2
    container_name: lucky
    restart: always
    network_mode: host
    volumes:
      - ./conf:/app/conf
      # 可选:需要面板管理容器时再挂
      - /var/run/docker.sock:/var/run/docker.sock
docker compose up -d
docker compose logs -f --tail=100

浏览器打开 http://<SERVER_IP>:16601(默认端口,以版本为准),首次进入设置管理员密码。

关键配置

项 说明
network_mode: host 直接使用宿主端口,无需 ports 映射;反代 80/443 时要注意冲突
./conf 全部配置与证书,唯一需要备份的目录
docker.sock 仅「容器管理」功能需要,风险见下

注意事项

  • docker.sock 是高危项:挂了它,Lucky 面板被攻破等于宿主 root。不需要容器管理就删掉这行;
  • host 网络下 80/443 与 Nginx/NPM/雷池冲突,先确认端口占用;
  • 证书私钥存在 conf/ 里,备份文件要按机密数据管理;
  • DDNS 的 API Key、STUN 配置都在 conf/,别把目录共享出去;
  • 面板本身有登录密码,务必改掉默认值并只对内网开放。

备份与升级

# 备份配置
tar czf "lucky-conf-$(date +%F).tar.gz" ./conf

# 升级
docker compose pull
docker compose up -d

# 回滚:tag 改回旧版本再 up -d
  • 跨大版本升级前先备份,并把旧镜像留着备用。