GitHub

oblien/openship — Self-hosted deployment platform

Openship — CI/CD를 내 서버에서 운영하는 배포 플랫폼

Openship은 저장소나 로컬 폴더를 연결하면 빌드부터 컨테이너 실행, 도메인 연결, TLS 설정까지 처리하는 오픈소스 배포 플랫폼입니다. 데스크톱 앱, 자체 호스팅 서버, 관리형 클라우드 중 운영 방식을 고르며, GitHub 푸시 배포와 롤백도 지원합니다.

AI 요약

Openship은 애플리케이션 배포와 서버 운영 기능을 한곳에 모은 오픈소스 플랫폼입니다. 저장소, 로컬 디렉터리, 사전 빌드한 아티팩트를 입력하면 프로젝트 구성을 감지하고 빌드한 뒤 실행합니다. 도메인 라우팅과 Let’s Encrypt 인증서 발급도 맡습니다. 데스크톱 앱, 웹 대시보드, CLI를 제공하며 JavaScript·TypeScript용 SDK와 REST API, MCP 엔드포인트도 갖췄습니다.

먼저 제어 평면 운영 방식을 선택합니다

개인 사용자는 데스크톱 앱으로 시작할 수 있습니다. 제어 평면은 앱이 열린 동안 로컬에서 실행되고, SSH로 연결한 서버나 Openship Cloud에 배포합니다. 앱을 공개 서버에 상시 실행하지 않아도 됩니다. 다만 GitHub 푸시 배포, 팀 접근, 해당 서버에 앱 호스팅을 원하면 상시 실행 서버가 필요합니다.

팀이나 자체 서버에서 운영하려면 CLI로 서버에 Openship을 설치합니다. openship 명령은 초기 관리자 계정과 도메인을 설정하는 안내 절차를 실행합니다. CI나 헤드리스 서버에서는 openship up으로 설치한 뒤 백그라운드 서비스로 구동합니다. Linux에서 Docker를 쓰면 기본적으로 Compose 모드를 선택합니다. PostgreSQL, Redis, API, 대시보드, OpenResty 엣지 서버를 컨테이너로 실행하고, 앱도 같은 서버에 호스팅합니다. Docker가 없는 환경에서는 내장 데이터베이스를 쓰는 단일 프로세스 방식으로 실행하며, SSH 서버나 클라우드에 앱을 배포합니다. Cloud를 고르면 제어 평면과 샌드박스 운영을 관리형 서비스에 맡길 수 있습니다.

배포 파이프라인과 운영 기능

프로젝트 감지 단계에서 package.json, 프레임워크 설정, 잠금 파일, Docker Compose 파일을 살펴 빌드·실행 명령과 포트를 정합니다. 설정을 직접 지정하려면 openship.json을 둘 수 있습니다. 빌드는 대상 서버나 오케스트레이터에서 수행하며 Docker 이미지 또는 일반 릴리스로 만들 수 있습니다. 배포 설정은 스냅샷으로 고정해 재배포와 롤백에서도 같은 구성을 다시 사용합니다.

앱은 컨테이너나 감독 프로세스로 실행됩니다. 컨테이너는 루프백 주소에만 공개하고, OpenResty가 도메인 요청을 앱으로 전달합니다. 앱 실행 뒤 라우팅과 TLS를 처리하므로 DNS나 인증서 발급에 문제가 생겨도 배포 자체를 실패 처리하거나 실행 중인 앱을 내리지 않고 조치 필요 상태로 표시합니다. GitHub 웹훅을 연결하면 추적 중인 브랜치에 푸시할 때 파이프라인을 다시 실행합니다. 모노레포에서는 변경된 서비스만 빌드하도록 설계했습니다.

대시보드에서 데이터베이스, 도메인, SSL, CDN, 메일, 백업도 관리합니다. 문서는 여러 언어와 Docker, 모노레포를 지원 대상으로 들고 있으며, 빌드 로그와 컨테이너 지표, 방문자 지역 및 응답 코드별 통계를 제공한다고 설명합니다. Compose 파일 배포, 예약 백업과 복원, 미리보기 환경, 스테이징·프로덕션 흐름도 기능 목록에 포함했습니다. 다중 노드 클러스터, 로드 밸런싱 UI, 사설 네트워크 등은 향후 계획으로 적었습니다.

자체 호스팅 시 확인할 점

저장소에는 CLI로 설치하는 경로 외에 원시 Docker Compose 설정도 있습니다. docker/docker-compose.yml은 PostgreSQL, Redis, API, 대시보드, 엣지 컨테이너를 실행하며 Linux의 호스트 네트워크를 전제로 합니다. API 컨테이너는 호스트 Docker 소켓을 마운트하므로 호스트 컨테이너를 만들고 실행할 권한을 갖습니다. 신뢰할 수 있는 서버에서만 운영해야 합니다. 이 방식은 CLI 설치가 준비하는 컨테이너와 호스트 간 SSH 채널도 제공하지 않으므로 일부 호스트 작업은 별도 설정이 필요합니다. 저장소 루트의 docker-compose.yml은 SaaS·소스 빌드용이며 앱 호스팅용 엣지나 Docker 소켓을 포함하지 않습니다.

프로젝트는 자체 호스팅을 무료라고 안내하며, Openship 작성 코드에는 Apache License 2.0을 적용합니다. 다만 메일 엔진인 iRedMail은 GPL 라이선스이며, 메일 설정을 쓰지 않아도 일부 제어 평면 배포판에 포함됩니다. 구성 요소별 라이선스 경계를 확인할 필요가 있습니다.

원문: GitHub / 번역·요약: Trawling