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를 지원합니다:
# CLI 설치
curl -fsSL https://get.openship.io | sh
# 또는 npm 사용
npm i -g openship
설치 완료 후, 인터랙티브 마법사를 실행하여 초기화를 진행합니다:
openship
마법사가 다음을 안내합니다:
1. 관리자 계정 생성
2. 도메인 설정(예: openship.yourdomain.com)
3. 시스템 서비스로 설치(부팅 시 자동 시작)
방법 2: 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 — 웹 관리 화면 - 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. 프로젝트 초기화
프로젝트 디렉토리로 이동한 후 실행합니다:
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 대시보드에서 설정하거나 CLI로:
openship domains add your-app --domain myapp.com
OpenShip이 자동으로 다음을 처리합니다: - OpenResty 라우팅 규칙 설정 - Let's Encrypt 인증서 신청 - HTTP → HTTPS 리디렉션 설정
환경변수 관리
대시보드 또는 CLI를 통해 환경변수를 관리하며, 멀티 환경(production / staging / preview)을 지원합니다:
# 환경변수 설정
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을 생성합니다:
{
"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 체험 크레딧 |
| 데이터 주권 | ✅ 완전 통제 | ❌ 제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에 저장되므로, 데이터베이스만 백업하면 됩니다:
# 백업
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 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