OpenShip 완벽 가이드 2026: 오픈소스 플랫폼으로 나만의 Vercel 대안 구축하기

TL;DR — OpenShip은 GitHub에서 금주 화제가 된 오픈소스 배포 플랫폼(8.9K+ stars)으로, 여러분의 VPS에서 Vercel/Railway와 동일한 푸시 투 디플로이(push-to-deploy) 경험을 제공합니다. 플랫폼 종속 제로, 완전 무료.

왜 OpenShip이 필요한가?

Vercel, Netlify 또는 Railway로 프로젝트를 배포하고 있다면, 이런 문제들을 겪어봤을 겁니다:

  • 무료 할당량 부족 — Vercel Hobby 플랜은 대역폭 100GB로 제한되며, 초과 시 서비스가 바로 중단됩니다
  • 빌드 시간 제한 — Railway는 월 500분으로, 조금만 자주 배포해도 금방 바닥납니다
  • 데이터가 내 손에 없음 — 모든 트래픽, 로그, 환경변수가 제3자에게 위탁됩니다
  • 통제 불가능한 가격 — 프로젝트가 커지면 월 요금이 $0에서 $50+로 치솟습니다

OpenShip은 바로 이런 문제들을 해결하기 위해 등장했습니다.

OpenShip이란?

OpenShip은 오픈소스, 자체 호스팅 가능한 배포 플랫폼으로, 핵심 특징은 다음과 같습니다:

특징 설명
🚀 푸시 투 디플로이 Git push 시 자동 빌드 및 배포, Vercel과 동일한 경험
🐳 Docker 네이티브 프로젝트 유형 자동 감지, Docker 컨테이너로 빌드 및 실행
🔒 자동 TLS Let's Encrypt 내장, HTTPS 인증서 자동 신청 및 갱신
🌐 커스텀 도메인 본인 도메인 연결, DNS 및 라우팅 자동 설정
📊 웹 콘솔 시각적으로 모든 프로젝트 관리, 로그 확인, 환경변수 관리
💻 멀티 디바이스 데스크톱 앱 / CLI / 웹 대시보드 세 가지 방식
🆓 완전 무료 MIT 라이선스, 코드가 모두 본인 서버에

기술 스택: TypeScript + PostgreSQL + Redis + OpenResty(에지 라우팅) + Docker

GitHub: oblien/openship — 8.9K+ stars, 금주 5,800+ 추가


OpenShip 설치

방법 1: 원클릭 설치(추천)

가장 쉬운 방법은 공식 설치 스크립트를 사용하는 것입니다. Linux / macOS / Windows를 지원합니다:

BASH
# CLI 설치
curl -fsSL https://get.openship.io | sh

# 또는 npm 사용
npm i -g openship

설치 완료 후, 인터랙티브 마법사를 실행하여 초기화를 진행합니다:

BASH
openship

마법사가 다음을 안내합니다: 1. 관리자 계정 생성 2. 도메인 설정(예: openship.yourdomain.com) 3. 시스템 서비스로 설치(부팅 시 자동 시작)

방법 2: Docker Compose 배포

Docker 방식을 선호하거나, 더 세밀한 제어가 필요한 경우:

BASH
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 — 웹 관리 화면 - OpenResty Edge — 리버스 프록시 + 자동 TLS(80/443 포트 리스닝)

방법 3: 데스크톱 앱

개인적으로만 사용하고, 항상 켜져 있는 서버가 필요 없다면 데스크톱 앱을 바로 다운로드할 수 있습니다:

플랫폼 다운로드
macOS (Apple Silicon) Openship-arm64.dmg
macOS (Intel) Openship-x64.dmg
Windows Openship-win32-x64.zip
Linux Openship.AppImage

데스크톱 앱은 로컬 머신에서 컨트롤 플레인을 실행하고, SSH를 통해 원격 서버에 연결해 앱을 배포합니다. 개인 개발자에게 적합하며, always-on 서버가 필요 없습니다.


빠르게 시작하기: 첫 번째 프로젝트 배포

1. 프로젝트 초기화

프로젝트 디렉토리로 이동한 후 실행합니다:

BASH
cd your-project
openship init

openship init은 프로젝트 유형(Node.js, Python, Go, Ruby 등)을 감지하고 설정을 자동으로 생성합니다.

2. 배포

BASH
openship deploy

정말 간단합니다. OpenShip이 다음을 수행합니다:

  1. 감지 — package.json, requirements.txt, go.mod 등을 읽어 기술 스택 식별
  2. 빌드 — Docker 이미지로 패키징, 설정을 스냅샷으로 고정
  3. 실행 — 컨테이너 방식으로 시작, loopback만 리스닝, 포트 미노출
  4. 라우팅 — OpenResty가 도메인 + TLS 인증서 자동 할당

3. 접속

배포가 완료되면 접속 URL을 볼 수 있습니다:

✅ Deployed! Your app is live at:
   https://your-app.openship.yourdomain.com

고급 기능

커스텀 도메인

기본적으로 OpenShip은 서브도메인을 할당합니다. 본인 도메인을 연결할 수 있습니다:

BASH
# OpenShip 대시보드에서 설정하거나 CLI로:
openship domains add your-app --domain myapp.com

OpenShip이 자동으로 다음을 처리합니다: - OpenResty 라우팅 규칙 설정 - Let's Encrypt 인증서 신청 - HTTP → HTTPS 리디렉션 설정

환경변수 관리

대시보드 또는 CLI를 통해 환경변수를 관리하며, 멀티 환경(production / staging / preview)을 지원합니다:

BASH
# 환경변수 설정
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 init과 openship deploy를 실행하면 됩니다.

커스텀 빌드 설정

자동 감지로 부족할 경우, 프로젝트 루트에 openship.json을 생성합니다:

JSON
{
  "build": {
    "command": "pnpm build",
    "output": "dist"
  },
  "start": {
    "command": "node server.js"
  },
  "env": {
    "NODE_ENV": "production"
  },
  "domains": ["myapp.com", "www.myapp.com"]
}

배포 로그 확인

BASH
# 실시간 로그
openship logs --follow

# 최근 100줄 확인
openship logs --tail 100

# 특정 배포 ID로 확인
openship logs --deployment dpl_abc123

이전 버전으로 롤백

모든 배포 시 스냅샷이 생성되며, 언제든지 롤백할 수 있습니다:

BASH
# 배포 이력 확인
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 체험 크레딧
데이터 주권 ✅ 완전 통제 ❌ 제3자 위탁 ❌ 제3자 위탁
커스텀 도메인 ✅ 무제한 ✅ 무료 ✅ 무료
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에 저장되므로, 데이터베이스만 백업하면 됩니다:

BASH
# 백업
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을 제공합니다:

BASH
# 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