AppFlowy-Cloud部署指南:Docker Compose与生产环境配置
还在为Notion替代方案的数据安全和定制化需求而烦恼吗?AppFlowy-Cloud作为开源协作平台的核心后端,提供了完整的自托管解决方案。本文将深入解析基于Docker Compose的生产级部署策略,助你快速搭建企业级知识管理平台。
🎯 部署前准备:环境要求与依赖检查
硬件资源配置
| 资源类型 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 内存 | 2GB | 4GB+ | 确保协作服务稳定运行 |
| 存储 | 16GB | 32GB+ | 文档和文件存储空间 |
| CPU | 2核 | 4核+ | 处理实时协作请求 |
软件依赖清单
# 验证Docker Compose版本
docker compose version
# 输出示例:Docker Compose version v2.23.3
# 检查端口占用情况
sudo lsof -i :80 -i :443 -i :5432 -i :6379
🚀 快速部署:五步搭建生产环境
步骤1:获取源码与初始化配置
# 克隆官方仓库
git clone https://gitcode.com/GitHub_Trending/ap/AppFlowy-Cloud
cd AppFlowy-Cloud
# 复制环境配置模板
cp deploy.env .env
步骤2:关键环境变量配置详解
基础网络配置
# 域名配置(生产环境必须修改)
FQDN=your-domain.com
SCHEME=https
WS_SCHEME=wss
# 应用基础URL
APPFLOWY_BASE_URL=${SCHEME}://${FQDN}
APPFLOWY_WEBSOCKET_BASE_URL=${WS_SCHEME}://${FQDN}/ws/v2
数据库与缓存配置
# PostgreSQL配置
POSTGRES_HOST=postgres
POSTGRES_USER=appflowy_prod
POSTGRES_PASSWORD=SecurePassword123!
POSTGRES_PORT=5432
POSTGRES_DB=appflowy_production
# Redis配置
REDIS_HOST=redis
REDIS_PORT=6379
文件存储配置(MinIO)
# MinIO对象存储
MINIO_HOST=minio
MINIO_PORT=9000
AWS_ACCESS_KEY=your-minio-access-key
AWS_SECRET=your-minio-secret-key
# S3存储配置
APPFLOWY_S3_USE_MINIO=true
APPFLOWY_S3_CREATE_BUCKET=false # 生产环境建议手动创建bucket
APPFLOWY_S3_BUCKET=appflowy-prod
身份认证安全配置
# JWT密钥(必须修改!)
GOTRUE_JWT_SECRET=YourSecureJWTSecretKey2024!
# 管理员账户
GOTRUE_ADMIN_EMAIL=admin@your-company.com
GOTRUE_ADMIN_PASSWORD=AdminSecurePassword!
# 注册控制
GOTRUE_DISABLE_SIGNUP=false # 生产环境建议设为true
GOTRUE_MAILER_AUTOCONFIRM=false # 要求邮箱验证
步骤3:Docker Compose服务架构解析
步骤4:启动完整服务栈
# 构建并启动所有服务
docker compose up -d --build
# 监控服务状态
docker compose logs -f --tail=50
# 验证服务健康状态
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
步骤5:服务验证与监控
# 检查关键服务健康状态
curl -f http://localhost/health || echo "Health check failed"
# 监控日志输出
docker compose logs appflowy_cloud --tail=100 -f
# 数据库连接测试
docker exec -it appflowy-cloud-postgres-1 psql -U postgres -d postgres -c "\l"
🔧 生产环境高级配置
SSL证书配置
# 替换默认SSL证书(位于nginx/ssl/目录)
cp your-domain.crt nginx/ssl/certificate.crt
cp your-domain.key nginx/ssl/private_key.key
# 重启Nginx服务
docker compose restart nginx
数据库持久化与备份
# 在docker-compose.yml中确保卷配置
volumes:
postgres_data:
driver: local
minio_data:
driver: local
# 数据库备份脚本示例
#!/bin/bash
docker exec -t appflowy-cloud-postgres-1 pg_dump -U postgres -d postgres > backup_$(date +%Y%m%d).sql
性能优化配置
# 数据库连接池优化
APPFLOWY_DATABASE_MAX_CONNECTIONS=50
# WebSocket性能调优
APPFLOWY_WEBSOCKET_MAILBOX_SIZE=10000
# Redis连接配置
APPFLOWY_REDIS_URI=redis://redis:6379/0?timeout=30
🛡️ 安全加固指南
网络隔离策略
# 在docker-compose.yml中添加网络配置
networks:
appflowy_network:
driver: bridge
internal: true # 限制外部访问
# 为每个服务指定网络
services:
postgres:
networks:
- appflowy_network
身份认证增强
# 强制使用安全密码策略
GOTRUE_PASSWORD_MIN_LENGTH=12
GOTRUE_SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTH=true
# 会话管理
GOTRUE_JWT_EXP=3600 # 1小时过期
GOTRUE_REFRESH_TOKEN_REUSE_INTERVAL=3600
监控与日志管理
# 启用详细日志记录
RUST_LOG=info,actix_web=info,sqlx=warn
# 日志轮转配置
docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3
📊 运维监控与故障排除
健康检查端点
| 服务 | 健康检查URL | 预期响应 |
|---|---|---|
| AppFlowy Cloud | /api/health | HTTP 200 |
| GoTrue | /gotrue/health | HTTP 200 |
| PostgreSQL | TCP 5432 | 连接成功 |
| Redis | TCP 6379 | PONG响应 |
常见问题排查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 502 Bad Gateway | Nginx配置错误 | 检查upstream服务状态 |
| 数据库连接超时 | 连接池耗尽 | 调整max_connections |
| 文件上传失败 | MinIO权限问题 | 验证S3凭证配置 |
| WebSocket断开 | 防火墙限制 | 检查WebSocket代理配置 |
性能监控指标
# 监控数据库性能
docker exec -it appflowy-cloud-postgres-1 psql -U postgres -c "SELECT * FROM pg_stat_activity;"
# Redis内存使用情况
docker exec -it appflowy-cloud-redis-1 redis-cli info memory
# 容器资源使用
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
🔄 升级与维护策略
版本升级流程
# 1. 拉取最新镜像
docker compose pull
# 2. 备份数据库
docker exec -t appflowy-cloud-postgres-1 pg_dump -U postgres -d postgres > backup_pre_upgrade.sql
# 3. 停止服务并更新
docker compose down
git pull origin main
# 4. 重新启动
docker compose up -d --build
# 5. 验证升级
docker compose logs --tail=100
自动化维护脚本
#!/bin/bash
# 每日维护任务:备份、清理、监控
BACKUP_DIR="/opt/backups/appflowy"
mkdir -p $BACKUP_DIR
# 数据库备份
docker exec -t appflowy-cloud-postgres-1 pg_dump -U postgres -d postgres | gzip > $BACKUP_DIR/backup_$(date +%Y%m%d).sql.gz
# 清理旧备份(保留最近7天)
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
# 日志文件清理
docker exec -it appflowy-cloud-appflowy_cloud-1 find /app/logs -name "*.log" -mtime +30 -delete
🎯 部署成功验证清单
完成部署后,请逐一验证以下项目:
- 通过浏览器访问
https://your-domain.com显示登录页面 - 管理员账户能够成功登录管理后台 (
/console) - 文件上传下载功能正常运作
- 实时协作编辑功能测试通过
- 数据库持久化数据完整保存
- SSL证书有效且浏览器显示安全连接
- 所有健康检查端点返回200状态码
- 监控告警系统正常接收指标数据
💡 最佳实践总结
- 安全第一:始终修改默认凭证,启用HTTPS,配置防火墙规则
- 监控先行:部署前建立完整的监控体系,包括日志、指标、告警
- 备份为重:建立定期备份机制,测试恢复流程
- 渐进部署:先在测试环境验证,再逐步推广到生产环境
- 文档更新:维护部署文档,记录所有配置变更和故障处理经验
通过本指南,你应该能够成功部署一个生产就绪的AppFlowy-Cloud实例。记得根据实际业务需求调整配置参数,并建立完善的运维流程来确保系统长期稳定运行。
提示:部署过程中遇到问题,可查看各服务的详细日志:
docker compose logs [service_name]
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



