Openship
내장 CI/CD를 갖춘 오픈 소스 자체 호스팅 배포 플랫폼입니다.
저장소를 연결하면 앱을 빌드하고, 배포하고, 라우팅과 TLS 종료까지 처리합니다. 데스크톱 앱, 웹 대시보드, CLI에서 모두 제어할 수 있습니다.
빠른 시작 ·
작동 방식 ·
인터페이스 ·
문서 ·
기여하기
---
## 빠른 시작
먼저 Openship 자체, 즉 control plane을 어떻게 실행할지만 결정하면 됩니다. 이후 과정은 같습니다.
| 이런 경우 | Openship 실행 방식 | 앱 실행 위치 |
| ----------------------------------------------------------------------------- | ------------------------------------ | --------------------------------------------------------- |
| **개인 개발자, 한 대의 컴퓨터, 운영 부담 없음** | **데스크톱 앱** | SSH로 연결한 서버 또는 Openship Cloud |
| **팀 환경, push-to-deploy가 필요하거나 자체 서버에서 앱을 호스팅하려는 경우** | **자체 호스팅 서버** (`openship up`) | 해당 서버(Compose mode) 또는 다른 서버 / Cloud(bare mode) |
| **아무것도 직접 운영하고 싶지 않은 경우** | **Openship Cloud** | 관리형 sandbox, 설정 불필요 |
> [!TIP]
> **개인 개발자라면 데스크톱 앱을 사용하세요.** 앱을 열어 둔 동안에만 내 컴퓨터에서 Openship control plane이 실행됩니다. 상시 실행 서버에 남는 구성 요소도, 외부에 공개되는 부분도 없습니다. **push-to-deploy(CI/CD)**, **팀 접근**, 또는 **그 서버에서 앱 호스팅**처럼 공개된 상시 실행 endpoint가 필요한 기능을 원할 때만 상시 실행 서버 설치가 필요합니다.
### 개인 개발자 — 데스크톱 앱
control plane은 로컬에서 실행되고 SSH를 통해 서버를 제어합니다. 로그인이나 터미널 없이 내려받아 열기만 하면 되며 외부에 공개되지 않습니다.
| 플랫폼 | 다운로드 |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **macOS** (Apple Silicon) | [Openship-arm64.dmg](https://github.com/oblien/openship/releases/latest/download/Openship-arm64.dmg) |
| **macOS** (Intel) | [Openship-x64.dmg](https://github.com/oblien/openship/releases/latest/download/Openship-x64.dmg) |
| **Windows** | [Openship-win32-x64.zip](https://github.com/oblien/openship/releases/latest/download/Openship-win32-x64.zip) |
| **Linux** | [Openship.AppImage](https://github.com/oblien/openship/releases/latest/download/Openship.AppImage) |
Linux에서는 `chmod +x Openship.AppImage && ./Openship.AppImage`를 실행합니다. CLI가 이미 있다면 `openship install`로 앱을 내려받아 실행할 수 있습니다. 링크는 항상 최신 릴리스를 가리킵니다.
데스크톱 앱에서 서버(SSH) 또는 Openship Cloud에 연결해 배포합니다. 앱이 노트북에서 공개 앱을 호스팅하지는 않습니다.
### 팀 환경 / 상시 실행 — 자체 호스팅 서버
API와 대시보드를 포함한 CLI를 설치한 뒤 **`openship`**을 실행하세요. 대화형 마법사가 첫 관리자를 만들고 도메인을 연결한 뒤 Openship을 부팅 서비스로 설치합니다. 인스턴스를 관리하려면 언제든 같은 명령을 다시 실행하면 됩니다.
```bash
curl -fsSL https://get.openship.io | sh # 설치 (또는 npm i -g openship)
openship # 안내에 따른 설정 후 제어 패널 열기
```
CI 환경이나 headless 서버에서는 마법사를 건너뛰고 `openship up`을 직접 실행할 수 있습니다.
```bash
openship up # 설치 후 백그라운드 서비스 시작(부팅 시 시작 및 자동 재시작)
openship up --public-url https://openship.example.com # 도메인에서 대시보드 제공(edge + TLS 처리)
```
**`openship up`은 실행 방식을 자동으로 선택합니다.**
- **Docker가 있는 Linux에서는 Compose mode**가 기본입니다. 공개 이미지로 Postgres, Redis, API, 대시보드, 컨테이너화된 **OpenResty edge(:80/:443)**를 포함한 전체 스택을 시작합니다. 배포한 앱을 **같은 서버에서 호스팅**하고 자동 도메인과 Let's Encrypt TLS를 제공하는 방식입니다. `--compose`로 강제할 수 있습니다.
- **그 밖의 환경에서는 bare mode**를 사용합니다. macOS, Windows, Docker가 없는 Linux에서 내장 데이터베이스를 포함한 가벼운 단일 프로세스를 실행합니다. 데스크톱 앱처럼 서버(SSH) 또는 Cloud에 앱을 배포하지만, control plane은 상시 실행되며 로그인해야 합니다. `--bare`로 강제할 수 있습니다.
자체 호스팅 인스턴스는 설정 과정에서 만든 관리자로 **반드시 로그인**해야 합니다. `openship open`은 대시보드를 열고, `openship stop`은 중지하며, `openship update`는 업그레이드합니다. `openship up --foreground`는 연결된 상태로 실행합니다.
> **미공개 개발 빌드 미리 보기.** 다음 릴리스 전의 `main`, 브랜치, 태그에 있는 소스에서 직접 빌드한 CLI를 사용하려면 source build를 설치하세요.
>
> ```bash
> curl -fsSL https://get.openship.io/dev | sh # main (기본값)
> curl -fsSL https://get.openship.io/dev | OPENSHIP_REF=dev sh # 브랜치/태그(var는 curl이 아닌 sh에 지정)
> openship-dev # 같은 CLI, 소스에서 빌드
> openship-dev update # 최신 소스 가져오기 + 다시 빌드(릴리스 불필요)
> ```
>
> 이 방식은 별도 `openship-dev` 명령, 독립된 홈 디렉터리(`~/.openship-dev`), 부팅 서비스를 사용합니다. 따라서 운영용 `openship`과 데이터에는 영향이 없습니다. Bun과 git이 필요하며, 대시보드 컴파일에는 충분한 RAM/CPU가 필요한 검증되지 않은 개발 빌드이므로 운영 환경에는 적합하지 않습니다.
**프로젝트 배포:**
```bash
cd your-project
openship init # 이 디렉터리를 프로젝트에 연결
openship deploy
```
완전한 서버 가이드와 CLI 레퍼런스는 **[openship.io/docs](https://openship.io/docs)**에서 확인할 수 있습니다.
원시 Docker Compose로 자체 호스팅하기(CLI 없이)
자체 호스팅 스택은 **`docker/docker-compose.yml`**에 있으며 GitHub Container Registry(`ghcr.io/oblien/*`)의 공개 이미지를 **pull**합니다. 모노레포를 컴파일하거나 빌드 도구를 설치할 필요가 없습니다. 저장소 루트에서 실행하세요.
```bash
git clone https://github.com/oblien/openship.git && cd openship
cp .env.example .env # 이후 편집
docker compose --env-file .env -f docker/docker-compose.yml up -d
```
스택은 **postgres + redis + api + dashboard + edge**로 구성됩니다. `edge`는 컨테이너로 실행되는 :80/:443의 OpenResty(`network_mode: host`)입니다. 라우팅과 Let's Encrypt를 담당하므로 별도의 bare host 설치가 필요 없습니다. host networking을 사용하므로 **Linux에서만** 지원됩니다. macOS/Windows에서는 `openship up`(bare)을 사용하세요. `api` 컨테이너는 host Docker socket을 마운트해 control plane이 host container를 빌드하고 실행할 수 있습니다. socket을 통해 host 권한을 가지므로 신뢰할 수 있는 서버에서만 실행해야 합니다.
**업그레이드:** 재현 가능한 pull을 위해 `.env`에 `OPENSHIP_VERSION`을 고정한 뒤 `docker compose --env-file .env -f docker/docker-compose.yml pull && … up -d`를 실행하세요. 또는 `openship update`를 사용합니다. 소스에서 빌드하려면 `-f docker/docker-compose.build.yml … up -d --build`를 추가합니다.
> 루트의 **`docker-compose.yml`**은 다른 파일입니다. 소스에서 빌드하고 marketing site를 제공하는 SaaS/control plane용이며 edge나 socket은 없습니다. 앱을 자체 호스팅하지 않으므로, 위의 `docker/docker-compose.yml` 또는 `openship up`을 사용하세요.
---
## 작동 방식
**GitHub 저장소**, **로컬 폴더**, **미리 빌드한 artifact** 가운데 하나를 Openship에 연결하면 한 pipeline에서 끝까지 처리합니다.
1. **감지.** `package.json`, framework config, lockfile, `docker-compose.yml` / `openship.json`을 읽어 stack, package manager, build/start 명령, port를 결정합니다. 설정 파일은 필요 없으며, 제어가 필요하면 `openship.json`으로 자동 감지 결과를 덮어쓸 수 있습니다.
2. **빌드.** 대상 서버나 orchestrator 로컬에서 Docker image나 bare release를 만듭니다. 해석된 config는 snapshot으로 고정되므로 재배포와 롤백도 배포 당시의 설정을 **정확히** 다시 실행합니다.
3. **실행.** public port가 아닌 loopback에만 공개되는 container 또는 supervisor가 관리하는 host process로 실행합니다.
4. **라우팅과 보안.** OpenResty edge가 도메인용 reverse-proxy vhost를 작성하고 Let's Encrypt certificate(HTTP-01)를 발급합니다. 라우팅과 TLS는 앱이 올라온 뒤에 처리되므로 DNS나 certificate 문제는 “action required”로 표시됩니다. 배포가 실패하거나 앱이 중단되지는 않습니다.
5. **Push-to-deploy.** GitHub webhook이 추적 중인 branch에 push될 때마다 pipeline을 다시 실행합니다. monorepo에서는 실제로 변경된 service만 다시 빌드합니다.
데이터베이스, 도메인, SSL, CDN, 메일, 백업을 한 곳에서 관리합니다. Push-to-deploy와 공개 도메인은 webhook을 받을 공개 endpoint가 필요하므로 상시 실행 서버 또는 Cloud가 필요합니다. 데스크톱/loopback 인스턴스에는 그런 endpoint가 없습니다.
---
## 인터페이스
같은 backend를 제어하는 세 가지 방법이 있습니다.
- **데스크톱 앱** — 완전한 GUI, 실시간 로그, 모든 작업을 한 번의 클릭으로 처리합니다. 개인 개발자에게 적합합니다.
- **웹 대시보드** — 브라우저에서 쓰는 같은 UI이며 팀 환경을 위해 만들었습니다.
- **CLI** — script와 CI 친화적인 인터페이스이며 자체 호스팅 인스턴스를 설치할 때도 사용합니다.
자동화에는 AI agent를 위한 **MCP** endpoint와 **REST API**도 사용할 수 있습니다. MCP tool로 노출하도록 선택한 route만 제공하고 호출할 때마다 permission을 다시 확인합니다. credential/token route는 tool이 될 수 없습니다. 전체 레퍼런스는 [openship.io/docs](https://openship.io/docs)에 있습니다.
> [!NOTE]
> 문서는 계속 보완하고 있습니다. 빠진 내용이나 이해하기 어려운 부분이 있다면 [기여](../../CONTRIBUTING.md)를 환영합니다.
---
## 기능
| | |
| ------------------- | ---------------------------------------------------------------------- |
| **내장 CI/CD** | Push-to-deploy, preview environment, staging/production flow, rollback |
| **모든 stack** | Node, Python, Go, Rust, PHP, Ruby, Java, .NET, Docker, monorepo |
| **완전한 backend** | Postgres, MySQL, MongoDB, Redis, worker, WebSocket, storage |
| **도메인과 SSL** | 자동 Let's Encrypt, wildcard, 무제한 도메인, 자동 갱신 |
| **CDN** | Edge caching, HTTP/3, Brotli compression, 즉시 purge |
| **메일 서버** | DKIM/SPF/DMARC를 갖춘 내장 SMTP, Mailgun이나 SES 불필요 |
| **백업** | 예약 실행, database + volume, 한 번의 클릭으로 복원, 언제든 export |
| **실시간 모니터링** | live build log, container metric, 화면으로 스트리밍되는 resource usage |
| **확장성** | Cloud에서 auto-scaling, 자체 호스팅에서 multi-node 준비 |
| **이식성** | 표준 Docker container로 provider 사이를 자유롭게 이동 |
| **Docker Compose** | 기존 compose file을 그대로 배포 |
---
## 어디에나 배포
- **Openship Cloud** — 관리형, auto-scaling, 설정 불필요
- **모든 VPS** — Hetzner, DigitalOcean, Linode, OVH 등
- **전용 서버** — bare metal, colo, homelab
- **다중 서버** — 여러 장비에 workload 분산
어디에 배포하든 같은 인터페이스를 사용합니다.
---
## 상태
핵심 기능은 운영 환경에 사용할 수 있으며, 프로젝트는 활발하게 개발 중입니다. 자체 호스팅은 **무료**이며 billing이 없습니다.
**다음 계획:** multi-node cluster, load-balancing UI, private networking, advanced monitoring, visual CI/CD pipeline.
---
## 기여하기
[CONTRIBUTING.md](../../CONTRIBUTING.md)를 참고하세요.
---
## 보안
취약점을 발견했다면 공개 issue, PR, discussion이 아닌 **비공개** 경로로 제보해 주세요.
- **제보 방법(권장):** [취약점 제보](https://github.com/oblien/openship/security/advisories/new) — 제보자와 maintainer만 볼 수 있는 비공개 GitHub advisory입니다.
- 범위, 포함할 내용, 대응 및 공개 절차는 [SECURITY.md](../../SECURITY.md)에 있습니다.
선의의 보안 연구는 [safe-harbor policy](../../SECURITY.md#safe-harbor)에 따라 허가되며, 유효한 최초 제보자에게 기꺼이 credit을 제공합니다.
## 라이선스
Openship은 [Apache License 2.0](../../LICENSE)로 제공되는 **오픈 소스** 소프트웨어입니다.
Apache License 2.0의 조건에 따라 상용 및 비공개 소스 제품을 포함해 소프트웨어를 사용, 실행, 수정, 자체 호스팅, 배포할 수 있습니다. 자세한 내용은 [LICENSE](../../LICENSE)를 참고하세요.