30分钟上线SaaS应用:Open-SaaS零成本部署Fly.io全攻略
你是否曾因复杂的服务器配置、高昂的云服务费用而放弃将创意转化为产品?Open-SaaS + Fly.io的组合彻底解决了这些痛点。本文将带你通过6个步骤,从环境准备到性能优化,完成生产级SaaS应用的部署,全程无需专业运维知识,最低月成本仅需5美元。
准备工作:环境与工具清单
在开始部署前,请确保你的开发环境已安装以下工具:
- Git:用于克隆项目代码库
- Node.js (v16+):运行前端和后端应用
- Fly CLI:管理Fly.io应用生命周期的命令行工具
- Wasp:Open-SaaS使用的全栈开发框架
首先克隆项目仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/op/open-saas
cd open-saas/template/app
npm install
项目核心配置文件位于template/app/main.wasp,包含应用元数据、路由定义和服务配置。其中第8-31行的head配置段可自定义SEO信息和第三方脚本,部署前建议更新为你的应用信息。
Fly.io账号与项目初始化
注册与CLI配置
- 访问Fly.io官网注册账号(提供免费计划)
- 安装Fly CLI并登录:
curl -L https://fly.io/install.sh | sh
fly auth login
项目结构分析
Open-SaaS采用前后端分离架构,部署时需要分别处理:
- 客户端:React单页应用,部署为静态资源服务
- 服务端:Node.js API服务,处理业务逻辑和数据库交互
项目提供了预配置的Fly.io部署模板,位于opensaas-sh/app_diff/目录,包含服务器配置差异文件。其中:
- fly-server.toml.diff:后端服务配置
- fly-client.toml.diff:前端应用配置
后端服务部署
数据库配置
Open-SaaS默认使用PostgreSQL数据库,可通过Fly.io内置的PostgreSQL服务快速部署:
fly postgres create --name open-saas-db
fly postgres attach open-saas-db -a open-saas-server
这会自动创建数据库并将连接信息注入服务端环境变量。数据库迁移配置位于template/app/schema.prisma,包含数据模型定义和迁移脚本。
服务器部署配置
- 创建服务器配置文件:
cp ../../opensaas-sh/app_diff/fly-server.toml.diff fly.toml
- 编辑
fly.toml文件,关键配置说明:app:应用名称(全局唯一)primary_region:部署区域(选择离目标用户最近的区域)internal_port:服务监听端口(默认8080)min_machines_running:最小运行实例数(生产环境建议设为1)
配置示例(来自fly-server.toml.diff第9-25行):
app = 'your-unique-app-name'
primary_region = 'sin' # 新加坡区域
[http_service]
internal_port = 8080
force_https = true
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 1
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
- 部署服务端:
fly deploy --config fly.toml
前端应用部署
构建与配置
- 创建客户端配置文件:
cp ../../opensaas-sh/app_diff/fly-client.toml.diff fly-client.toml
-
关键配置说明(来自fly-client.toml.diff):
internal_port:静态服务端口(默认8043)min_machines_running:前端可设为0,支持自动休眠
-
构建并部署前端应用:
npm run build
fly deploy --config fly-client.toml --directory build
环境变量与安全配置
必要环境变量
在Fly.io控制台或通过CLI设置以下环境变量:
# 认证相关
fly secrets set JWT_SECRET=your-secure-jwt-secret
fly secrets set EMAIL_FROM=your-email@example.com
# 数据库连接(自动设置,如需手动配置)
fly secrets set DATABASE_URL=postgres://user:password@host:port/dbname
完整环境变量列表可参考template/app/.env.example(项目中可能需要创建此文件)。
安全最佳实践
- 启用HTTPS(已在配置文件中通过
force_https = true启用) - 设置CORS策略,在template/app/src/lib/utils.ts中配置允许的 origins
- 定期轮换JWT密钥和数据库凭证
性能优化与监控
资源配置优化
根据应用负载调整资源配置:
- 内存:默认1GB,如频繁OOM可增加至2GB
- CPU:共享核心足够小型应用,生产环境可升级至专用CPU
- 区域:根据用户分布选择多区域部署
修改配置后重新部署:
fly deploy --config fly-server.toml
监控与日志
- 查看应用状态:
fly status
fly logs -a open-saas-server
- 性能监控: Open-SaaS内置了分析功能,配置位于template/app/src/analytics/目录,支持Plausible等分析工具集成。管理后台提供用户统计和性能指标视图:
常见问题与解决方案
部署失败排查流程
- 检查构建日志:
fly logs -a <app-name> - 验证数据库连接:
fly postgres connect -a open-saas-db - 确认环境变量:
fly secrets list -a open-saas-server
冷启动优化
前端应用设置min_machines_running = 0会导致首次访问冷启动延迟,可通过以下方式缓解:
- 升级至付费计划,启用持久实例
- 配置CDN缓存静态资源
- 使用Fly.io的全球边缘网络
数据库迁移
部署新版本时如需更新数据库结构:
fly ssh console -a open-saas-server
npx prisma migrate deploy
总结与后续步骤
通过本文步骤,你已成功部署Open-SaaS应用到Fly.io平台。后续建议:
- 配置自定义域名:
fly certs add your-domain.com - 设置自动部署:集成GitHub Actions,参考.github/workflows/deploy.yml
- 探索高级功能:
Open-SaaS项目持续更新,定期同步上游仓库获取新功能和安全更新:
git pull origin main
npm install
部署架构示意图:
完整项目文档可参考README.md,社区支持和更新日志请关注项目仓库。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



