这是一个基于 Flask 和 jQuery 构建的轻量级 Web 应用,旨在提供一个统一的界面,用于集中管理来自多个云服务商(当前支持阿里云、腾讯云、Cloudflare)的 DNS 解析记录。
This is a lightweight web application built with Flask and jQuery, designed to provide a unified interface for managing DNS records from multiple cloud providers (currently supporting Aliyun, Tencent Cloud, and Cloudflare).
- 多云支持: 统一管理阿里云、腾讯云、Cloudflare 的 DNS 解析记录。
- Web 界面配置: 无需修改代码,直接在网页上安全地配置和测试各平台的 API 凭证。
- 本地数据缓存: 所有解析记录缓存在本地 SQLite 数据库中,访问速度快,减少 API 请求。
- 分组与过滤:
- 按主域名分组,以卡片形式清晰展示。
- 按记录类型 (A, CNAME, TXT 等) 快速筛选。
- 自定义视图: 用户可以选择性地显示或隐藏不同的数据列(如 TTL、状态等),并保存偏好设置。
- 完整的 CRUD 操作: 支持对解析记录的增、删、改、查操作。
- Docker 快速部署: 提供
Dockerfile和docker-compose.yml,实现一键部署和持久化数据。 - 安全登录: 通过管理员账号密码保护面板访问。
- 后端 (Backend): Flask
- 前端 (Frontend): HTML, CSS, jQuery, Bootstrap 5, DataTables
- 数据库 (Database): SQLite 3
- 部署 (Deployment): Docker / Docker Compose
我们提供两种部署方式:本地直接运行和 Docker 部署(推荐)。
-
克隆项目
git clone <your-repository-url> cd dns-manager
-
创建并激活虚拟环境 (推荐)
python -m venv venv # Windows .\venv\Scripts\activate # macOS / Linux source venv/bin/activate
-
安装依赖
pip install -r requirements.txt
-
启动应用
# 在 Windows 上,端口 500 可能需要管理员权限 python app.py # 在 macOS / Linux 上,使用低于 1024 的端口需要 sudo sudo python app.py
应用将在
http://127.0.0.1:500上运行。
这是最推荐的部署方式,可以保证环境一致性和数据持久化。
-
克隆项目
git clone <your-repository-url> cd dns-manager
-
使用
docker-compose一键启动 (最简单) 在项目根目录下创建一个docker-compose.yml文件:version: '3.8' services: web: build: . container_name: dns-app ports: - "500:500" volumes: - ./data:/app
然后运行:
docker-compose up -d
-
或者,手动构建和运行 Docker 容器
# 1. 构建 Docker 镜像 docker build -t dns-manager . # 2. 运行容器,并将数据持久化到本地的 data 目录 # Windows (CMD) docker run -d -p 500:500 --name dns-app -v "%cd%/data:/app" dns-manager # Windows (PowerShell) docker run -d -p 500:500 --name dns-app -v "${PWD}/data:/app" dns-manager # macOS / Linux docker run -d -p 500:500 --name dns-app -v "$(pwd)/data:/app" dns-manager
- 访问应用: 打开浏览器,访问
http://127.0.0.1:500。 - 登录: 使用默认管理员凭证登录:
- 用户名:
admin - 密码:
123456
- 用户名:
- 配置授权:
- 首次登录后,点击右上角的 "⚙️ 配置授权" 按钮。
- 在配置页面填入您在各个云平台的 API 凭证,然后点击 "保存所有配置"。您可以使用 "测试连接" 按钮来验证凭证是否有效。
- 同步记录:
- 返回主页,点击右上角的 "🔄 刷新缓存" 按钮。
- 应用将从您已配置的所有云平台拉取 DNS 记录并存入本地数据库。
- 日常操作:
- 使用顶部的按钮按记录类型筛选。
- 点击 "显示列" 按钮自定义表格视图。
- 在每个域名卡片内的搜索框中搜索特定记录。
- 点击 "编辑" 或 "删除" 按钮管理记录。
为了保证安全,建议为本应用创建独立的、权限受限的子账号或 API Token。
- 阿里云: 创建 RAM 子账号,并授予
AliyunDNSFullAccess权限。 - 腾讯云: 创建子用户,并授予
QcloudDNSPodFullAccess权限。 - Cloudflare:
- 前往 "My Profile" -> "API Tokens" -> "Create Token"。
- 使用 "Edit zone DNS" 模板创建一个 API Token。
- 在 "Zone Resources" 部分,选择 "All zones" 或您希望管理的特定区域。
dns-manager/
├── Dockerfile # Docker 镜像构建文件
├── app.py # Flask 后端主程序
├── requirements.txt # Python 依赖列表
├── static/ # 存放本地 JS/CSS 文件
│ └── js/
└── templates/ # 存放 HTML 前端文件
├── index.html
├── login.html
└── settings.html



