本项目是一个用于 Let’s Encrypt DNS-01 验证的专用 DNS 服务器,支持通过 API 和 Web 管理 TXT/CNAME 记录,适合自动化证书申请场景。
config/config.jsongo mod tidy
config/config.json
{
"api_key": "your-api-key",
"dns_port": ":53",
"web_port": ":8080",
"log_file": "dns_query.log",
"record_ttl": 1,
"record_max_age": 10800
}
go run .
POST /api/record Header: X-API-KEY: your-api-key Body: {"domain":"_acme-challenge.example.com","type":"TXT","value":"xxxx"}
GET /api/record/:domain/:type Header: X-API-KEY: your-api-key
DELETE /api/record/:domain/:type Header: X-API-KEY: your-api-key
GET /api/records Header: X-API-KEY: your-api-key
http://localhost:8080/login,输入 API Key 登录dig @127.0.0.1 _acme-challenge.example.com TXT
dns_query.log,格式:
2025-11-08T10:02:17+08:00 QUERY: _acme-challenge.example.com. TYPE: TXT VALUE: xxxx
├── cmd/ # 主程序入口(可选) ├── config/ # 配置文件 ├── internal/ │ ├── api/ # API 控制器 │ ├── dns/ # DNS 服务器 │ ├── logger/ # 日志模块 │ ├── store/ # 内存存储 │ └── web/ # Web 管理 ├── main.go # 启动入口 ├── go.mod
如有问题或建议欢迎反馈!