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

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:

  1. Detect — reads package.json, requirements.txt, go.mod, etc. to identify your tech stack
  2. Build — packages everything into a Docker image, freezing the config as a snapshot
  3. Run — starts as a container, listening on loopback only (no exposed ports)
  4. 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