LiteDNS 是一个轻量、自托管的域名与 DNS 运维平台,聚焦于“多供应商账号统一管理 + 解析记录可视化维护 + DDNS 自动更新 + 日志审计”。
适合个人开发者、小团队和中小业务场景,用一套控制台管理分散在不同 DNS 服务商的域名资产。
- 统一域名资产管理
- 聚合展示域名、到期时间、状态与续费入口。
- 支持按供应商筛选与分页浏览。
- DNS 解析记录管理
- 支持常见记录类型(A/CNAME/MX/TXT 等)的查看、编辑与删除。
- 解析记录与远端供应商可同步。
- DDNS 动态域名任务
- 支持周期执行与手动触发。
- 支持公网 IP 检测与自动更新解析记录。
- 供应商账号管理
- 内置阿里云、Cloudflare 适配能力(可扩展)。
- 系统日志与审计
- 记录 DDNS 执行、操作行为与异常信息,支持按条件查询。
- 家庭 NAS / Homelab 的动态公网 IP 绑定。
- 统一管理多个项目域名的解析记录。
- 监控即将到期域名并快速跳转续费。
- 团队内对 DNS 变更进行留痕审计。
- Backend: Go + Gin
- Frontend: Vue 3 + Vite + Tailwind CSS
- Database: SQLite
- Deploy: Docker / Docker Compose
cmd/litedns: 后端入口internal: 后端核心模块frontend: Web 控制台源码configs: 配置示例scripts: 本地开发与构建脚本Dockerfile: 容器镜像构建文件docs: 架构与设计文档
./scripts/dev.sh- 同时启动后端服务(Go)和前端开发服务(Vite)。
- 默认读取
configs/config.local.yaml(若不存在会自动由configs/config.example.yaml生成)。
./scripts/dev.sh --master-key "<BASE64_32_BYTE_KEY>"- 指定自定义
LITEDNS_MASTER_KEY,并同时启动前后端。
- 指定自定义
- 强制重置 admin 密码:
- 在项目根目录创建
configs/admin-password,文件内容写入新密码后启动服务。 - 启动时若文件密码与数据库不一致,会强制更新 admin 密码、吊销已有登录会话,并尝试删除该文件。
- 密码文件为空或少于 8 个字符时启动失败。
- 在项目根目录创建
./scripts/build.sh- 构建前端静态资源到
frontend/dist,并编译后端到bin/litedns。
- 构建前端静态资源到
make build- 等价于执行
./scripts/build.sh。
- 等价于执行
make docker-build- 先执行完整构建,再打包前后端一体化镜像
litedns:latest。
- 先执行完整构建,再打包前后端一体化镜像
docker run --rm -p 18080:8080 -e LITEDNS_MASTER_KEY="<BASE64_32_BYTE_KEY>" litedns:latest- 运行一体化镜像。
make docker-up- 使用
docker-compose.yaml启动容器。
- 使用
make docker-down- 停止并清理 Compose 服务。
- Compose 部署变量:
LITEDNS_IMAGE:镜像名,默认litedns:latestLITEDNS_CONFIG_DIR:宿主机配置目录,默认./configs;容器内读取/app/configs/config.yamlLITEDNS_DATA_DIR:宿主机数据目录,默认./dataLITEDNS_HTTP_PORT:宿主机映射端口,默认18080LITEDNS_SERVER_TRUSTED_PROXIES:可选,逗号分隔的代理 CIDR/IP(例如172.18.0.0/16,127.0.0.1)LITEDNS_MASTER_KEY:必填,Base64 编码的 32 字节主密钥
- Docker 一次性重置 admin 密码:
- 将宿主机密码文件放入配置目录并挂载到
/app/configs/admin-password,文件内容为新密码。 - 重置成功后容器会尝试删除该文件;如果挂载为只读导致删除失败,服务仍会启动并在日志中提示。
- 将宿主机密码文件放入配置目录并挂载到
以下路径已预留在仓库中:docs/screenshots/。可将截图按同名文件放入后直接在 README 展示。





