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 会:

  1. 检测 — 读取 package.jsonrequirements.txtgo.mod 等,识别技术栈
  2. 构建 — 打包为 Docker 镜像,冻结配置为快照
  3. 运行 — 以容器方式启动,仅监听 loopback,不暴露端口
  4. 路由 — 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 initopenship 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