单机部署
使用独立构建将 Onlook 部署在单个虚拟机或物理服务器上。这会创建一个独立的生产环境部署,无需 Docker 容器,适合小团队和简单的生产环境。
前提条件
系统要求:
- 4核以上 CPU
- 8GB 以上内存(推荐 16GB)
- 50GB 以上可用磁盘空间
软件要求:
安装步骤
1. 克隆代码库
git clone https://github.com/onlook-dev/onlook.git
cd onlook
# 安装依赖
bun install2. 设置环境变量
创建您的环境配置:
# 运行交互式环境配置
bun run setup:env必填变量:
- Supabase:生产数据库 URL 及 API 密钥
- OpenRouter API Key:用于 AI 聊天功能
- CodeSandbox Token:用于开发容器
有关如何获取这些 API 密钥的详细说明,请参见开发环境搭建指南。
3. 启动后端服务
bun backend:start这将在本地启动 Supabase,包括 PostgreSQL 数据库、认证和存储。服务可通过以下地址访问:
- Supabase API: http://127.0.0.1:54321
- PostgreSQL: http://127.0.0.1:54322
- Supabase 控制台: http://127.0.0.1:54323
4. 初始化数据库
# 推送数据库架构
bun db:push5. 构建并部署独立应用
# 构建独立生产部署包
bun run preview:standalone此操作会生成一个自包含的生产构建包,包含:
- 独立服务器:独立的 Node.js 服务器及所有依赖
- 静态资源:打包好的所有静态文件
- 优化构建:压缩并优化性能
- 生产就绪:配置为生产环境使用
验证
运行后,验证部署状态:
- 主应用: http://localhost:3000
- Supabase 控制台: http://localhost:54323
检查所有服务是否运行中:
# 检查应用
curl http://localhost:3000
# 检查 Supabase API
curl http://localhost:54321/rest/v1/可选:生产环境加固
生产环境运行
独立构建会创建完整的生产服务器,你可以通过多种方式启动:
# 方式一:直接执行命令
bun .next/standalone/apps/web/client/server.js
# 方式二:使用 bun 脚本
bun run start:standalone
# 方式三:使用 PM2 进程管理
pm2 start .next/standalone/apps/web/client/server.js --name onlook进程管理(推荐)
为了生产部署推荐使用进程管理工具,例如 PM2:
# 全局安装 PM2
bun add -g pm2
# 使用 PM2 启动
pm2 start .next/standalone/apps/web/client/server.js --name onlook
# 保存 PM2 配置
pm2 save
# 设置开机自启
pm2 startup故障排查
常见问题:
- 端口冲突:如端口 3000、54321 或 54322 被占用,请修改配置端口
- 构建失败:执行
rm -rf node_modules && bun install后重试构建 - 数据库连接失败:确认
bun backend:start是否成功完成 - 独立服务器无法启动:确认构建是否完成,可以执行
ls -la .next/standalone/apps/web/client/检查 - 内存问题:通过设置
NODE_OPTIONS="--max-old-space-size=4096"增加 Node.js 内存限制
性能优化建议:
- 使用 PM2 管理进程和实现自动重启
- 配置反向代理(Nginx/Apache)进行 SSL 和缓存管理
- 使用 SSD 存储提升 I/O 性能
- 监控内存使用,必要时重启服务
适用场景
适合:
- 小团队生产部署(5-20 用户)
- 单机服务器环境
- 成本敏感型部署
- 简单的生产环境
- 避免容器复杂性的组织
相比 Docker 的优势:
- 无容器编排复杂性
- 直接服务器访问和调试
- 更低资源开销
- 更简单的部署流程
- 标准的系统服务管理
相比开发模式的优势:
- 生产环境优化构建
- 更优性能和安全性
- 降低内存占用
- 自包含部署包
- 无需开发时依赖
需要考虑的事项:
- 单点故障风险
- 需手动扩展
- 需要系统管理知识
- 不如容器便携
- 手动备份和恢复流程
对于高可用生产部署,建议考虑Docker Compose 或 云端部署 方案。