Skip to content

marsdai/askdb

Repository files navigation

AskDB - 开源数据库技术社区

AskDB Logo License Docker Discourse

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

访问服务

🏗️ 项目架构

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                  # 项目说明

🔧 配置说明

环境变量 (.env)

# 基础配置
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 缓存

📊 监控系统

预配置仪表板

  1. 系统概览: CPU、内存、磁盘使用率
  2. 数据库监控: PostgreSQL 连接数、查询性能
  3. 应用监控: Discourse 请求数、响应时间
  4. 业务监控: 用户活跃度、帖子数量

告警配置

编辑 monitoring/datasources/prometheus.yml 配置告警规则。

🔒 安全特性

生产环境建议

  1. 防火墙: 只开放必要端口
  2. SSL/TLS: 强制 HTTPS 连接
  3. 安全头: 配置 CSP、X-Frame-Options 等
  4. 访问控制: 限制管理接口访问
  5. 定期更新: 保持系统和镜像更新

备份策略

# 手动备份
./scripts/backup.sh

# 自动备份(添加到 crontab)
0 2 * * * /path/to/askdb/scripts/backup.sh

🚀 开发指南

自定义主题

  1. 编辑 themes/askdb-theme/ 中的文件
  2. 在 Discourse 管理界面启用主题
  3. 实时预览更改

添加新功能

  1. 新分类: 在 Discourse 中创建,然后更新首页模板
  2. 新工具: 在 templates/home/full-index.html 中添加
  3. 新集成: 在主题 JavaScript 中添加 API 集成

扩展监控

  1. 编辑 monitoring/dashboards/ 中的仪表板
  2. 添加新的数据源到 monitoring/datasources/
  3. 配置告警规则

🤝 贡献指南

报告问题

  1. GitHub Issues 提交问题
  2. 提供详细的复现步骤和环境信息
  3. 附上相关日志和截图

提交代码

  1. Fork 仓库
  2. 创建功能分支
  3. 提交更改
  4. 创建 Pull Request

代码规范

  • 遵循现有代码风格
  • 添加必要的注释
  • 更新相关文档
  • 包含测试用例

📚 学习资源

官方文档

外部资源

社区支持

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

核心技术

贡献者

感谢所有为 AskDB 项目做出贡献的开发者!

📞 联系方式

🌐 相关链接


欢迎加入 AskDB 社区,一起构建最好的数据库技术交流平台! 🚀

Star History Chart

About

开源数据库技术社区 - 基于Discourse的现代化数据库论坛

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors