OpenShip 完全指南 2026:用开源平台自建 Vercel 替代方案
TL;DR — OpenShip 是一个 GitHub 本周爆火的开源部署平台(8.9K+ stars),让你在自己的 VPS 上获得和 Vercel/Railway 一样的推送即部署体验,零平台锁定,完全免费。
为什么需要 OpenShip?
如果你正在用 Vercel、Netlify 或 Railway 部署项目,你一定遇到过这些问题:
- 免费额度不够用:Vercel Hobby 计划限制 100GB 带宽,超出直接停服
- 构建分钟数有限:Railway 每月 500 分钟,稍微频繁部署就见底
- 数据不在自己手里:所有流量、日志、环境变量都托管在第三方
- 价格不可控:项目一上量,月费从 $0 飙到 $50+
OpenShip 就是来解决这些问题的。
OpenShip 是什么?
OpenShip 是一个开源、可自托管的部署平台,核心特性:
| 特性 | 说明 |
|---|---|
| 🚀 推送即部署 | Git push 自动触发构建和部署,和 Vercel 体验一致 |
| 🐳 Docker 原生 | 自动检测项目类型,构建为 Docker 容器运行 |
| 🔒 自动 TLS | 内置 Let's Encrypt,自动申请和续期 HTTPS 证书 |
| 🌐 自定义域名 | 绑定自己的域名,自动配置 DNS 和路由 |
| 📊 Web 控制台 | 可视化管理所有项目、查看日志、管理环境变量 |
| 💻 多端操作 | 桌面 App / CLI / Web Dashboard 三种方式 |
| 🆓 完全免费 | MIT 协议,代码全在自己服务器上 |
技术栈: TypeScript + PostgreSQL + Redis + OpenResty(边缘路由)+ Docker
GitHub: oblien/openship — 8.9K+ stars,本周新增 5,800+
安装 OpenShip
方式一:一键安装(推荐)
最简单的方式是用官方安装脚本,支持 Linux / macOS / Windows:
# 安装 CLI
curl -fsSL https://get.openship.io | sh
# 或者用 npm
npm i -g openship
安装完成后,运行交互式向导完成初始化:
openship
向导会引导你完成:
1. 创建管理员账号
2. 配置域名(如 openship.yourdomain.com)
3. 安装为系统服务(开机自启)
方式二:Docker Compose 部署
如果你更喜欢 Docker 方式,或者需要更精细的控制:
git clone https://github.com/oblien/openship.git && cd openship
cp .env.example .env
# 编辑 .env 配置域名、数据库密码等
vim .env
# 启动全部服务
docker compose --env-file .env -f docker/docker-compose.yml up -d
这会启动完整的栈: - PostgreSQL — 数据存储 - Redis — 缓存和队列 - API Server — 核心控制平面 - Dashboard — Web 管理界面 - OpenResty Edge — 反向代理 + 自动 TLS(监听 80/443)
方式三:桌面 App
如果你只是个人使用,不需要 always-on 的服务器,可以直接下载桌面 App:
| 平台 | 下载 |
|---|---|
| macOS (Apple Silicon) | Openship-arm64.dmg |
| macOS (Intel) | Openship-x64.dmg |
| Windows | Openship-win32-x64.zip |
| Linux | Openship.AppImage |
桌面 App 在你本机运行控制平面,通过 SSH 连接远程服务器部署应用。适合个人开发者,不需要一台 always-on 的服务器。
快速上手:部署第一个项目
1. 初始化项目
进入你的项目目录,运行:
cd your-project
openship init
openship init 会检测你的项目类型(Node.js、Python、Go、Ruby 等),自动生成配置。
2. 部署
openship deploy
就这么简单。OpenShip 会:
- 检测 — 读取
package.json、requirements.txt、go.mod等,识别技术栈 - 构建 — 打包为 Docker 镜像,冻结配置为快照
- 运行 — 以容器方式启动,仅监听 loopback,不暴露端口
- 路由 — OpenResty 自动分配域名 + TLS 证书
3. 访问
部署完成后,你会看到访问 URL:
✅ Deployed! Your app is live at:
https://your-app.openship.yourdomain.com
进阶功能
自定义域名
默认情况下,OpenShip 会分配一个子域名。你可以绑定自己的域名:
# 在 OpenShip Dashboard 中设置,或通过 CLI:
openship domains add your-app --domain myapp.com
OpenShip 会自动: - 配置 OpenResty 路由规则 - 申请 Let's Encrypt 证书 - 设置 HTTP → HTTPS 重定向
环境变量管理
通过 Dashboard 或 CLI 管理环境变量,支持多环境(production / staging / preview):
# 设置环境变量
openship env set DATABASE_URL="postgresql://user:pass@db:5432/myapp"
openship env set REDIS_URL="redis://redis:6379"
# 查看环境变量
openship env list
# 按环境设置
openship env set --env production API_KEY="sk-xxx"
多项目部署(Monorepo)
OpenShip 原生支持 monorepo,每个子目录可以作为独立项目部署:
my-monorepo/
├── frontend/ # 独立部署为前端项目
│ └── package.json
├── backend/ # 独立部署为后端 API
│ └── package.json
└── openship.json # 全局配置(可选)
分别在子目录运行 openship init 和 openship deploy 即可。
自定义构建配置
如果自动检测不满足需求,可以在项目根目录创建 openship.json:
{
"build": {
"command": "pnpm build",
"output": "dist"
},
"start": {
"command": "node server.js"
},
"env": {
"NODE_ENV": "production"
},
"domains": ["myapp.com", "www.myapp.com"]
}
查看部署日志
# 实时日志
openship logs --follow
# 查看最近 100 行
openship logs --tail 100
# 按部署 ID 查看
openship logs --deployment dpl_abc123
回滚到上一个版本
每次部署都会生成快照,随时可以回滚:
# 查看部署历史
openship deployments list
# 回滚到指定版本
openship rollback dpl_abc123
架构解析
OpenShip 的架构分为三层:
┌─────────────────────────────────────────────┐
│ 控制平面 (Control Plane) │
│ ┌──────────┐ ┌───────┐ ┌──────────────┐ │
│ │ API │ │ Redis │ │ PostgreSQL │ │
│ │ Server │ │ │ │ │ │
│ └──────────┘ └───────┘ └──────────────┘ │
├─────────────────────────────────────────────┤
│ 边缘层 (Edge) │
│ ┌──────────────────────────────────────┐ │
│ │ OpenResty (路由 + TLS + 负载均衡) │ │
│ └──────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 运行时 (Runtime) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ App A │ │ App B │ │ App C │ ... │
│ │ :3000 │ │ :8080 │ │ :5000 │ │
│ └────────┘ └────────┘ └────────┘ │
└─────────────────────────────────────────────┘
- 控制平面 — 管理项目配置、部署流水线、环境变量
- 边缘层 — OpenResty 做反向代理,自动 TLS,智能路由
- 运行时 — 每个应用运行在独立 Docker 容器中,仅监听 loopback
所有流量都经过边缘层,应用容器不直接暴露端口,安全性拉满。
和 Vercel / Railway 对比
| 对比项 | OpenShip | Vercel | Railway |
|---|---|---|---|
| 价格 | 免费(自托管) | 免费额度有限 | $5 试用额度 |
| 数据主权 | ✅ 完全自控 | ❌ 第三方 | ❌ 第三方 |
| 自定义域名 | ✅ 无限 | ✅ 免费 | ✅ 免费 |
| TLS 证书 | ✅ 自动 | ✅ 自动 | ✅ 自动 |
| 推送即部署 | ✅ | ✅ | ✅ |
| Serverless | ❌ 容器模式 | ✅ | ✅ 容器+Serverless |
| 边缘函数 | ❌ | ✅ | ❌ |
| 构建分钟数 | ✅ 无限制 | 有限制 | 500 分钟/月 |
| 带宽限制 | ✅ 无限制 | 100GB/月 | 有限 |
| 自托管 | ✅ | ❌ | ❌ |
结论: 如果你需要 Serverless 和边缘函数,Vercel 仍然更强。但如果你更在意成本可控、数据自主、无限制部署,OpenShip 是更好的选择。
常见问题
Q: OpenShip 需要什么配置的服务器?
最低配置:1 核 CPU / 1GB RAM / 20GB 磁盘(跑 1-3 个小项目)
推荐配置:2 核 CPU / 4GB RAM / 40GB SSD(跑 5-10 个项目)
Q: 支持哪些编程语言和框架?
几乎所有主流技术栈: - Node.js — Next.js、Nuxt、Express、Fastify 等 - Python — Django、Flask、FastAPI 等 - Go — Gin、Echo、Fiber 等 - Ruby — Rails、Sinatra 等 - PHP — Laravel、Symfony 等 - Rust — Actix、Axum 等 - Docker — 任何有 Dockerfile 的项目
Q: 如何备份和迁移?
所有数据存储在 PostgreSQL 中,直接备份数据库即可:
# 备份
docker exec openship-postgres pg_dump -U openship openship > backup.sql
# 恢复
cat backup.sql | docker exec -i openship-postgres psql -U openship openship
Q: 能否和其他工具集成?
可以。OpenShip 提供 REST API 和 Webhook:
# 通过 API 触发部署
curl -X POST https://openship.yourdomain.com/api/deploy \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"project": "my-app", "ref": "main"}'
总结
OpenShip 是 2026 年最值得关注的开源部署平台之一。它把 Vercel 级别的开发体验带到了你自己的服务器上,让你:
- 💰 省钱 — 不再为构建分钟数和带宽付费
- 🔒 自主 — 代码、数据、日志全在自己手里
- 🚀 高效 — Git push 即部署,自动 TLS,零配置上线
- 📈 无上限 — 想部署多少项目就部署多少
如果你受够了 Vercel 的免费额度限制,或者想要一个完全可控的 PaaS,OpenShip 值得一试。
相关链接: - GitHub: github.com/oblien/openship - 文档: openship.io/docs - 中文文档: README.zh.md