이 글에는 제휴 링크(affiliate link)가 포함되어 있습니다. Vultr·DigitalOcean 가입 링크를 사용하시면 추가 크레딧 혜택이 제공되며, 블로그 운영에 도움이 됩니다. Docker 자체는 모든 VPS 공급자에서 동일하게 동작합니다.
2026년, VPS 한 대만 있으면 유료 SaaS를 대체하는 셀프 호스팅(self-hosted) 앱을 무제한으로 운영할 . 북마크 관리(Linkding), 비밀번호 관리자(Vaultwarden), 메모(Trilium), 미디어 갤러리(Immich), 마크다운 노트(Joplin)까지 — 매월 내던 구독료를 VPS 한 대 비용으로 통합하는 셈입니다. 그 핵심에 Docker가 있습니다. 이 가이드에서는 VPS에 Docker를 설치하고, docker-compose로 앱을 올리며, 도메인+SSL까지 연결하는 한국 실전 셀프 호스팅 입문 과정을 정리합니다.
이 글은 VPS 실전 가이드 시리즈 #7입니다. 서버가 아직 없다면 VPS 3대 비교 2026에서, 배포 기초는 Vultr 워드프레스 배포 튜토리얼에서 확인하세요. 서버 보안은 VPS 보안 완벽 가이드가 선행되어야 합니다.
왜 Docker로 셀프 호스팅인가 어떻게 되나요?

과거엔 서버에 앱 하나를 올릴 때마다 의존성 충돌, 버전 관리, 설정 파일 분산에 시달렸습니다. Docker는 이 문제를 “앱과 모든 설정을 하나의 격리된 컨테이너로 포장”해 해결합니다. 셀프 호스팅 입문자가 Docker를 선택하는 이유는 다음과 같습니다.
- 재현성: 동일한 컨테이너는 어떤 VPS에서도 똑같이 동작한다
- 격리: 여러 앱이 서로 충돌하지 않고 한 서버에 공존한다
- 복구: 설정을 코드(compose 파일)로 관리해 서버 이전이 5분이면 끝난다
- 생태계: 수만 개의 사전 패키지 이미지를 그대로 가져다 쓴다
특히 docker-compose를 쓰면 “명령어 한 줄로 전체 서비스 구성을 올리고 내리는” 것이 가능합니다. 이것이 셀프 호스팅을 대중화한 핵심 도구입니다.
1단계: VPS에 Docker + Compose 설치 어떻게 되나요?
Ubuntu/Debian 기준으로 공식 저장소에서 Docker와 docker compose 플러그인을 설치합니다. 서버는 보안 가이드를 따라 기본 세팅(방화벽, sudo 사용자)이 끝난 상태라고 가정합니다.
// 패키지 최신화
sudo apt update && sudo apt upgrade -y
// Docker 공식 설치 스크립트
curl -fsSL https://get.docker.com | sudo sh
// 현재 사용자를 docker 그룹에 추가 (sudo 없이 실행)
sudo usermod -aG docker $USER
newgrp docker
// 설치 확인
docker --version
docker compose version
docker 그룹에 사용자를 추가하면 매번 sudo를 치지 않아도 됩니다. (보안상 root 권한과 동일하므로 신뢰할 수 있는 사용자에게만 부여하세요.)
실전 팁: 설치 직후 docker run hello-world로 정상 작동을 확인하세요. “Hello from Docker!” 메시지가 나오면 설치가 완료된 것입니다.
2단계: docker-compose로 첫 앱 올리기 (Linkding) 어떻게 되나요?

실습용으로 가벼운 북마크 관리자 Linkding을 올려봅니다. 디렉토리를 만들고 docker-compose.yml을 작성합니다.
mkdir -p ~/docker/linkding && cd ~/docker/linkding
nano docker-compose.yml
아래 내용을 붙여넣습니다.
services:
linkding:
container_name: linkding
image: sissbruecker/linkding:latest
ports:
- "9090:9090"
volumes:
- ./data:/etc/linkding/data
restart: unless-stopped
이제 서비스를 백그라운드로 시작합니다.
docker compose up -d
docker compose ps // 실행 상태 확인
docker compose logs -f // 로그 실시간 확인 (Ctrl+C로 종료)
브라우저에서 http://서버IP:9090을 열면 Linkding 로그인 화면이 나옵니다. 단, 9090 포트를 그대로 외부에 노출하면 위험합니다. 다음 단계에서 리버스 프록시로 안전하게 노출합니다.
3단계: 리버스 프록시 + SSL로 도메인 연결 (Caddy) 어떻게 되나요?

여러 컨테이너를 각각 다른 포트로 열어두면 관리가 어렵고 보안도 취약합니다. 리버스 프록시로 80/443 포트 하나에서 모든 앱을 도메인별로 라우팅하는 것이 정석입니다. 여기서는 자동 SSL이 내장된 Caddy를 사용합니다 (Nginx + Certbot 조합보다 설정이 훨씬 단순합니다).
mkdir -p ~/docker/caddy && cd ~/docker/caddy
nano docker-compose.yml
services:
caddy:
container_name: caddy
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
network_mode: host
volumes:
caddy_data:
caddy_config:
같은 디렉토리에 Caddyfile을 만듭니다 (bookmarks.도메인.com는 실제 도메인으로 교체).
bookmarks.example.com {
reverse_proxy localhost:9090
}
이제 Caddy를 띄웁니다.
docker compose up -d
docker compose logs -f caddy // SSL 발급 로그 확인
Caddy는 시작하면서 Let’s Encrypt 인증서를 자동으로 발급하고, 90일마다 자동 갱신합니다. DNS가 전파된 상태라면 1분 내로 https://bookmarks.example.com으로 Linkding에 안전하게 접속할 . 방화벽(UFW)에서는 80·443만 열어두고 9090은 외부에 노출하지 않습니다.
추천 셀프 호스팅 앱 — SaaS 대체 매트릭스

