2026년 개인 서버 구축 추천: 필수 셀프 호스팅 앱 25선
2026년 기준 직접 운영하기 좋은 25가지 셀프 호스팅 앱을 추천합니다. 각 앱의 실제 RAM 및 디스크 점유율, 대체 서비스, 그리고 운영 중 발생할 수 있는 OOM 킬러 문제 등 실무적인 주의 사항을 상세히 정리했습니다.
구축할 내용
단일 애플리케이션이 아니라 추천 목록입니다. 이 목록은 본 사이트의 모든 내용을 아우르는 중심축입니다. 2026년 기준, 개인 VPS에서 운영할 가치가 충분한 25가지 애플리케이션을 기능별로 분류했습니다. 각 항목마다 대체하는 서비스, 실제 RAM 및 디스크 사용량, 그리고 간과했을 때 문제가 될 수 있는 핵심 사항을 정리했습니다. 링크를 클릭하면 상세한 단계별 가이드로 이동합니다.
저는 15년 동안 VPS 호스트를 운영해 왔으며, 아래 나열된 대부분의 서비스를 제 서버에서 직접 실행하고 있습니다. 따라서 아래의 리소스 수치는 마케팅 페이지에 기재된 "최소 사양"이 아니라, 실제 소규모 워크로드 환경에서 애플리케이션이 사용하는 값입니다. 이 수치를 예산으로 간주하고, 운영에 필요한 여유 자원을 추가로 확보하십시오.
전제 조건과 현실적인 고려 사항
이 가이드의 모든 애플리케이션은 root 또는 sudo 권한을 가진 최신 Ubuntu 24.04 KVM VPS에서 실행됩니다. 동일한 목록은 개인 서버에서도 문제없이 작동하며, 매달 지불하는 임대료와 RAM 구매 비용을 비교하고 있다면 가정용 Proxmox와 임대형 VPS 비교에서 하드웨어 및 전력 비용 계산을 확인할 수 있습니다. 거의 모든 애플리케이션은 Docker 컨테이너로 배포되므로, Docker를 한 번 설치하면 전체 목록을 사용할 준비가 완료됩니다.
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker "$USER"
newgrp docker
docker run --rm hello-world만약 docker 명령이 permission denied while trying to connect to the Docker daemon socket 오류와 함께 실패한다면, 그룹 설정 단계를 건너뛰었거나 새로운 셸을 열지 않은 것이므로 로그아웃 후 다시 로그인하십시오. 만약 docker compose 명령이 docker: 'compose' is not a docker command를 반환한다면, 구형 독립형 바이너리가 설치된 상태입니다. 위 스크립트는 최신 Compose 플러그인을 설치하며, 이를 호출할 때는 하이픈 대신 공백을 사용한 docker compose를 입력해야 합니다.
다음 세 가지 현실이 아래 모든 내용의 기준이 됩니다. 첫째, 제약 사항은 디스크나 CPU가 아닌 RAM입니다. 1 GB VPS는 작은 앱 하나만 실행할 수 있습니다. 4 GB는 "여러 서비스를 직접 호스팅"하기에 가장 적합한 사양입니다. 2 GB는 초보자가 세 번째 서비스를 추가하다가 조용히 Out-Of-Memory(OOM) 킬러에 의해 프로세스가 종료되어 컨테이너가 사라지는 원인을 찾지 못하는 애매한 구간입니다. 이때 sudo dmesg 명령을 실행하면 데몬이 삼켜버린 Out of memory: Killed process 라인을 확인할 수 있습니다. 둘째, 공개 서비스는 도메인 이름과 인증서가 필요합니다. IP 주소만으로는 테스트는 가능하지만, 모바일 앱이나 브라우저에서 신뢰를 얻어야 하는 순간 실패하게 됩니다. 셋째, 두 개의 포트가 선택의 절반을 결정합니다. 자동 TLS를 위해서는 80번과 443번 포트가 서버에 도달할 수 있어야 하며, 대부분의 호스팅 업체는 아웃바운드 25번 포트를 차단하므로 이메일 서비스는 마지막의 "권장하지 않는 목록"에 포함되어 있습니다.
파일 및 사진
- Nextcloud는 Google Drive, Dropbox, Google Calendar를 하나의 제품군으로 대체합니다. 1~2 GB의 RAM과 저장할 파일 용량만큼의 디스크 공간을 확보하십시오. 주의할 점은 SQLite는 데모용으로는 적합하지만 운영 환경에서는 함정이 될 수 있다는 것입니다. 처음 설치할 때부터 PostgreSQL을 사용하십시오. 데이터가 쌓인 뒤에 데이터베이스를 마이그레이션하는 것은 Nextcloud를 망가뜨리는 가장 흔한 원인입니다. Docker, TLS, 백업을 포함한 VPS에서의 Nextcloud 가이드를 따르면 처음부터 올바르게 설정할 수 있습니다.
- Immich는 카메라 롤 자동 업로드, 얼굴 및 객체 검색 기능을 갖춘 휴대폰 앱을 포함하여 Google Photos를 대체합니다. 6 GB의 RAM을 확보하십시오. Immich 문서에서는 이를 최소 사양으로 명시하며 8 GB가 권장됩니다. 머신러닝 컨테이너가 메모리를 많이 사용하며, 디스크 공간은 라이브러리 크기에 썸네일용으로 약 20%를 추가한 만큼이 필요합니다. 주의할 점은 Immich는 릴리스마다 호환성을 깨뜨리는 변경 사항이 포함될 수 있으므로, 절대로 무작정
latest을 실행하지 마십시오. 특정 버전을 고정하고 업그레이드 전마다 릴리스 노트를 확인해야 합니다. 자체 호스팅 Immich 사진 라이브러리 가이드에서 안전한 업그레이드 경로를 다룹니다. 만약 6 GB의 메모리 사양이 현재 서버보다 높다면, PhotoPrism과 Immich 비교를 통해 실제 메모리 사용량, 휴대폰 앱, 라이브러리를 결정하기 전 필요한 백업 명령어를 확인하십시오. - Seafile은 세 가지 서비스 중 가장 빠른 동기화 엔진으로 Dropbox를 대체합니다. 약 1 GB의 RAM을 확보하십시오. 주의할 점은 Seafile은 파일을 디스크에 일반 파일 형태로 저장하지 않고 콘텐츠 주소 지정 블록(content-addressed blocks)으로 저장한다는 것입니다. 따라서
ls로 데이터를 직접 탐색할 수 없으며, 폴더를 복사하는 방식이 아닌 Seafile 전용 도구를 사용하여 백업해야 합니다.
비밀번호
- Vaultwarden은 Bitwarden 유료 플랜, LastPass, 1Password를 대체하는 가벼운 Rust 서버입니다. Bitwarden 프로토콜을 지원하므로 공식 Bitwarden 앱과 브라우저 확장 프로그램을 그대로 사용할 수 있습니다. 메모리는 100–200 MB 정도면 충분하며 디스크 사용량은 거의 없습니다. 주의할 점은 이 서버가 사용자의 모든 비밀번호를 보관한다는 것입니다. 따라서 TLS와 백업은 선택 사항이 아니라 필수이며, 이 서비스의 핵심입니다. 또한
ADMIN_TOKEN는 반드시 Argon2 해시로 설정하십시오. compose 파일에 일반 텍스트 토큰을 두는 것은 마스터 키를 평문으로 노출하는 것과 같습니다. Vaultwarden 비밀번호 관리자 가이드는 가장 먼저 시도해 볼 수 있는 최적의 셀프 호스팅 프로젝트입니다.
미디어
- Jellyfin은 Plex와 (개인 라이브러리의 경우) Netflix를 대체합니다. 완전히 오픈 소스이며, 계정 생성이나 원격 스트리밍 유료화가 없습니다. 유휴 상태에서 1–2 GB의 RAM을 점유하지만, 트랜스코딩 시 CPU 사용량이 급증합니다. 주의할 점은 4K 스트림을 소프트웨어로 트랜스코딩하면 소형 VPS는 과부하가 걸린다는 것입니다. 하드웨어 가속을 설정하거나, 클라이언트가 직접 재생(Direct Play)할 수 있는 형식으로 파일을 유지하여 서버가 데이터 전송만 담당하게 해야 합니다. VPS에서 Jellyfin 미디어 서버 운영하기 가이드에서 상세 내용을 확인할 수 있습니다. 서비스가 실행되면 Halcyon을 통해 브라우저에서 90년대 비디오 대여점처럼 라이브러리를 둘러볼 수 있습니다. 이는 가족 구성원이 단순히 목록을 넘기는 대신 직접 콘텐츠를 고르게 만드는 가장 재미있고 효과적인 방법입니다.
- Navidrome은 개인 음악 라이브러리를 위한 Spotify 대체재이며, 모든 Subsonic 호환 앱으로 스트리밍할 수 있습니다. 150–300 MB의 RAM을 점유하며, Go 언어로 작성되어 리소스 소모가 거의 없습니다. 주의할 점은 첫 라이브러리 스캔 시 모든 파일의 태그를 읽기 때문에 대규모 컬렉션의 경우 한 시간 정도 소요될 수 있다는 것입니다. 또한 ID3 태그가 잘못되어 있으면 탐색 환경도 나빠집니다.
- Audiobookshelf는 Audible과 팟캐스트 앱을 대체하며, 기기 간 재생 위치를 동기화합니다. 200–500 MB의 RAM을 점유합니다. 주의할 점은 도서별로 폴더를 엄격하게 구분하는 구조를 요구한다는 것입니다. 가져오기 폴더가 정리되어 있지 않으면 라이브러리가 제대로 인식되지 않으며, 나중에 수정하기가 매우 번거롭습니다.
자동화 및 AI
- n8n은 Zapier나 Make를 대체하는 자체 호스팅 시각적 워크플로우 빌더이며, 작업당 과금 방식이 없습니다. 400 MB에서 1 GB의 RAM을 할당하십시오. 주의 사항: n8n은 최초 실행 시 생성된 키로 저장된 자격 증명을 암호화합니다. 이 키를 분실하거나
N8N_ENCRYPTION_KEY설정을 잊어버려 키가 재생성되면, 기존의 모든 자격 증명을 읽을 수 없게 되어 다시 입력해야 합니다. HTTPS를 적용한 n8n 자체 호스팅 가이드는 키를 고정하고 웹훅 URL 앞에 실제 인증서를 배치하는 방법을 다룹니다. - Ollama는 로컬 및 비공개 LLM 추론을 위해 ChatGPT 구독을 대체합니다. 모델별로 예산을 책정하십시오. 7–8B 모델은 약 8 GB의 RAM이 필요하며, 각 모델은 디스크에서 4–8 GB를 차지합니다. 주의 사항: CPU 전용 VPS에서는 추론이 정직하게 수행되지만 속도가 느립니다. 호스팅된 API처럼 즉각적인 응답이 아니라 초당 단어 단위로 출력되므로 기대치를 조정하거나 GPU 서버를 대여하십시오. LLM 자체 호스팅을 위한 Ollama 실행 가이드에서 현실적인 수치를 확인할 수 있습니다.
통신
- Rocket.Chat은 팀을 위한 Slack의 대체재로, 스레드, 통화, 통합 기능을 제공합니다. MongoDB 위에서 실행되며 MongoDB가 리소스를 많이 점유하므로 최소 2 GB 이상의 RAM을 할당하십시오. 주의 사항: Rocket.Chat은 릴리스마다 특정 MongoDB 메이저 버전을 고정합니다. 업그레이드 시 버전을 건너뛰면 데이터베이스가 손상될 수 있으므로 반드시 한 단계씩 순차적으로 업그레이드해야 합니다. Rocket.Chat with Docker Compose 가이드에서 버전 업그레이드 단계를 확인할 수 있습니다.
- Matrix (Synapse)는 Slack과 Discord를 대체하는 연합형 종단간 암호화 네트워크로, 사용자가 직접 홈 서버를 소유합니다. 1–2 GB의 RAM을 할당하되, 대규모 공개 방에 참여할수록 더 많은 메모리가 필요합니다. 주의 사항: Synapse는 대규모 연합 방에서 메모리 사용량이 급증하며, 반드시 PostgreSQL 위에서 실행해야 합니다. 기본값인 SQLite는 단일 사용자 테스트용으로만 적합하며, 연합을 시작하는 즉시 서비스가 중단됩니다. Synapse가 무겁게 느껴진다면 동일한 프로토콜을 사용하는 더 가벼운 Conduit이나 Dendrite 서버를 고려하십시오.
네트워킹 및 접근 제어
- WireGuard는 상용 VPN을 대체하여 본인의 IP와 다른 서비스로 연결되는 개인 터널을 제공합니다. 거의 비용이 들지 않으며, 50 MB 미만의 메모리를 사용하고 암호화 처리는 커널에서 수행됩니다. 주의할 점은 컨테이너 기반 가상화(OpenVZ, 일부 LXC) 환경에서는
RTNETLINK answers: Operation not supported오류로 모듈이 작동하지 않으므로 KVM 환경이 필요합니다. 자체 호스팅 WireGuard VPN 가이드가 표준 참고 자료이며, 터널에 바인딩된 서비스와 함께 사용하면 공용 인터넷에서 서비스를 완전히 격리할 수 있습니다. 새로운 기기를 추가할 때마다 피어 설정을 직접 수정하고 싶지 않다면, VPS에서 Tailscale 서브넷 라우터 실행하기를 통해 경로를 승인하고 재부팅 후에도 IP 포워딩이 유지되도록 설정하여 전체 사설 대역을 다른 기기들에 광고할 수 있습니다. - Traefik은 직접 작성하는 nginx 가상 호스트와 수동 인증서 갱신을 대체합니다. Docker 레이블을 통해 컨테이너를 자동으로 탐색하고 Let's Encrypt 인증서를 자동으로 가져옵니다. 약 100 MB의 RAM을 할당하십시오. 주의할 점은 레이블 기반 설정 모델이 처음에는 매우 혼란스러울 수 있으며, 레이블 하나만 잘못 설정해도 별도의 오류 메시지 없이 애플리케이션으로 연결되지 않는다는 것입니다. 여러 Docker 앱을 위한 Traefik 리버스 프록시 가이드는 이 페이지에 나열된 여러 앱을 하나의 진입점 뒤에서 실행하도록 구성되어 있습니다.
- AdGuard Home은 Pi-hole이나 유료 DNS 필터링 서비스를 대체하여 네트워크 내 모든 기기의 광고와 추적기를 DNS 계층에서 차단합니다. 100–150 MB의 RAM을 할당하십시오. 주의할 점은 이 서비스가 53번 포트 점유를 시도한다는 것입니다. 이는 Ubuntu의
systemd-resolved와 충돌하며, 포트를 먼저 비우지 않으면listen udp 0.0.0.0:53: bind: address already in use오류로 인해 서비스가 시작되지 않습니다.
모니터링
- Uptime Kuma는 Pingdom, UptimeRobot, StatusPage를 대체하며 깔끔한 대시보드와 거의 모든 채널로의 알림 기능을 제공합니다. RAM은 150–300 MB 정도를 할당하십시오. 주의할 점은 많은 사용자가 간과하는 부분인데, 반드시 다른 서버에서 운영 중인 서버를 모니터링해야 한다는 것입니다. 모니터링 대상 서버에서 직접 실행되는 Uptime Kuma는 해당 서버가 다운되었을 때 이를 감지할 수 없습니다. Uptime Kuma 상태 모니터링 가이드에서 외부 배치 방법을 다룹니다.
- Zabbix는 Datadog 및 엔터프라이즈 모니터링 제품군을 대체하며, 에이전트 기반의 상세 메트릭, 트리거, 이력 관리 기능을 제공합니다. RAM은 2 GB 이상과 별도의 데이터베이스가 필요합니다. 주의할 점은 Zabbix는 강력하지만 설정이 매우 복잡하다는 것입니다. 컨테이너 3개 정도를 관리하기에는 과하며, 서버 군을 운영할 때 적합한 도구입니다. 우선 Uptime Kuma로 시작하고, 실제로 모니터링할 인프라가 충분히 갖춰졌을 때 Zabbix 모니터링 서버로 전환하십시오.
Prometheus와 Grafana를 이 목록에서 제외한 이유는 의도적입니다. 이들은 대규모 인프라를 위한 훌륭한 도구이지만, 개인용 서버 2~3대 규모에서 운영하고 튜닝하기에는 부담이 큽니다. 현재 규모에서는 Uptime Kuma와 Zabbix 조합으로도 충분히 동일한 목적을 달성할 수 있으며 유지보수 부담도 적습니다.
대시보드 및 제어 패널
이 도구들은 전체 운영 모델을 변경합니다. compose 파일을 직접 실행하는 대신, 패널이 사용자를 대신하여 애플리케이션을 관리합니다.
- Cloudron은 "원클릭으로 설치할 수 있으면 좋겠다"는 바람을 세련된 앱 스토어, 자동 TLS, 내장 백업 기능으로 해결합니다. 최소 2 GB RAM이 필요하며, 4 GB 이상을 권장합니다. 주의할 점은 이 도구가 독자적인 운영 방식을 고수하며 서버 전체를 관리하려 한다는 것입니다. 또한 2개 앱까지는 무료이지만, 그 이상은 유료 제품입니다.
- CasaOS는 복잡한 홈랩 대시보드를 사용자 친화적인 앱 그리드로 대체하며, 무료이고 가볍습니다. CasaOS 자체를 위해 약 150에서 300 MB의 RAM을 할당하십시오. 주의할 점은 신뢰할 수 있는 홈 네트워크 환경을 전제로 설계되었으므로 공용 인터넷에 직접 노출해서는 안 되며, WireGuard를 통해 접속해야 합니다.
- Coolify는 Heroku, Vercel, Netlify를 대체하며, 자체 서버에서 git-push 배포, 데이터베이스 관리, 미리보기 기능을 제공합니다. 최소 2 GB RAM이 필요합니다. 주의할 점은 프로젝트가 빠르게 발전하고 있으므로, 버전을 고정하고 업그레이드 전 릴리스 노트를 확인해야 합니다. Cloudron vs CasaOS vs Coolify 비교 문서는 이 세 가지 도구 중 어떤 것이 사용자에게 적합한지 분석합니다.
개발 및 생산성 도구
- Gitea (또는 Forgejo): 비공개 저장소, 이슈 관리, CI를 위해 GitHub를 대체합니다. RAM은 200–500 MB를 할당하십시오. 주의 사항: Forgejo는 Gitea에서 커뮤니티 주도로 분기된 프로젝트이며 현재 많은 사용자가 권장합니다. 둘 다 훌륭하지만 하나를 선택하여 저장소와 데이터베이스를 함께 백업하십시오. 데이터베이스 없이 저장소만 백업하면 모든 이슈와 풀 리퀘스트 정보가 유실됩니다.
- Paperless-ngx: 서류함과 유료 문서 스캐너를 대체하며, 모든 문서를 OCR 처리하여 검색 가능하게 만듭니다. RAM은 약 1 GB를 할당하고, OCR 작업 시 CPU 사용량이 급증합니다. 주의 사항: OCR 결과는 스캔 품질에 따라 달라지며, 대량의 문서를 재처리하는 과정은 느립니다. 10년 치 문서를 한꺼번에 가져오기 전에 설정을 최적화하십시오.
- Actual Budget: YNAB과 Mint를 대체하며, 빠르고 로컬에서 동작하는 비공개 봉투 예산 관리 도구입니다. RAM은 약 150 MB를 할당하십시오. 주의 사항: 자동 은행 연동은 별도의 애드온을 설정해야 하므로, 초기 상태에서는 거래 내역을 수동으로 가져와야 합니다.
- FreshRSS: Feedly와 서비스가 종료된 Google Reader를 대체하며, 모바일 앱을 지원하는 빠르고 비공개적인 피드 리더입니다. RAM은 약 150 MB를 할당하십시오. 주의 사항: cron 기반의 피드 갱신을 설정하지 않으면 페이지를 열 때만 피드가 업데이트됩니다.
- BookStack: Notion과 Confluence를 대체하는 문서화 도구로, 선반(shelves), 책(books), 페이지(pages) 구조로 정리됩니다. PHP와 MySQL 환경에서 RAM 약 500 MB를 할당하십시오. 주의 사항: 자유 형식의 메모가 아닌 고유한 구조를 따르므로, 선호도가 갈릴 수 있습니다. 전체 위키를 이전하기 전에 먼저 테스트해 보십시오.
- Home Assistant: SmartThings와 여러 제조사 앱을 대체하여 스마트 홈을 로컬에서 통합 관리합니다. RAM은 약 1 GB를 할당하십시오. 주의 사항: 기기 제어를 위해 로컬 네트워크 접근이 필수적이므로 원격 VPS보다는 가정 내 하드웨어에서 구동하는 것이 더 자연스럽습니다. 원격에서 대시보드를 사용해야 한다면 브리지 연결을 구성하십시오.
대표적인 설치 예시
구체적인 이해를 돕기 위해, self-host의 전체적인 구성을 예로 들겠습니다. 여기에는 compose 파일, 실제 인증서, 그리고 백업이 포함됩니다. 예시는 Uptime Kuma를 사용하지만, 목록에 있는 모든 애플리케이션은 동일한 패턴을 따릅니다.
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
volumes:
- ./data:/app/data
ports:
- "127.0.0.1:3001:3001"
restart: unless-stoppeddocker compose up -d
docker compose logs -f127.0.0.1:에 주목하십시오. 애플리케이션은 localhost에서만 수신 대기하며, Traefik이나 nginx와 같은 리버스 프록시가 그 앞단에서 TLS를 종료합니다. 0.0.0.0:3001에 직접 바인딩하는 것은 암호화되지 않은 관리자 패널을 실수로 전체 인터넷에 공개하게 되는 원인이 됩니다.
직접 호스팅하지 말아야 할 것 (아직은)
- 이메일. 솔직하게 말씀드립니다. 대부분의 VPS 제공업체는 아웃바운드 포트 25번을 차단합니다.
Connection timed out에서telnet aspmx.l.google.com 25를 받게 될 것이며, 이는 정책상의 문제이므로 해결할 방법이 없습니다. 25번 포트가 열려 있더라도, 평판이 없는 신규 IP 주소, PTR 레코드, SPF, DKIM, DMARC 설정 없이는 메일이 스팸으로 분류되거나 즉시 거부됩니다. 이는 주말에 잠깐 할 수 있는 일이 아니라, 지속적으로 관리해야 하는 실제 업무입니다. 꼭 직접 호스팅해야겠다면 Mailcow를 이용한 셀프 호스팅 이메일 가이드를 참고하여 철저히 준비하시고, 수개월 동안 메일 전달 가능성을 직접 모니터링할 각오를 하십시오. - 안정적으로 백업 및 복구할 수 없는 모든 것. 복구 테스트를 한 번도 해본 적이 없다면, 그것은 백업이 아니라 희망 사항일 뿐입니다. 복구 절차가 검증되기 전까지는 대체 불가능한 데이터, 사진의 유일한 사본, 계정 정보 등을 해당 서비스에 올리지 마십시오.
- 핵심 의존 서비스의 유일한 사본. 서버가 다운되었을 때 네트워크 전체의 인터넷 연결이 끊기는 셀프 호스팅 DNS 서버는 첫 프로젝트로 적합하지 않습니다. 상위 업스트림을 백업으로 유지하십시오.
- 실시간 안전 시스템. 가정용 경보기, 의료 알림 등 5분간의 다운타임이 심각한 문제를 일으킬 수 있는 시스템은 일요일 밤에 업데이트를 진행하는 취미용 서버에 두어서는 안 됩니다.
첫 번째 애플리케이션 선택 방법과 반드시 지켜야 할 두 가지 원칙
매달 나가는 비용이 아깝거나 개인정보 보호가 걱정되는 문제를 해결해 줄 애플리케이션을 선택하십시오. 실제로 처음 설치하기 가장 좋은 것은 Vaultwarden과 Uptime Kuma입니다. 두 서비스 모두 가볍고 즉시 유용하며, 설정 과정에서 실수를 하더라도 복구가 쉽습니다. 두 번째 애플리케이션을 추가하기 전에 설치, 인증서 적용, 백업, 복구 테스트까지 전체 과정을 한 번 완벽하게 수행해 보십시오. 여러분이 쌓아야 할 역량은 단순히 설치 버튼을 누르는 것이 아니라 운영 능력입니다.
위에서 언급한 모든 애플리케이션에 대해 예외 없이 반드시 지켜야 할 두 가지 원칙이 있습니다.
- 모든 공개 서비스에 TLS 적용. IP 주소로 직접 접속하는 평문(plaintext) 서비스는 운영 환경이 아니라 데모에 불과합니다. Certbot and Let's Encrypt on nginx를 사용하여 실제 인증서를 적용하거나, Traefik을 통해 자동으로 처리되도록 하십시오. 그 후 Fail2ban for SSH on Ubuntu 24.04를 사용하여 서비스 입구를 강화하십시오.
- 실제로 복구해 본 백업. 매일 밤 데이터베이스와 데이터 볼륨을 함께 덤프하여 서버 외부로 전송하는 작업을 자동화하십시오. 그리고 한 달에 한 번은 테스트용 VPS에 복구하여 백업이 정상적으로 작동하는지 확인하십시오. 디스크가 고장 난 날에 백업 파일이 비어 있다는 사실을 알게 되는 것은 최악의 상황입니다.
이 두 가지만 제대로 지키면 셀프 호스팅은 즐거운 경험이 될 것입니다. 이를 무시하면 재앙이 닥칠 시간을 기다리는 것과 다름없습니다.
선택지는 실용적인 것부터 터무니없는 것까지 다양합니다. 가족을 위한 Minecraft server on a VPS를 운영할 수도 있고, 반면교사로 삼을 만한 the world's least efficient datacenter 사례를 살펴볼 수도 있습니다.
FAQ
무엇을 가장 먼저 직접 호스팅해야 합니까?
Vaultwarden을 추천합니다. 비밀번호 관리자는 매일 실질적인 가치를 제공하며, 구독 서비스를 대체할 수 있습니다. 또한 Docker, 리버스 프록시, TLS, 백업 등 전체 운영 워크플로우를 익히기에 적합합니다. 애플리케이션 규모가 작아 문제가 생겨도 10분이면 다시 구축할 수 있습니다. Uptime Kuma는 두 번째로 좋은 선택입니다. 사용자가 장애를 알아차리기 전에 먼저 문제를 파악할 수 있게 해줍니다.
VPS는 어느 정도 사양이 필요합니까?
작은 애플리케이션 하나를 운영한다면 1 GB RAM으로 충분합니다. 여러 서비스를 편안하게 운영하려면 4 GB를 권장합니다. 2 GB 사양은 사용자가 이유를 알 수 없는 컨테이너의 OOM(Out-Of-Memory) 종료를 자주 겪는 구간입니다. 대부분의 경우 RAM이 병목 지점이 됩니다. 디스크 용량은 저장할 데이터 규모에 맞춰 추가하십시오. Immich, Ollama와 같이 대규모 데이터베이스를 사용하는 서비스는 RAM과 디스크 모두 더 많은 자원을 요구합니다.
직접 호스팅하지 말아야 할 것은 무엇입니까?
가장 먼저 이메일입니다. 대부분의 제공업체는 아웃바운드 25번 포트를 차단하며, 메일 전달 가능성을 유지하는 것은 전업으로 매달려야 할 만큼 어려운 일입니다. 그 외에는 안정적으로 백업하고 복구할 수 없는 모든 것, 그리고 장애 발생 시 실질적인 피해를 주는 단일 장애점(예: 대체 수단이 없는 DNS 서버나 가정용 보안 시스템)은 피해야 합니다. 이 목록에 있는 다른 모든 서비스는 직접 호스팅하기에 적합합니다.
이 모든 것을 위해 Docker가 꼭 필요합니까?
필수는 아니지만, 사용하는 것이 좋습니다. 이 목록의 모든 애플리케이션은 Docker 이미지를 제공합니다. Docker를 사용하면 깔끔한 설치와 삭제가 가능하며, 버전 고정과 새로운 호스트로의 이식성이 뛰어납니다. WireGuard나 Zabbix처럼 apt를 통해 네이티브로 설치할 수 있는 애플리케이션도 있습니다. compose 파일 하나를 이해하면 나머지도 모두 동일한 방식으로 관리할 수 있으므로, 전체 목록을 훨씬 쉽게 다룰 수 있게 됩니다.
어떻게 보안을 유지해야 합니까?
네 가지 습관으로 대부분의 보안을 확보할 수 있습니다. 모든 서비스 앞에 TLS를 적용하고, SSH는 키 기반 로그인과 Fail2ban을 통한 무차별 대입 공격 차단으로 보호하십시오. 외부 공개가 꼭 필요한 포트만 개방하고 나머지는 WireGuard VPN을 통해 접속하십시오. 또한 릴리스 노트를 확인하며 정기적으로 업데이트하여 업그레이드로 인한 예기치 않은 문제를 방지하십시오. 백업은 다섯 번째 습관입니다. 앞선 네 가지 보안 조치를 통과한 실수로부터 복구할 수 있는 유일한 수단입니다.