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