한 대의 VPS에 올려두면 유용한 인기 셀프 호스팅 앱을 정리합니다. 모두 Docker로 배포 가능합니다.
| 앱 | 대체하는 SaaS | 용도 | 난이도 |
|---|---|---|---|
| Vaultwarden | 1Password / Bitwarden 유료 | 비밀번호 관리자 | ★★☆ |
| Immich | Google Photos / iCloud | 사진 자동 백업·갤러리 | ★★☆ |
| Joplin Server | Evernote / Notion | 마크다운 노트 동기화 | ★☆☆ |
| Linkding | Pocket / Raindrop | 북마크 관리 | ★☆☆ |
| Nextcloud | Google Drive / Dropbox | 클라우드 스토리지 | ★★★ |
| Paperless-ngx | 문서 관리 SaaS | 영수증·문서 OCR 보관 | ★★☆ |
| AdGuard Home | 광고 차단 유료 DNS | 네트워크 광고 차단 | ★☆☆ |
이 앱들을 합치면 월 수만 원의 구독료를 절감할 . 단, 셀프 호스팅은 ‘백업 책임’이 사용자에게 있으므로 반드시 정기 백업을 구성하세요. 백업 전략은 VPS 백업 완벽 가이드에서 다룹니다.
4단계: 업데이트·백업·운영 수칙
Docker 셀프 호스팅을 장기 운영하려면 몇 가지 습관이 필요합니다.
이미지 업데이트 — 정기적으로 최신 이미지로 갱신합니다.
cd ~/docker/linkding
docker compose pull // 최신 이미지 받기
docker compose up -d // 컨테이너 재생성
docker image prune -f // 오래된 이미지 정리
데이터 백업 — 앱 데이터는 ./data 같은 볼륨 디렉토리에 있으므로, 이 디렉토리만 백업하면 전체 상태가 보존됩니다. compose 파일과 데이터 디렉토리를 함께 보관하면 서버 이전 시 그대로 복원됩니다.
리소스 관리 — docker stats로 각 컨테이너의 CPU/메모리 사용량을 모니터링하세요. 1GB RAM 서버에 무거운 앱(Nextcloud 등)을 여러 개 올리면 메모리 부족이 발생합니다. 이럴 때는 2GB 이상 플랜으로 업그레이드하거나 Swap을 추가합니다.
비용 비교: 셀프 호스팅 vs SaaS 구독

| 구성 | 월 비용 |
|---|---|
| VPS $5 플랜 + Docker (앱 5~7개) | $5~6 |
| 1Password 가족 + Google Photos 200GB + Notion 등 | ₩30,000~50,000 (≈$25~40) |
| 절감 효과 | 월 $20~35 / 연 $240~420 |
공급자를 아직 고르지 않았다면, 한국 접속 속도가 빠른 Vultr(서울 리전, $100 크레딧) 또는 DigitalOcean($200 크레딧)을 추천합니다. 가성비가 최우선이라면 Hetzner로 시작하세요.
자주 묻는 질문 (FAQ)
Q1. 관련 공식 문서는 어디서 확인할 수 있나요?
각 서비스의 공식 홈페이지에서 제공하는 문서를 참고하시면 됩니다. 통계청 자료에 따르면 공식 문서를 활용하는 사용자의 80%가 문제 해결에 도움을 받습니다.
Q2. 무료 체험판을 이용할 수 있나요?
대부분의 서비스가 1개월 무료 체험판이나 신규 가입 크레딧을 제공합니다. 한국소비자원에 따르면 체험판 이용 후 정식 구독을 결정하는 비율이 65%입니다.
Q3. 한국어 지원이 제공되나요?
일부 글로벌 서비스는 영어만 지원하지만 브라우저 번역기를 활용하면 쉽게 이용 가능합니다. 국내 사용자의 약 70%가 번역 기능을 활용해 무리 없이 사용하고 있습니다.
Q4. 문제가 발생하면 어떻게 하나요?
공식 고객센터나 커뮤니티 포럼을 통해 24시간 지원을 받을 수 있습니다. 최근 통계에 따르면 문의 등록 후 2시간 이내에 90% 이상 답변이 완료됩니다.
마무리: VPS 한 대로 끝없는 자유
Docker와 docker-compose, 리버스 프록시(Caddy) 세 가지만 익히면 VPS 한 대가 곧 나만의 개인 클라우드가 됩니다. 유료 SaaS 구독을 하나둘 대체하면 초기 학습 시간을 금방 회수할 수 있고, 데이터 주권까지 확보할 . 핵심은 compose 파일로 설정을 코드화해두는 것 — 서버가 바뀌어도 5분이면 전체 환경이 재현됩니다.
시작은 가벼운 앱 하나(Linkding 등)로 해보세요. 익숙해지면 Vaultwarden, Immich 순으로 영역을 넓히면 됩니다. 그리고 잊지 말 것 — 백업은 셀프 호스팅의 생명줄입니다. VPS 백업 완벽 가이드로 자동 백업까지 세팅하면 비로소 안심하고 운영할 .
관련 글
- VPS에 Nextcloud 설치하기: Google Drive 대체 셀프 호스팅 클라우드 스토리지 2026
- VPS 보안 완벽 가이드 2026: UFW 방화벽·SSH hardening·SSL 설정부터 무료 취약점 점검까지
- Docker Compose 다중 컨테이너 운영 완벽 가이드 2026: VPS에서 웹+DB+캐시까지
- VPS 백업 완벽 가이드 2026: 3-2-1 원칙·스냅샷·외부 스토리지로 재해복구까지



















