Coolify는 종종 “셀프호스팅 Vercel”로 소개된다. 이 표현은 절반만 맞다. Vercel을 대체하는 기능은 분명히 있지만, Coolify는 그보다 훨씬 광범위한 셀프호스팅 PaaS다. 이 글은 Coolify의 실제 활용 범위를 정리한다.
흔한 오해
Coolify를 처음 접하면 보통 다음과 같이 인식하게 된다.
“GitHub 레포 연결해서 자동 배포해주는 도구. 그러니까 Vercel 같은 거.”
이 인식은 Coolify의 일부만 본 것이다. 실제로 Coolify가 다루는 리소스 종류는 5가지로 나뉘며, 각각이 독립적인 활용 시나리오를 가진다.
Coolify가 다루는 리소스 5종
Coolify에서 “New Resource” 버튼을 누르면 다음 카테고리가 표시된다.
1. Application (코드 기반 앱 배포)
GitHub/GitLab 레포의 소스 코드를 가져와 빌드하고 배포하는 방식. 가장 흔히 사용되는 카테고리다.
지원 빌드 방식:
- Nixpacks: 언어/프레임워크 자동 감지 후 빌드 (기본값)
- Dockerfile: 레포 내 Dockerfile 사용
- Static: 정적 파일만 서빙
실제 지원 범위:
- 프론트엔드: Next.js, Nuxt, SvelteKit, Astro, Vue, React, Angular
- 백엔드: Node.js, Python(Django/Flask/FastAPI), Go, Rust, Java, PHP, Ruby
- 정적 사이트: Hugo, Jekyll, Eleventy, Gatsby
Nixpacks가 자동 감지하므로 대부분의 표준 프로젝트는 Dockerfile 없이도 배포 가능하다.
2. Database (DB 원클릭 배포)
이것이 Coolify의 숨은 강점이다. UI에서 클릭 한 번으로 DB 컨테이너를 띄울 수 있다.
지원 DB:
| DB | 카테고리 |
|---|---|
| PostgreSQL | 범용 관계형 |
| MySQL / MariaDB | 관계형 |
| MongoDB | 문서형 NoSQL |
| Redis | 인메모리 캐시 |
| KeyDB | Redis 호환, 멀티스레드 |
| DragonflyDB | Redis 호환, 고성능 |
| ClickHouse | 분석용 컬럼 DB |
자동으로 처리되는 작업:
- 볼륨 마운트 (데이터 영속화)
- 비밀번호 자동 생성
- 백업 스케줄 설정 (S3 호환 스토리지로 자동 업로드)
- 같은 Docker 네트워크 내 컨테이너 이름으로 접근
앱 컨테이너에서 다음과 같이 연결한다.
DATABASE_URL=postgresql://postgres:비번@my-postgres-xxx:5432/postgres
별도의 DB 서버 셋업, 보안 설정, 백업 스크립트 작성이 필요 없다.
3. Service (사전 정의된 서비스 템플릿)
오픈소스 서비스 100개 이상을 템플릿 형태로 제공한다. 클릭 한 번으로 배포되며, 필요한 환경변수와 볼륨이 자동 설정된다.
카테고리별로 정리하면 다음과 같다.
분석 / 추적
- Plausible, Umami, PostHog, Matomo
- Google Analytics를 대체하는 프라이버시 친화적 도구들
모니터링 / 운영
- Grafana, Prometheus
- Uptime Kuma (상태 페이지)
- Glances (서버 리소스 모니터링)
개발 도구
- Gitea, Forgejo (셀프호스팅 Git)
- GitLab (대형 버전)
- Drone, Woodpecker (CI/CD)
스토리지
- MinIO (S3 호환)
- Nextcloud, Owncloud
팀 협업 / 커뮤니케이션
- Rocket.Chat, Mattermost (Slack 대안)
- Mailcow, Mailu (메일 서버)
- Listmonk (뉴스레터)
문서 / 노트
- Outline, BookStack, Wiki.js
- Trilium
- AppFlowy, Affine (Notion 대안)
자동화
- n8n (Zapier 대안)
- Activepieces
- Huginn
미디어
- Jellyfin, Plex
- Immich (Google Photos 대안)
- PhotoPrism
AI / ML
- Ollama (로컬 LLM 실행)
- Open WebUI (ChatGPT 스타일 UI)
- Stable Diffusion WebUI
비즈니스 도구
- Cal.com (Calendly 대안)
- Documenso (DocuSign 대안)
- Ghost, WordPress
- Strapi, Directus, PocketBase (Headless CMS)
보안 / 네트워크
- Vaultwarden (Bitwarden 셀프호스팅)
- Pi-hole, AdGuard Home (DNS 광고 차단)
각 서비스는 공식 Docker 이미지를 기반으로 검증된 설정으로 배포된다. 직접 docker-compose.yml을 작성할 필요가 없다.
4. Docker Compose
위 카테고리에 없는 서비스나 복잡한 멀티 컨테이너 구성은 docker-compose.yml을 통째로 붙여넣어 관리한다.
장점은 다음과 같다.
- 기존 compose 파일을 그대로 가져올 수 있음
- Coolify UI에서 시작/중지/로그 관리
- 환경변수를 UI에서 관리
- 백업 통합
복잡한 자체 스택을 그대로 옮기면서 운영 편의성만 얻을 때 유용하다.
5. Docker Image (직접 지정)
Docker Hub, GHCR, 자체 레지스트리의 이미지를 직접 지정해서 배포한다.
이미지: ghcr.io/myorg/my-app:v1.2.3
포트: 3000
환경변수: ...
볼륨: /data
직접 빌드한 이미지를 외부 CI에서 푸시하고, Coolify는 배포만 담당하는 분업 구조에 적합하다.
통합 운영의 가치
각 리소스 종류를 개별로 보면 다른 도구로도 가능한 일이다. Coolify의 진짜 가치는 이 모든 것을 한 대시보드에서 관리한다는 점에 있다.
한 곳에서 보이는 것들
- 모든 앱의 상태 (정상/오류)
- 모든 DB의 상태
- 모든 서비스의 상태
- 서버 전체 리소스 (CPU/메모리/디스크)
- 각 컨테이너의 실시간 로그
- 최근 배포 이력
전통적인 셀프호스팅에서는 이 정보를 얻기 위해 여러 도구를 조합해야 했다.
라이프사이클 관리
각 리소스마다 동일한 조작이 가능하다.
| 동작 | 의미 |
|---|---|
| Start | 중지된 컨테이너 시작 |
| Stop | 컨테이너 정지 |
| Restart | 재시작 |
| Redeploy | 재빌드 후 재배포 |
| Force Redeploy | 캐시 무시 재빌드 |
| Delete | 완전 제거 |
UI에서 일관된 방식으로 제어 가능하다. SSH로 들어가서 docker 명령을 칠 필요가 없다.
환경변수의 통합 관리
각 리소스의 환경변수가 UI에서 관리된다. Secret 마스킹, Build Variable 구분, .env 파일 일괄 입력 등이 지원된다.
리소스 간 연결도 자연스럽다. PostgreSQL을 추가하면 자동으로 컨테이너 이름이 노출되고, 앱 환경변수에서 그 이름으로 참조한다.
실제 활용 시나리오
Coolify가 어떻게 쓰이는지 시나리오로 살펴본다.
시나리오 A: 개인 인프라 일원화
개인 개발자가 여러 SaaS를 자체 호스팅으로 전환하는 경우.
| 기존 SaaS | Coolify 셀프호스팅 | 비고 |
|---|---|---|
| Vercel | Next.js Application | 메인 사이트 |
| Supabase | PostgreSQL + PostgREST | DB |
| AWS S3 | MinIO | 파일 스토리지 |
| Google Analytics | Plausible | 분석 |
| Mailchimp | Listmonk | 뉴스레터 |
| Notion | Outline | 노트/위키 |
| Calendly | Cal.com | 미팅 예약 |
| 1Password | Vaultwarden | 비밀번호 |
| LastPass Auth | Vaultwarden | 2FA |
서버 한 대에서 모두 운영되며, 비용은 서버비 + 도메인비로 고정된다. 트래픽 기반 과금이 사라진다.
시나리오 B: 소규모 스타트업의 기반 인프라
| 구성 요소 | 도구 |
|---|---|
| 프론트엔드 | Next.js (Application) |
| 백엔드 API | FastAPI (Application) |
| 메인 DB | PostgreSQL |
| 캐시/큐 | Redis |
| 파일 저장소 | MinIO |
| 분석 | PostHog |
| 내부 채팅 | Mattermost |
| 내부 Git | Gitea |
| 모니터링 | Uptime Kuma + Grafana |
| 자동화 | n8n |
Vercel + AWS + Slack + Mixpanel + GitHub Enterprise 등을 결합하면 월 수십만 원이 나오는 구성을 한 서버에서 운영한다. 물론 직접 운영의 부담은 별도다.
시나리오 C: 개발/실험 환경
특정 기간만 필요한 환경을 빠르게 구성할 때.
- AI 모델 실험 → Ollama + Open WebUI 클릭 배포
- 새 프로젝트 DB 필요 → PostgreSQL 클릭
- API 모킹 → 작은 Express 컨테이너
- 실험 종료 → Delete 버튼
이런 식으로 사용 후 제거하는 사이클이 마찰 없이 돌아간다.
시나리오 D: 백오피스 / 내부 도구
외부 노출 없이 팀 내부에서만 사용할 도구들.
- Vaultwarden (비밀번호 공유)
- n8n (내부 자동화)
- Gitea (코드 저장소)
- BookStack (사내 위키)
- Uptime Kuma (서비스 모니터링)
Cloudflare Access와 결합하면 인증된 팀 멤버만 접근하도록 제한할 수 있다.
docker-compose 직접 작성과의 비교
같은 일을 직접 docker-compose로 하면 어떻게 달라지는지 비교한다.
| 작업 | docker-compose 직접 | Coolify |
|---|---|---|
| 새 앱 추가 | YAML 수정 + build + up | UI에서 New Resource |
| 환경변수 변경 | 파일 수정 + restart | UI에서 입력 + Restart 버튼 |
| 앱 정지 | docker compose stop service | Stop 버튼 |
| 로그 확인 | SSH + docker logs -f | UI 실시간 |
| 새 코드 배포 | git pull + build + up | git push만 하면 자동 |
| 롤백 | 이전 이미지 수동 지정 | Deployments에서 클릭 |
| 리소스 확인 | docker stats | UI 대시보드 |
| 새 DB 추가 | YAML에 service 추가 + 볼륨 | 템플릿에서 클릭 |
| 백업 | 직접 스크립트 작성 | UI에서 스케줄 설정 |
| 모니터링 | 별도 도구 셋업 | 통합 제공 |
docker-compose 자체가 잘못된 도구는 아니다. 다만 운영 작업이 늘어날수록 수동 작업의 비중이 커진다. Coolify는 이를 추상화하는 레이어다.
한계와 트레이드오프
Coolify가 만능은 아니다. 다음 한계를 인지해야 한다.
추상화 비용
Coolify가 내부에서 자동으로 처리하는 부분을 디버깅하려면 Coolify의 동작 방식을 추가로 학습해야 한다. 단순 docker-compose보다 한 단계 더 위에 있는 셈이다.
Coolify 자체의 가용성
Coolify 컨테이너가 죽으면 관리 UI에 접근하지 못한다. 다행히 관리되는 앱들은 계속 동작하지만, 새 배포나 설정 변경은 불가능하다. Coolify 데이터(/data/coolify/)의 백업이 필수다.
단일 노드 중심
Coolify는 기본적으로 단일 서버 운영에 최적화되어 있다. Docker Swarm을 통한 멀티 노드도 지원하지만, 진정한 K8s 수준의 클러스터링은 약하다.
특수한 컨테이너 설정의 어려움
매우 특이한 네트워크 구성이나 권한 설정이 필요한 경우 UI로 처리하지 못할 수 있다. 이때는 Docker Compose 리소스로 우회한다.
정리
Coolify는 단순히 “셀프호스팅 Vercel”이 아니다. 코드 배포, DB 운영, 사전 정의된 서비스 100여 개, 임의의 Docker Compose, 직접 지정 이미지까지 다섯 가지 리소스 종류를 통합 관리하는 PaaS다.
특히 흥미로운 점은 이것이 곧 SaaS 의존을 줄이는 도구이기도 하다는 점이다. Vercel, Supabase, Calendly, Mixpanel, Slack 같은 외부 서비스를 자체 호스팅 버전으로 대체할 수 있고, 그 모든 것을 한 대시보드에서 운영한다.
물론 모든 SaaS를 셀프호스팅으로 옮기는 것이 정답은 아니다. 운영 부담, 백업 책임, 가용성 모두 본인이 진다. 다만 “필요할 때 옮길 수 있는 선택지”가 늘 손에 있다는 점이 중요하다. 비용 한도, 정책 변경, 데이터 주권 같은 이슈가 생길 때 Coolify는 빠른 대안이 된다.
Next.js 배포로 시작했더라도, 어느 순간 “어, 이것도 Coolify에 올려볼까?”라는 생각이 떠오를 것이다. 그게 Coolify의 진짜 가치다.