AskDB 是一个专注于数据库技术的开源社区平台,基于 Discourse 构建,提供完整的数据库技术讨论、学习和分享环境。
- 一键部署: 使用 Docker Compose 快速启动
- 生产就绪: 包含 SSL、监控、备份等生产环境配置
- 可扩展: 模块化架构,易于定制和扩展
- 分类讨论区: SQL、NoSQL、数据仓库、性能优化等专业分类
- 代码示例: 丰富的数据库代码示例和最佳实践
- 工具集成: SQL 格式化、查询分析等实用工具
- 响应式设计: 完美适配桌面和移动设备
- 暗色主题: 支持系统级暗色模式
- 动画效果: 平滑的过渡和交互动画
- 实时统计: 动态更新的社区数据
- 监控系统: Grafana 仪表板和告警
- 备份恢复: 自动备份和数据恢复
- 测试套件: 完整的部署测试和验证
- 安全配置: SSL、安全头、访问控制
- Docker 20.10+
- Docker Compose 2.0+
- 4GB+ 内存
- 20GB+ 磁盘空间
# 1. 克隆仓库
git clone https://github.com/marsdai/askdb.git
cd askdb
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置你的配置
# 3. 一键部署
chmod +x scripts/*.sh
./scripts/setup.sh
# 4. 配置 SSL(可选)
./scripts/generate-ssl.sh forum.yourdomain.com admin@example.com letsencrypt- 论坛: http://localhost:8080
- 监控面板: http://localhost:3000 (admin/密码在 .env 中)
- API 文档: http://localhost:8080/docs
askdb/
├── docker-compose.yml # Docker 编排配置
├── nginx/ # Nginx 反向代理配置
│ └── nginx.conf # 生产级 Nginx 配置
├── scripts/ # 部署和管理脚本
│ ├── setup.sh # 一键部署脚本
│ ├── backup.sh # 数据备份脚本
│ ├── restore.sh # 数据恢复脚本
│ ├── generate-ssl.sh # SSL 证书生成
│ └── test.sh # 系统测试脚本
├── init-db/ # 数据库初始化
│ ├── 01-create-extensions.sql # PostgreSQL 扩展
│ └── 02-create-database-examples.sql # 数据库示例
├── themes/ # Discourse 主题
│ └── askdb-theme/ # 自定义主题
│ ├── about.json # 主题元数据
│ ├── desktop/ # 桌面样式
│ └── javascripts/ # 前端增强
├── templates/ # HTML 模板
│ └── home/ # 首页模板
│ └── full-index.html # 完整首页
├── monitoring/ # 监控配置
│ ├── dashboards/ # Grafana 仪表板
│ └── datasources/ # 数据源配置
├── docs/ # 文档
│ └── deployment.md # 详细部署指南
├── .env.example # 环境变量模板
├── Makefile # 简化管理命令
├── package.json # 项目元数据
└── README.md # 项目说明
# 基础配置
DISCOURSE_HOSTNAME=forum.yourdomain.com
DISCOURSE_DEVELOPER_EMAILS=admin@example.com
# 数据库配置
POSTGRES_PASSWORD=your_secure_password
REDIS_PASSWORD=your_secure_redis_password
# 邮件配置
DISCOURSE_SMTP_ADDRESS=smtp.gmail.com
DISCOURSE_SMTP_USER_NAME=your_email@gmail.com
DISCOURSE_SMTP_PASSWORD=your_app_password
# 监控配置
GRAFANA_PASSWORD=admin- 8080: Discourse 论坛
- 3000: Grafana 监控
- 5432: PostgreSQL 数据库
- 6379: Redis 缓存
- 系统概览: CPU、内存、磁盘使用率
- 数据库监控: PostgreSQL 连接数、查询性能
- 应用监控: Discourse 请求数、响应时间
- 业务监控: 用户活跃度、帖子数量
编辑 monitoring/datasources/prometheus.yml 配置告警规则。
- 防火墙: 只开放必要端口
- SSL/TLS: 强制 HTTPS 连接
- 安全头: 配置 CSP、X-Frame-Options 等
- 访问控制: 限制管理接口访问
- 定期更新: 保持系统和镜像更新
# 手动备份
./scripts/backup.sh
# 自动备份(添加到 crontab)
0 2 * * * /path/to/askdb/scripts/backup.sh- 编辑
themes/askdb-theme/中的文件 - 在 Discourse 管理界面启用主题
- 实时预览更改
- 新分类: 在 Discourse 中创建,然后更新首页模板
- 新工具: 在
templates/home/full-index.html中添加 - 新集成: 在主题 JavaScript 中添加 API 集成
- 编辑
monitoring/dashboards/中的仪表板 - 添加新的数据源到
monitoring/datasources/ - 配置告警规则
- 在 GitHub Issues 提交问题
- 提供详细的复现步骤和环境信息
- 附上相关日志和截图
- Fork 仓库
- 创建功能分支
- 提交更改
- 创建 Pull Request
- 遵循现有代码风格
- 添加必要的注释
- 更新相关文档
- 包含测试用例
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Discourse - 开源论坛平台
- Docker - 容器化平台
- PostgreSQL - 关系型数据库
- Redis - 内存数据存储
- Grafana - 监控和可视化
感谢所有为 AskDB 项目做出贡献的开发者!
- 项目维护者: marsdai
- 问题反馈: GitHub Issues
- 社区讨论: GitHub Discussions
- 邮件联系: community@askdb.community
欢迎加入 AskDB 社区,一起构建最好的数据库技术交流平台! 🚀