OpenDomain 是一个开源的二级域名分发平台,允许用户免费注册和管理二级域名,适用于:
- 🎓 学生学习与实验
- 💻 开发者测试项目
- 🏢 企业内部服务
- 🌐 个人博客与网站
- ✅ 完全免费 - 核心功能永久免费
- ✅ 易于使用 - 简洁直观的用户界面
- ✅ 强大灵活 - 支持多种 DNS 记录类型
- ✅ 高度可扩展 - 模块化设计,易于二次开发
- ✅ 开源透明 - MIT 协议,社区驱动
-
域名管理
- 🔍 实时域名可用性查询
- 📝 快速域名注册
- 🔄 自动/手动续期
- 📊 域名使用统计
-
DNS 管理
- ⚡ 支持 A、AAAA、CNAME、MX、TXT、NS、SRV、CAA 记录
- 🎛️ 可自定义 TTL
- 📥 批量导入/导出 DNS 配置
- 🔄 实时同步到 PowerDNS
-
账号系统
- 🔐 邮箱注册/登录
- 🌐 第三方登录(GitHub、Google、NodeLoc)
- 👤 实名认证(提升配额)
- 🏆 用户等级体系
-
优惠券系统
- 🎫 多种优惠券类型(配额券、VIP 券、续期券)
- 🎁 灵活的发放机制
- 📈 使用统计与分析
-
邀请机制
- 🔗 专属邀请链接
- 🎉 自动奖励发放
- 📊 邀请排行榜
- 💰 阶梯式奖励
- 公告管理
- 📰 新闻公告发布
- 📝 富文本编辑器
- 🏷️ 公告分类(系统/功能/维护/活动)
- ⭐ 公告置顶与优先级
- ⏰ 定时发布
- 💬 评论与点赞
- 📧 邮件订阅
- 🎯 首页轮播展示
- 全方位扫描
- 🔍 DNS 健康检测
- 🌐 HTTP 可访问性检测
- 🔒 SSL 证书检测
- ⚡ 响应时间监控
- 🛡️ 安全漏洞扫描
- 📊 内容合规检测
- 🚨 恶意链接识别
- 扫描管理
- ⏱️ 定时扫描任务
- 📋 扫描结果公开
- 🏆 域名健康排行
- 📈 扫描统计仪表板
- 🔔 问题自动通知
- 页面管理
- 📄 自定义页面创建
- ✏️ 富文本/Markdown 编辑
- 🎨 多种模板选择
- 🔄 版本历史与回滚
- 🧩 组件化设计
- 导航管理
- 🧭 顶部/页脚菜单配置
- 📂 多级菜单支持
- 🔀 拖拽排序
- SEO 优化
- 🏷️ Meta 标签管理
- 🗺️ Sitemap 生成
- 🔍 搜索引擎优化
- 全面的管理功能
- 👥 用户管理
- 🌐 根域名管理
- 🎫 优惠券管理
- 📋 工单处理
- 📰 公告管理
- 📄 页面管理
- 🔍 扫描任务管理
- 📊 数据统计
- ⚙️ 系统配置
- 🔒 JWT 认证
- 🚦 API 限流
- 🛑 敏感词过滤
- 📝 操作审计日志
- 🔐 敏感数据加密
- 🌐 HTTPS 支持
- 📮 邮件通知
- 💬 站内信
- ⏰ 到期提醒
- 🎊 奖励通知
┌─────────────────────────────────────────────────────┐
│ 用户层 │
│ Web 前台 │ 移动端 H5 │ 开放 API │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 接入层(Nginx) │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 应用层(微服务) │
│ 用户服务 │ 域名服务 │ DNS服务 │ 优惠券服务 │ 通知服务 │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 中间件层 │
│ Redis │ RabbitMQ │ 定时任务 │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 数据层 │
│ MySQL │ PowerDNS │ 对象存储 │
└─────────────────────────────────────────────────────┘
后端
- 🚀 语言: Go 1.21+
- ⚡ 框架: Gin
- 💾 数据库: PostgreSQL 15+
- 🔴 缓存: Redis 7.x
- 📨 任务队列: Asynq (Redis-based)
- 🌐 DNS: PowerDNS
- 📝 ORM: GORM
- 🔐 认证: golang-jwt/jwt
前端
- ⚡ 框架: Vue 3 + TypeScript
- 🎨 UI 库: Element Plus
- 📦 状态管理: Pinia
- 🛠️ 构建工具: Vite
- 🌐 HTTP 客户端: Axios
- ✏️ 富文本编辑器: TinyMCE / Quill
- 📝 Markdown 编辑器: vditor
DevOps
- 🐳 容器化: Docker + Docker Compose
- 📊 监控: Prometheus + Grafana
- 📝 日志: Zap / Logrus
- 🔄 CI/CD: GitHub Actions / GitLab CI
- Go >= 1.21
- PostgreSQL >= 15
- Redis >= 7.0
- Docker & Docker Compose(推荐)
# 1. 克隆项目
git clone https://github.com/your-username/opendomain.git
cd opendomain
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库、Redis 等信息
# 3. 启动所有服务
docker-compose up -d
# 4. 初始化数据库
docker-compose exec backend npm run db:migrate
docker-compose exec backend npm run db:seed
# 5. 访问应用
# 前台: http://localhost:3000
# 后台: http://localhost:3000/admin
# API: http://localhost:8000/api# 1. 克隆项目
git clone https://github.com/your-username/opendomain.git
cd opendomain
# 2. 安装 Go 依赖
go mod download
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 配置数据库连接信息
# 4. 运行数据库迁移
make migrate-up
# 5. 启动 API 服务
make run
# 或者直接运行
go run cmd/api/main.go
# 后端运行在 http://localhost:8000# 1. 进入前端目录
cd frontend
# 2. 安装依赖
npm install
# 3. 配置环境变量
cp .env.example .env
# 4. 启动开发服务器
npm run dev
# 前端运行在 http://localhost:3000# 1. 安装 PowerDNS
# Ubuntu/Debian
sudo apt-get install pdns-server pdns-backend-mysql
# 2. 配置 PowerDNS
sudo vi /etc/powerdns/pdns.conf
# 添加以下配置
api=yes
api-key=your-secret-api-key
webserver=yes
webserver-address=0.0.0.0
webserver-port=8081
# 3. 重启 PowerDNS
sudo systemctl restart pdns
# 4. 在 .env 中配置 PowerDNS API
POWERDNS_API_URL=http://localhost:8081
POWERDNS_API_KEY=your-secret-api-key详细文档请查看以下文件:
启动后端服务后,访问 Swagger 文档:
http://localhost:8000/api/docs
- 项目规划与文档
- 用户认证系统
- 基础后台管理
- 域名注册与管理
- DNS 记录管理
- PowerDNS 集成
- 优惠券系统
- 邀请机制
- 通知系统
- 开放 API
- 域名监控
- 域名市场
详细路线图请查看 ROADMAP.md
我们欢迎所有形式的贡献!
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
- 遵循 ESLint 代码规范
- 编写清晰的提交信息
- 为新功能添加测试
- 更新相关文档
详细信息请查看 CONTRIBUTING.md
OpenDomain/
├── cmd/ # 应用程序入口
│ ├── api/ # API 服务
│ │ └── main.go
│ ├── worker/ # 后台任务
│ │ └── main.go
│ └── scanner/ # 域名扫描服务
│ └── main.go
├── internal/ # 内部包(不可被外部引用)
│ ├── config/ # 配置管理
│ ├── models/ # 数据模型
│ ├── repository/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ │ ├── user/
│ │ ├── domain/
│ │ ├── dns/
│ │ ├── coupon/
│ │ ├── invitation/
│ │ ├── announcement/ # 公告服务
│ │ ├── page/ # 自定义页面服务
│ │ └── scanner/ # 域名扫描服务
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件
│ ├── pkg/ # 内部工具包
│ └── router/ # 路由配置
├── pkg/ # 公共库(可被外部引用)
│ ├── powerdns/ # PowerDNS 客户端
│ ├── email/ # 邮件服务
│ └── utils/ # 通用工具
├── web/ # 前端代码
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 通用组件
│ │ ├── stores/ # 状态管理
│ │ ├── router/ # 路由配置
│ │ ├── api/ # API 请求
│ │ └── utils/ # 工具函数
│ └── package.json
├── migrations/ # 数据库迁移
│ ├── 000001_init_schema.up.sql
│ └── 000001_init_schema.down.sql
├── scripts/ # 脚本工具
├── deploy/ # 部署配置
│ ├── docker/
│ └── k8s/
├── docs/ # 文档
│ ├── swagger/ # API 文档
│ ├── REQUIREMENTS.md # 需求文档
│ ├── ARCHITECTURE.md # 架构设计
│ ├── DATABASE.md # 数据库设计
│ ├── ROADMAP.md # 路线图
│ ├── GO_STACK.md # Go 技术栈
│ └── FEATURES.md # 功能清单
├── .env.example
├── .gitignore
├── Dockerfile
├── docker-compose.yml
├── Makefile
├── go.mod
├── go.sum
└── README.md
# 应用配置
APP_ENV=development
PORT=8000
LOG_LEVEL=debug
# 数据库(PostgreSQL)
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=opendomain
DB_SSL_MODE=disable
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
# JWT
JWT_SECRET=your-jwt-secret-key-change-this
JWT_EXPIRES_IN=2 # hours
# PowerDNS
POWERDNS_API_URL=http://localhost:8081
POWERDNS_API_KEY=your-api-key
# 邮件服务
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=[email protected]
MAIL_PASSWORD=your-password
MAIL_FROM=[email protected]
# OAuth (可选)
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# 扫描配置
SCANNER_CONCURRENCY=10
SCANNER_TIMEOUT=30 # secondsVITE_API_BASE_URL=http://localhost:8000/api
VITE_APP_TITLE=OpenDomain# 后端单元测试
cd backend
npm run test
# 后端 E2E 测试
npm run test:e2e
# 前端单元测试
cd frontend
npm run test
# 测试覆盖率
npm run test:cov- ⚡ API 响应时间: < 200ms (P95)
- 🚀 DNS 记录同步: < 5s
- 💾 数据库查询: < 100ms
- 🔄 并发支持: 1000+ QPS
- Redis 缓存热点数据
- 数据库索引优化
- 异步任务队列
- CDN 静态资源加速
- 🔒 密码加密存储(bcrypt)
- 🔐 JWT Token 认证
- 🚦 API 请求限流
- 🛑 SQL 注入防护
- 🌐 XSS/CSRF 防护
- 📝 操作日志审计
如果您发现安全漏洞,请发送邮件至 [email protected],请勿公开披露。
本项目采用 MIT 许可证。
- GitHub Discussions
- QQ 群: 123456789
- Telegram: @opendomain
感谢所有为 OpenDomain 做出贡献的开发者!
特别感谢以下开源项目:
- 🌐 官网: https://www.nodeloc.com
- 💼 GitHub: @opendomain
如果这个项目对您有帮助,请给我们一个 ⭐️
Made with ❤️ by NodeLoc Team