从零开始自建开源协作平台:AppFlowy Cloud部署全指南
在数据隐私日益重要的今天,越来越多的团队和个人开始寻求能够完全掌控数据的协作解决方案。AppFlowy Cloud作为一款开源的Notion替代方案,提供了数据自主控制、完全开源、强大协作功能等核心优势,让你能够在自己的服务器上搭建安全可控的协作平台。本文将带你一步步完成AppFlowy Cloud的部署过程,从环境准备到安全配置,再到不同场景的优化,让你轻松拥有属于自己的协作空间。
为什么选择自建AppFlowy Cloud?
AppFlowy Cloud是一个基于Flutter和Rust构建的开源协作平台,它与传统的云端协作工具相比,具有以下显著优势:
- 数据自主控制:所有数据存储在你自己的服务器上,无需担心第三方数据泄露或服务终止
- 完全开源:基于Apache 2.0许可证,代码透明可审计,你可以根据需求自由修改和定制
- 跨平台支持:无缝支持Web、桌面和移动端,随时随地访问你的工作空间
- 企业级安全:支持OAuth、SSO等多种认证方案,满足团队和企业的安全需求
- 高性能:采用Rust后端和Flutter前端,提供流畅的实时协作体验
部署前的环境准备
在开始部署AppFlowy Cloud之前,请确保你的环境满足以下要求:
系统要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Linux/macOS/Windows | Ubuntu 20.04 LTS |
| 内存 | 2GB RAM | 4GB RAM |
| 存储空间 | 10GB 可用空间 | 20GB SSD |
| Docker | Docker 20.10+ | Docker 24.0+ |
| Docker Compose | Docker Compose v2+ | Docker Compose v2.20+ |
网络要求
- 服务器需要能够访问互联网以下载必要的依赖和镜像
- 开放必要的端口:80(HTTP)、443(HTTPS)、22(SSH,可选)
AppFlowy Cloud架构解析
在开始部署前,让我们先了解一下AppFlowy Cloud的架构,这将帮助你更好地理解后续的配置过程。
AppFlowy Cloud采用Docker容器化部署,主要包含以下组件:
- Nginx:作为反向代理,处理HTTP请求路由
- AppFlowy-Cloud:核心应用服务,提供协作功能
- GoTrue:身份认证服务,处理用户登录和授权
- PostgreSQL:关系型数据库,存储用户和工作区数据
- Redis:缓存服务,支持实时协作功能
- MinIO:对象存储服务,存储上传的文件和附件
- PgAdmin:PostgreSQL数据库管理工具
- Portainer:Docker容器管理工具
这些组件通过Docker Compose编排,形成一个完整的协作平台生态系统。
step-by-step部署指南
1. 获取源代码
首先,克隆AppFlowy Cloud的源代码到你的服务器:
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/ap/AppFlowy-Cloud
cd AppFlowy-Cloud
2. 环境配置
复制环境配置文件并进行必要的修改:
# 复制示例配置文件
cp env.dev.secret.example env.dev.secret
# 使用文本编辑器编辑配置文件
nano env.dev.secret
在配置文件中,你需要至少设置以下关键参数:
| 参数 | 说明 | 示例值 |
|---|---|---|
DATABASE_URL |
PostgreSQL数据库连接URL | postgres://user:password@postgres:5432/appflowy |
REDIS_URL |
Redis连接URL | redis://redis:6379 |
APPFLOWY_CLOUD_URL |
应用访问URL | http://your-domain.com |
JWT_SECRET |
JWT令牌加密密钥 | 随机生成的32位字符串 |
3. 服务器安全配置
为了确保服务器安全,需要正确配置网络安全组规则。以下是在AWS EC2实例上配置安全组的示例:
安全组配置建议:
- 仅开放必要端口:80(HTTP)、443(HTTPS)、22(SSH,仅限信任IP)
- 限制SSH访问来源,仅允许特定IP地址连接
- 禁止直接暴露数据库和Redis端口到公网
记录你的服务器公网IP或域名,后续配置会用到:
4. 配置OAuth认证
AppFlowy Cloud支持多种OAuth提供商,这里以Google OAuth为例进行配置:
4.1 创建Google OAuth凭据
- 访问Google Cloud控制台
- 创建新项目或选择现有项目
- 在"API和服务" > "凭据"页面,点击"创建凭据":
- 选择"OAuth客户端ID",应用类型选择"Web应用"
- 填写应用名称,添加授权重定向URL:
http://your-domain.com:9998/callback
- 记录生成的客户端ID和客户端密钥
4.2 配置环境变量
编辑环境配置文件,添加Google OAuth相关设置:
nano env.dev.secret
添加以下配置:
# Google OAuth2
GOTRUE_EXTERNAL_GOOGLE_ENABLED=true
GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=你的客户端ID
GOTRUE_EXTERNAL_GOOGLE_SECRET=你的客户端密钥
GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=http://your-domain.com:9998/callback
5. 启动服务
使用Docker Compose启动所有服务:
# 后台启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
预期输出应显示所有服务状态为"Up":
Name Command State Ports
----------------------------------------------------------------------------------
appflowy-cloud /appflowy-cloud Up 0.0.0.0:8080->8080/tcp
gotrue /gotrue Up 0.0.0.0:9998->9998/tcp
minio /usr/bin/docker-entrypoint Up 0.0.0.0:9000->9000/tcp
nginx /docker-entrypoint.sh ngin... Up 0.0.0.0:80->80/tcp
pgadmin /entrypoint.sh Up 0.0.0.0:5050->5050/tcp
postgres docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
redis docker-entrypoint.sh redis... Up 0.0.0.0:6379->6379/tcp
portainer /portainer Up 0.0.0.0:9001->9000/tcp
6. 验证部署
- 打开浏览器,访问你的服务器IP或域名
- 应该能看到AppFlowy Cloud的登录页面
- 使用Google账号登录,验证OAuth配置是否正确
- 创建工作区并测试基本功能
高级配置:企业级SSO集成
对于企业用户,AppFlowy Cloud支持SSO集成,以Okta SAML为例:
1. 在Okta中创建应用集成
- 登录Okta管理控制台
- 进入"应用程序"页面,点击"创建应用集成":
- 选择"SAML 2.0"作为集成方法
- 填写应用名称,点击"下一步"
2. 配置SAML设置
在SAML配置页面,设置以下参数:
- 单一登录URL:
https://your-domain.com/gotrue/sso/saml/acs - 受众URI(SP实体ID):
https://your-domain.com/gotrue/sso/saml/metadata - 属性语句:添加
email属性,值为user.email
完成配置后,下载IdP元数据,然后在AppFlowy Cloud中配置SAML认证。
常见场景配置
个人使用场景
对于个人用户,推荐以下配置:
- 简化安全组配置,只开放必要端口
- 使用自签名SSL证书(生产环境建议使用Let's Encrypt)
- 定期备份PostgreSQL数据库:
# 创建数据库备份脚本
nano backup_db.sh
添加以下内容:
#!/bin/bash
BACKUP_DIR="/path/to/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
docker exec appflowy-cloud_postgres_1 pg_dump -U postgres appflowy > $BACKUP_DIR/appflowy_$TIMESTAMP.sql
# 保留最近30天的备份
find $BACKUP_DIR -name "appflowy_*.sql" -mtime +30 -delete
添加执行权限并设置定时任务:
chmod +x backup_db.sh
crontab -e
# 添加以下行,每天凌晨3点执行备份
0 3 * * * /path/to/backup_db.sh
团队协作场景
对于团队使用,建议额外配置:
- 启用SSO认证,集中管理用户
- 配置邮件通知服务,用于用户邀请和密码重置
- 设置资源使用限制,防止单个用户过度占用存储空间
企业部署场景
企业级部署需要更严格的安全和管理配置:
- 使用企业级SSL证书,确保通信安全
- 配置LDAP/Active Directory集成,与企业现有用户系统对接
- 设置详细的审计日志,跟踪用户操作
- 实现高可用部署,确保服务稳定性
监控与维护
健康检查
使用项目提供的健康检查脚本:
# 执行健康检查
./script/lib/check_health.sh
日志监控
查看服务日志:
# 查看AppFlowy Cloud服务日志
docker-compose logs -f appflowy-cloud
# 查看Nginx访问日志
docker-compose logs -f nginx
性能监控
使用Portainer监控容器资源使用情况:
- 访问
http://your-domain.com:9001 - 创建管理员账号
- 查看各容器的CPU、内存和网络使用情况
故障排除
常见问题及解决方案
-
数据库连接失败
- 检查
DATABASE_URL配置是否正确 - 确认PostgreSQL容器是否正常运行:
docker-compose ps postgres - 查看数据库日志:
docker-compose logs postgres
- 检查
-
OAuth认证失败
- 验证回调URL是否与OAuth提供商配置一致
- 检查客户端ID和密钥是否正确
- 查看Gotrue服务日志:
docker-compose logs gotrue
-
服务无法访问
- 检查Nginx容器是否正常运行
- 验证服务器防火墙规则是否允许80/443端口
- 查看Nginx日志:
docker-compose logs nginx
-
存储空间不足
- 清理未使用的Docker镜像:
docker system prune -a - 检查MinIO存储使用情况:访问
http://your-domain.com:9001 - 考虑配置外部存储服务
- 清理未使用的Docker镜像:
总结
通过本文的指南,你已经成功部署了自己的AppFlowy Cloud开源协作平台。从环境准备到安全配置,再到高级功能集成,你现在拥有了一个完全自主可控的协作空间。无论是个人使用、团队协作还是企业部署,AppFlowy Cloud都能满足你的需求,同时保证数据安全和隐私保护。
随着使用的深入,你可以进一步探索AppFlowy Cloud的定制化选项,根据自己的需求扩展功能。作为开源项目,AppFlowy Cloud拥有活跃的社区支持,你可以通过贡献代码或反馈问题来帮助项目不断改进。
现在,开始享受你的自建协作平台吧!
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
atomcodeAn open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust030
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00







