详细的部署教程和使用说明请参考以下文章(文章发布后会更新链接):
Auto ESA DNS 是一个自动化工具,用于将 Lucky 代理域名自动同步到阿里云 ESA(Edge Site Accelerator)DNS 服务。该工具通过定时任务监控 Lucky 的规则变化,当检测到新增规则时,自动在 ESA 中创建对应的 DNS 解析记录,并可选择性地将解析记录同步到阿里云或腾讯云的 DNS 服务。
- ✅ 定时监控 Lucky 规则变化
- ✅ 自动创建 ESA DNS 解析记录
- ✅ 支持自动同步到阿里云/腾讯云 DNS
- ✅ Web 界面配置管理
- ✅ 实时日志查看
- ✅ Docker 一键部署
autoEsaDns/
├── docker-compose.yml # Docker Compose 配置文件
├── Dockerfile # Docker 镜像构建文件
├── nginx-main.conf # Nginx 主配置文件
├── qrcode.jpg # 公众号二维码图片
├── README.md # 项目说明文档(本文件)
├── server/ # 后端服务目录
│ ├── app.js # Express 应用入口文件
│ ├── config-utill.js # 配置文件工具函数
│ ├── config.json # 应用配置文件
│ ├── esa-dns-service.js # ESA DNS 服务封装类
│ ├── logger.js # 日志工具模块
│ ├── package.json # Node.js 依赖配置
│ ├── package-lock.json # 依赖锁定文件
│ ├── scheduler.js # 定时任务调度器
│ ├── router/ # 路由目录
│ │ └── config.js # 配置管理路由
│ └── nsdAnalysis/ # DNS 解析服务目录
│ ├── index.js # DNS 解析服务入口
│ ├── ali.js # 阿里云 DNS 服务
│ └── tencent.js # 腾讯云 DNS 服务
└── web/ # 前端静态文件目录
└── index.html # Web 管理界面
- Docker 和 Docker Compose 已安装
- 已获取阿里云 ESA 的 AccessKey 和 SecretKey
- 已配置 Lucky 服务并获取 OpenToken
- (可选)已配置阿里云或腾讯云 DNS 服务的密钥
version: '3.8'
services:
sync-lucky-to-esa:
image: ghcr.io/tt-haogege/sync-lucky-to-esa
ports:
- "8036:80"
服务启动后,访问以下地址打开 Web 管理界面:
http://localhost:8036
如果不使用 Docker Compose,也可以直接使用 Docker 命令:
docker pull ghcr.io/tt-haogege/sync-lucky-to-esadocker run -d \
--name sync-lucky-to-esa \
-p 8036:80 \
ghcr.io/tt-haogege/sync-lucky-to-esa- lucky_url: Lucky 服务的完整地址(包含协议和端口)
- lucky_cron_time: Cron 表达式,定义定时任务的执行频率
- 示例:
0 */2 * * * *表示每 2 分钟执行一次 - 格式:
秒 分 时 日 月 周
- 示例:
- lucky_open_token: Lucky 的 OpenToken,用于 API 认证
- esa_access_key_id: 阿里云 AccessKey ID
- esa_access_key_secret: 阿里云 AccessKey Secret
- esa_region_id: ESA 服务区域(如:cn-hangzhou)
- esa_domain: ESA 域名(可选,如果配置了会自动添加到记录名)
- esa_site_id: ESA 站点 ID
- esa_target_value: 目标值模板(用于生成 CNAME 目标值)
- esa_host_policy: 主机策略(follow_hostname/ip_hash/least_conn)
- esa_target_value_function: 自定义目标值生成函数(JavaScript 代码字符串)
- esa_dns_analysis: 是否启用 DNS 解析同步(true/false)
- esa_dns_provider: DNS 服务商(ali/tencent)
阿里云 DNS 配置:
- ali_dns_region_id: 阿里云 DNS 区域 ID
- ali_dns_domain: 阿里云 DNS 域名
腾讯云 DNS 配置:
- tencent_dns_secret_id: 腾讯云 SecretId
- tencent_dns_secret_key: 腾讯云 SecretKey
- tencent_dns_region: 腾讯云 DNS 区域
- tencent_dns_domain: 腾讯云 DNS 域名
- 访问
http://localhost:8036打开管理界面 - 在配置表单中填写各项配置
- 点击"保存配置"按钮
- 配置会自动保存并重新加载定时任务
服务启动后会自动启动定时任务,根据 lucky_cron_time 配置的频率执行:
- 从 Lucky API 获取规则列表
- 对比上次获取的规则,检测新增规则
- 为新增规则自动创建 ESA DNS 记录
- (可选)如果启用了 DNS 解析同步,会将 ESA 返回的 CNAME 值同步到阿里云或腾讯云 DNS
在 Web 界面可以:
- 实时查看日志列表
- 按级别过滤日志
- 查看日志统计信息
- 清空日志
- 网络连接:确保容器可以访问 Lucky 服务和阿里云/腾讯云 API
- 时区设置:容器已设置为东八区(北京时间),日志时间以该时区为准
- 规则过滤:如果 Lucky 规则的备注中包含
_no_esa,该规则会被跳过,不会创建 DNS 记录 - 端口冲突:如果 8036 端口被占用,可以在
docker-compose.yml中修改端口映射
- 初始版本发布
- 支持 Lucky 规则自动同步到 ESA DNS
- 支持阿里云和腾讯云 DNS 解析同步
- Web 界面配置管理
- 实时日志查看
本项目采用 MIT 许可证。
感谢所有为开源社区做出贡献的开发者!
