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:***@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 ***" \
-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