OpenShip Complete Guide 2026: Build Your Own Vercel Alternative with an Open-Source Platform
TL;DR — OpenShip is a trending open-source deployment platform on GitHub this week (8.9K+ stars). It gives you the same push-to-deploy experience as Vercel or Railway, right on your own VPS. Zero vendor lock-in, completely free.
Why OpenShip?
If you're deploying projects on Vercel, Netlify, or Railway, you've probably run into these problems:
- Free tier isn't enough — Vercel's Hobby plan caps you at 100 GB bandwidth; hit the limit and your site goes down
- Limited build minutes — Railway gives you 500 minutes per month; deploy too often and you're out
- Data lives elsewhere — All your traffic stats, logs, and environment variables are on someone else's servers
- Unpredictable pricing — Your project grows, and your monthly bill jumps from $0 to $50+ overnight
OpenShip is built to solve exactly these problems.
What Is OpenShip?
OpenShip is an open-source, self-hostable deployment platform with these core features:
| Feature | Description |
|---|---|
| 🚀 Push to deploy | Git push triggers automatic builds and deploys, just like Vercel |
| 🐳 Docker-native | Auto-detects your project type, builds it as a Docker container |
| 🔒 Automatic TLS | Built-in Let's Encrypt integration — certificates are requested and renewed for you |
| 🌐 Custom domains | Bind your own domain; DNS and routing are configured automatically |
| 📊 Web dashboard | Visually manage projects, view logs, and handle environment variables |
| 💻 Multi-client | Desktop app, CLI, and web dashboard — three ways to manage |
| 🆓 Completely free | MIT license, all code runs on your own server |
Tech stack: TypeScript + PostgreSQL + Redis + OpenResty (edge routing) + Docker
GitHub: oblien/openship — 8.9K+ stars, 5,800+ added this week
Installing OpenShip
Option 1: One-Click Install (Recommended)
The easiest way is the official installer, which supports Linux, macOS, and Windows:
# Install the CLI
curl -fsSL https://get.openship.io | sh
# Or via npm
npm i -g openship
Once installed, run the interactive wizard to complete setup:
openship
The wizard walks you through:
1. Creating an admin account
2. Configuring your domain (e.g., openship.yourdomain.com)
3. Installing as a system service (starts on boot)
Option 2: Docker Compose Deployment
If you prefer Docker or need finer control:
git clone https://github.com/oblien/openship.git && cd openship
cp .env.example .env
# Edit .env to set your domain, database password, etc.
vim .env
# Start all services
docker compose --env-file .env -f docker/docker-compose.yml up -d
This spins up the full stack: - PostgreSQL — data storage - Redis — caching and queues - API Server — core control plane - Dashboard — web management interface - OpenResty Edge — reverse proxy + automatic TLS (listens on ports 80/443)
Option 3: Desktop App
If you're a solo developer and don't need an always-on server, you can download the desktop app:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | Openship-arm64.dmg |
| macOS (Intel) | Openship-x64.dmg |
| Windows | Openship-win32-x64.zip |
| Linux | Openship.AppImage |
The desktop app runs the control plane locally on your machine and connects to a remote server via SSH to deploy applications. Perfect for individual developers who don't need a 24/7 server.
Quick Start: Deploy Your First Project
1. Initialize the Project
Navigate to your project directory and run:
cd your-project
openship init
openship init detects your project type (Node.js, Python, Go, Ruby, etc.) and auto-generates the configuration.
2. Deploy
openship deploy
That's it. OpenShip will:
- Detect — reads
package.json,requirements.txt,go.mod, etc. to identify your tech stack - Build — packages everything into a Docker image, freezing the config as a snapshot
- Run — starts as a container, listening on loopback only (no exposed ports)
- Route — OpenResty assigns a domain + TLS certificate automatically
3. Access
Once deployed, you'll see a URL like this:
✅ Deployed! Your app is live at:
https://your-app.openship.yourdomain.com
Advanced Features
Custom Domains
By default, OpenShip assigns a subdomain. You can bind your own domain:
# In the OpenShip Dashboard, or via CLI:
openship domains add your-app --domain myapp.com
OpenShip will automatically: - Configure OpenResty routing rules - Request a Let's Encrypt certificate - Set up HTTP → HTTPS redirect
Environment Variable Management
Manage environment variables through the Dashboard or CLI, with support for multiple environments (production / staging / preview):
# Set environment variables
openship env set DATABASE_URL="postgresql://user:pass@db:5432/myapp"
openship env set REDIS_URL="redis://redis:6379"
# List environment variables
openship env list
# Set per environment
openship env set --env production API_KEY="sk-xxx"
Multi-Project Deployment (Monorepo)
OpenShip has native monorepo support — each subdirectory can be deployed as an independent project:
my-monorepo/
├── frontend/ # Deployed independently as the frontend
│ └── package.json
├── backend/ # Deployed independently as the backend API
│ └── package.json
└── openship.json # Global config (optional)
Just run openship init and openship deploy in each subdirectory.
Custom Build Configuration
If auto-detection doesn't cover your needs, create an openship.json at the project root:
{
"build": {
"command": "pnpm build",
"output": "dist"
},
"start": {
"command": "node server.js"
},
"env": {
"NODE_ENV": "production"
},
"domains": ["myapp.com", "www.myapp.com"]
}
Viewing Deployment Logs
# Live logs
openship logs --follow
# Last 100 lines
openship logs --tail 100
# By deployment ID
openship logs --deployment dpl_abc123
Rollback to a Previous Version
Every deployment creates a snapshot, so you can roll back anytime:
# View deployment history
openship deployments list
# Roll back to a specific version
openship rollback dpl_abc123
Architecture Breakdown
OpenShip's architecture has three layers:
┌─────────────────────────────────────────────┐
│ Control Plane │
│ ┌──────────┐ ┌───────┐ ┌──────────────┐ │
│ │ API │ │ Redis │ │ PostgreSQL │ │
│ │ Server │ │ │ │ │ │
│ └──────────┘ └───────┘ └──────────────┘ │
├─────────────────────────────────────────────┤
│ Edge Layer │
│ ┌──────────────────────────────────────┐ │
│ │ OpenResty (routing + TLS + LB) │ │
│ └──────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ Runtime │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ App A │ │ App B │ │ App C │ ... │
│ │ :3000 │ │ :8080 │ │ :5000 │ │
│ └────────┘ └──────────┘ └────────┘ │
└─────────────────────────────────────────────┘
- Control plane — manages project config, deployment pipelines, and environment variables
- Edge layer — OpenResty handles reverse proxy, automatic TLS, and intelligent routing
- Runtime — each app runs in its own Docker container, listening on loopback only
All traffic flows through the edge layer. App containers never expose ports directly, keeping security tight.
Comparison: OpenShip vs Vercel vs Railway
| Feature | OpenShip | Vercel | Railway |
|---|---|---|---|
| Price | Free (self-hosted) | Limited free tier | $5 trial credit |
| Data sovereignty | ✅ Full control | ❌ Third-party | ❌ Third-party |
| Custom domains | ✅ Unlimited | ✅ Free | ✅ Free |
| TLS certificates | ✅ Automatic | ✅ Automatic | ✅ Automatic |
| Push to deploy | ✅ | ✅ | ✅ |
| Serverless | ❌ Container mode | ✅ | ✅ Container + Serverless |
| Edge functions | ❌ | ✅ | ❌ |
| Build minutes | ✅ Unlimited | Limited | 500 min/month |
| Bandwidth | ✅ Unlimited | 100 GB/month | Limited |
| Self-hosted | ✅ | ❌ | ❌ |
Bottom line: If you need serverless and edge functions, Vercel is still the stronger choice. But if you care about cost control, data ownership, and unlimited deployments, OpenShip is the better fit.
FAQ
Q: What server specs does OpenShip need?
Minimum: 1 CPU core / 1 GB RAM / 20 GB disk (for 1–3 small projects)
Recommended: 2 CPU cores / 4 GB RAM / 40 GB SSD (for 5–10 projects)
Q: Which languages and frameworks are supported?
Almost every mainstream stack: - Node.js — Next.js, Nuxt, Express, Fastify, etc. - Python — Django, Flask, FastAPI, etc. - Go — Gin, Echo, Fiber, etc. - Ruby — Rails, Sinatra, etc. - PHP — Laravel, Symfony, etc. - Rust — Actix, Axum, etc. - Docker — anything with a Dockerfile
Q: How do I back up and migrate?
All data lives in PostgreSQL — just back up the database:
# Backup
docker exec openship-postgres pg_dump -U openship openship > backup.sql
# Restore
cat backup.sql | docker exec -i openship-postgres psql -U openship openship
Q: Can I integrate with other tools?
Yes. OpenShip provides a REST API and webhooks:
# Trigger a deployment via 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"}'
Wrap-Up
OpenShip is one of the most exciting open-source deployment platforms of 2026. It brings Vercel-level developer experience to your own server, letting you:
- 💰 Save money — no more paying for build minutes and bandwidth
- 🔒 Stay in control — code, data, and logs all stay on your own machines
- 🚀 Ship fast — Git push to deploy, automatic TLS, zero-config launches
- 📈 No limits — deploy as many projects as you want
If you're tired of Vercel's free-tier limits or want a fully self-controlled PaaS, OpenShip is worth a look.
Useful links: - GitHub: github.com/oblien/openship - Docs: openship.io/docs - Chinese docs: README.zh.md