홈랩 2026 현황: 셀프호스팅 취미의 진화
(mrlokans.work)- 소규모 하드웨어와 무료 클라우드 터널링을 결합해 미디어·AI·사진·모니터링 등 다양한 서비스를 자체 운영하는 홈랩 구축 사례 정리
- OrangePI 5에서 시작해 GMKTec NUC(32GB RAM, 1TB NVMe)로 업그레이드하고, Hetzner 가상머신을 병행 운영하는 하이브리드 구조
- 모든 서비스는 Docker 컨테이너로 실행되며, Ansible 역할(role) 기반 IaC와 SOPS 암호화로 재현성과 보안을 확보
- Cloudflare Tunnel을 통해 인바운드 포트 개방 없이 외부 접근을 제공하고, Traefik + Authentik으로 리버스 프록시와 SSO 인증을 처리
- 월 약 7유로의 운영 비용으로 벤더 종속 없이 데이터 소유권을 유지하며, 완벽보다 학습과 즐거움에 가치를 둠
하드웨어 구성
- 초기에는 OrangePI 5를 사용했으나, 전원 관리 및 USB 연결 스토리지 문제로 GMKTec NUC로 전환
- AMD Ryzen 7 5700U CPU, 32GB RAM, 1TB NVMe M2 스토리지 탑재
- M2 슬롯 2개로 RAM과 디스크 모두 확장 가능
- 연간 운영 기준 훨씬 안정적인 동작
- 24/7 가동이 필요한 서비스는 Hetzner 가상머신에서 별도 운영
- NAS는 아직 미구축이며, Syncthing으로 중요 데이터 동기화
- Ugreen NAS, Ubiquiti 등에 관심은 있으나 현재는 직접 만지는 과정 자체를 더 즐기는 단계
운영 원칙
- Infrastructure-as-Code: 가능한 모든 설정을 스크립트 또는 관리 플랫폼(Ansible 등)으로 자동화하고 코드로 저장
- 재현성(Reproducibility): 장애 발생이나 머신 교체 시 인프라를 빠르게 재배포·재구성 가능해야 하며, 실험 서비스 제거 시에도 잔여물이 남지 않아야 함
- 사용 편의성: 취미 프로젝트인 만큼 표준적이고 익숙한 접근 방식 선호
운영체제
- Debian 배포판을 베어메탈에 직접 설치하여 사용
- NixOS(재현 가능한 빌드)나 Talos(k8s 클러스터) 등도 고려했으나, 단일 머신에서의 k8s 워크로드 관리 부담과 시간 부족으로 보류
- ProxMox 같은 하이퍼바이저도 불필요하다고 판단하여 미사용
네트워크 아키텍처
- 외부 노출 방식으로 Cloudflare Tunnel 채택
- 서버에서 Cloudflare 네트워크로 아웃바운드 전용 연결을 생성하므로 방화벽에서 인바운드 포트를 열 필요 없음
- 터널 설정 후 양방향 트래픽이 터널을 통해 흐름
- 도메인을 Cloudflare DNS에 연결하면 서브도메인별로 머신의 특정 포트·프로토콜(HTTP/HTTPS/TCP 등)에 매핑 가능
- 완전 무료로 제공되며, ngrok보다 나은 대안으로 평가
- 고정 IP(White IP) 방식은 비용과 보안 위험이 있고, Tailscale Funnel 등의 대안도 있으나 가장 간편한 솔루션으로 Cloudflare Tunnel 선택
-
Traefik
- 오픈소스 리버스 프록시로, Docker를 네이티브로 인식하여 서버 자동화에 유리
- 컨테이너에 적절한 라벨을 붙이면 자동으로 라우팅을 감지하여 별도 설정 파일 수정 불필요
-
Authentik
- IdP(Identity Provider) 및 SSO 플랫폼
- 설정을 블루프린트(YAML 파일) 형태로 저장할 수 있어 IaC 원칙 준수 가능
- ForwardAuth 미들웨어를 통해 민감한 서비스에 접근 시 로그인 페이지로 리다이렉트
운영 도구
-
Ansible
- 에이전트리스(SSH만 필요) 인프라 자동화 도구로, YAML 기반 설정과 풍부한 예제가 장점
- 각 서비스를 역할(role) 단위로 정의: tasks, defaults, handlers, templates, files로 구성
- tasks: 실행할 작업 정의
- defaults: 이미지 태그, 포트, 컨테이너 이름 등 기본값
- handlers: 설정 변경 시 컨테이너 재시작
- templates: Jinja2 기반 .env 파일, config.yaml 렌더링
- files: 정적 설정, 스크립트
- 서비스 배포의 일반적 단계:
- 공유 리소스(네트워크, 볼륨) 생성 → PostgreSQL에 스키마·사용자 생성 → 설정 템플릿 렌더링 → Docker 이미지 풀 → 컨테이너 실행(환경변수, 로깅 설정 포함) → Authentik 블루프린트에 인증 설정 프로비저닝 → 필요시 Cloudflare Tunnel 설정
- 단점으로는 방대한 문서, 반복적인 DSL 구조와 보일러플레이트가 존재하나 익숙해서 계속 사용 중
- GitOps 통합 없이 수동으로 플레이북 실행, 현재로서는 충분
-
SOPS (Secrets OPerationS)
- YAML/JSON 값만 암호화하고 키 구조는 그대로 유지하여 Git diff가 유용하게 동작
- age 암호화 백엔드 사용 — "PGP 없이 암호화를 단순하게 만든" 도구
- 호스트별로 일반 설정 파일(
homelab.yaml)과 암호화 파일(homelab.sops.yaml)을 분리 관리 - 워크플로우:
age-keygen으로 키 생성 →sops명령으로 암호화 파일 편집(에디터에서 복호화 후 저장 시 자동 재암호화) → Ansible 실행 시 자동 복호화- Ansible이 SOPS를 네이티브 지원하므로 별도 모듈이나 플래그 불필요
- Ansible Vault 대비 장점: 파일 전체가 아닌 값 단위 암호화로 diff 활용 가능
- 한계: age 개인키를 팀원과 안전하게 공유해야 하며, 키 분실 시 시크릿 복구 불가
- 1인 운영 홈랩에서는 적절한 수준의 복잡도
실행 중인 서비스
-
미디어 관리: *arr 스택
- Prowlarr: 인덱서 관리자로, 검색 결과를 다른 *arr 서비스에 전달
- Radarr: 영화 컬렉션 관리자 — 원하는 영화를 지정하면 검색·다운로드·정리를 자동 수행
- Lidarr: 음악용 동일 기능, Navidrome과 연동
- Bazarr: 자막 자동 다운로드
- Tidarr: Tidal 음원을 로컬에 보관할 수 있는 서비스
- Transmission: BitTorrent 클라이언트(포트 9091)로, 모든 *arr 서비스의 다운로드 요청 처리
- 모든 서비스가 Authentik 인증 뒤에 위치
- 공유 다운로드 디렉토리(
/mnt/data/docker/transmission/downloads)와 PUID/PGID 1000을 사용해 하드링크로 디스크 공간 절약 - 워크플로우 예시: 영화를 Radarr에 추가 → Prowlarr로 검색 → Transmission이 다운로드 → Radarr가 미디어 라이브러리로 이동 → Jellyfin에서 시청 가능
-
미디어 소비
- Jellyfin: 오픈소스 미디어 서버로, Plex와 달리 클라우드 로그인 불필요. 자체 인증 사용, Android TV 앱 포함 다양한 기기 지원
- Navidrome: Subsonic API를 지원하는 음악 스트리밍 서버, 모바일 앱(DSub2000 등)과 연동. Lidarr가 라이브러리 폴더에 음악을 공급
- Calibre Web: 전자책 라이브러리 관리자 및 리더
- 랩톱의 Calibre 데스크톱 앱에서 관리하는 메타데이터 DB를 Syncthing으로 서버에 동기화
- OPDS API를 통해 여러 리더에서 책 접근 가능
-
AI 및 채팅
- LibreChat: 셀프호스팅 AI 채팅 인터페이스로, 여러 LLM 프로바이더(OpenAI, Anthropic, 로컬 Ollama)에 연결 가능
- RAG(Retrieval Augmented Generation) 지원
- MongoDB(채팅 이력), PostgreSQL + pgvector(임베딩), MeiliSearch(전문 검색) 필요로 상대적으로 무거운 구성
- Claude Code의 접근성이 더 좋아 사용 빈도가 낮으며, 제거를 고려 중
- LibreChat: 셀프호스팅 AI 채팅 인터페이스로, 여러 LLM 프로바이더(OpenAI, Anthropic, 로컬 Ollama)에 연결 가능
-
사진 및 파일
- Immich: 셀프호스팅 Google Photos 대체 서비스
- 폰에서 자동 사진 백업, 얼굴 인식, 앨범 정리, EXIF 메타데이터 추출
- 자체 PostgreSQL(pgvector 포함)과 머신러닝 컨테이너(이미지 분류)를 사용하며, 현재 수천 장의 사진 저장 중
- Syncthing: 랩톱·폰·서버 간 폴더 동기화. 클라우드 중개 없이 P2P 직접 동기화
- Obsidian Vault, 문서 등을 여러 기기와 Android에서 동기화
- MinIO: S3 호환 오브젝트 스토리지로, S3 API가 필요한 테스트나 애플리케이션에 활용
- Immich: 셀프호스팅 Google Photos 대체 서비스
-
독서 및 정보
- Miniflux: 미니멀 RSS 피드 리더로, 약 50개 블로그·뉴스 소스 구독
- 키보드 단축키 지원, 알고리듬 기반 정렬 없이 시간순 피드 제공
- Miniflux: 미니멀 RSS 피드 리더로, 약 50개 블로그·뉴스 소스 구독
-
인프라 및 인증
- Traefik: 호스트네임 기반으로 Docker 컨테이너에 트래픽을 라우팅하는 리버스 프록시. 컨테이너 시작 시 적절한 라벨만 있으면 자동 감지
- Authentik: SSO 및 ID 프로바이더. ForwardAuth 미들웨어로 서비스 보호, 블루프린트를 Git에 저장하여 전체 인증 설정 관리
- PostgreSQL: 공유 데이터베이스 서버로, Authentik·Miniflux·Immich·LibreChat 등이 각각 별도 DB 대신 하나의 인스턴스를 공유하여 리소스 절약 및 백업 용이
- Redis: 공유 캐시 및 세션 저장소, 주로 Authentik 등의 세션 관리와 작업 큐에 사용
-
커스텀 소프트웨어
- Highlight Exporter: KOReader, Readwise, Apple Books에서 책 하이라이트를 추출하여 Obsidian 호환 마크다운으로 변환하는 Go 서비스
- Telegram Assistant: 다양한 자동화 작업과 그룹 채팅 내 AI 접근을 제공하는 Telegram 봇. 새로운 기술 시험용으로 가장 자주 재작성하는 프로젝트
- Chess-blunder trainer: chess.com이나 lichess.com 게임을 불러와 Stockfish로 분석 후 실수한 수를 선별하여 훈련하는 웹앱으로, 곧 오픈소스 공개 예정
모니터링
-
Beszel
- 간편한 설정과 운영, 좋은 기본값을 갖춘 경량 모니터링 솔루션
- Grafana 스택은 두 대의 머신에서 기본 OS 통계를 보기에는 과도하고 복잡하다고 판단
- Glances 등 유사 프로젝트들도 지나치게 튜닝이 필요하다고 느낌
- Beszel은 필요 기능의 120%를 커버하면서 설치가 간편
-
Statsping
- 특정 리소스에 대한 세밀한 모니터링을 위한 미니멀 서비스 핑 도구
- 정의된 엔드포인트에 핑을 보내 지연 시간과 가용성을 보고하고, 서비스 장애 시 다양한 방법으로 알림
- 홈랩 장애 시에도 살아남도록 클라우드 머신에서 호스팅, 별도 유지보수 오버헤드 없음
현재 부족한 부분
-
백업
- 백업의 중요성을 인지하면서도 현재 전혀 구현하지 않은 상태
- 영화·음악·사진 데이터 손실보다는 각 서비스의 데이터베이스 백업이 필요하나, 적절한 솔루션(restic 등)과 하드웨어 구성을 아직 결정하지 못함
-
RAID 설정
- 미디어 데이터와 시스템이 단일 M2 NVMe 드라이브에 공존하는 상태
- NAS 서버나 별도 백업 머신을 위한 물리적 공간이 부족
-
클라우드 독립성
- 리소스 가용성을 Cloudflare Tunnel 인프라에 크게 의존
- Cloudflare 장애 시 인프라 접근도 함께 중단되며, 향후 대안에 투자할 계획
-
완전한 IaC 및 자동화
- CI 파이프라인이나 자동 프로비저닝 없이 Ansible 플레이북을 수동 실행
- 현재로서는 GitOps로의 전환이 큰 이점을 가져올 것으로 느끼지 않음
비용 효율성 및 결론
- Hetzner 가상머신에 월 약 7유로 지출, 홈서버의 전기 사용량은 매우 적을 것으로 추정
- 새 서비스 추가나 설정 수정에 약 20~30분 소요, Claude Code에 상당 부분 위임하고 배포 전 간단한 리뷰만 수행
- 전체 프로젝트에 투입된 시간은 수년에 걸쳐 약 100~150시간으로 추정
- 최소한의 벤더 종속 없이 데이터를 소유하며, 갑작스러운 서비스 약관 변경이나 알고리듬 피드, 인수합병에 따른 데이터 소실 위험이 없음
- 완벽한 시스템이 아니라 인프라 이해와 즐거움이 목표이며, 배포하는 서비스, 작성하는 Ansible 역할, 암호화하는 시크릿 하나하나가 학습의 가치
- 홈랩을 시작하려면 작게 시작하고, 과도하게 고민하지 않는 것이 중요
Tailscale 쓰다가 Cloudflare Tunnel 쓰는데 정말 좋아요. 쓰임새가 서로 좀 다르긴하지만 저같은 경우엔 Tailscale은 Adguard랑 충돌나서 쓰기 어렵더라구요.
라이젠 8000 시리즈 저전력 기기를 24/7 홈서버로 사용하고 있는데요
평소 NAS로 사용하고 컨테이너와 서비스 등 합쳐서 70개 정도 사용하고 있는데 전력 사용량 한 달에 10kWh도 안 나오더라구요. 2000원쯤 되는 비용입니다.
최근에 구글 네스트에서 mbc 라디오 나오게 하려고 이것저것 시도하다가.
Cloudflare tunnel 을 사용 했습니다. 왜 무료일까 물어보게 만드는 좋은 서비스에요.
저도 클라우드 터널 사용하고 있는데 참 좋습니다.
보통 공유기가 물리면 외부 아이피를 공유기가 가지는 경우가 많은데
클라우드 플레어 터널을 사용해서 내부 아이피도
도메인 등록을 통해 외부 연결이 가능해질 수 있어요~
심지어 공짜죠,
Hacker News 의견들
-
이건 정말 멋지지만, Cloudflare Tunnel을 미디어 스트리밍용으로 쓰면 안 됨
이용약관상 금지되어 있거나 최소한 의도된 사용이 아님. 서비스가 차단될 수도 있음
대신 Wireguard나 Tailscale을 쓰는 게 좋음
관련 기사- 그래서 나도 같은 이유로 월 5달러짜리 VPS를 임대해서 Tailscale로 연결함
CGNAT 해제용으로도 좋고, GUI 기반으로는 Nginx Proxy Manager를 추천함 - 혹시 Tailscale Funnel이 커스텀 도메인을 지원하게 됐는지 궁금함
나는 지금 rathole + traefik 조합으로 옮기는 중임. 새벽까지 실험하다가 밤을 새버렸음 - Cloudflare Tunnel은 서비스를 공개적으로 노출시키지만, Wireguard/Tailscale은 VPN임
Tailscale(Headscale은 아님)은 Funnel이라는 리버스 프록시 기능을 제공하지만, 개인 도메인은 쓸 수 없음
CF Tunnel의 대안으로는 Pangolin이 가장 비슷하고, NetBird를 리버스 프록시 기능과 함께 셀프호스팅하는 방법도 있음 - 기억하기로는 CF 약관은 미디어 캐싱을 금지한 것이지, 스트리밍 자체를 금지한 건 아니었던 걸로 앎
- 그래서 나도 같은 이유로 월 5달러짜리 VPS를 임대해서 Tailscale로 연결함
-
이건 ‘독립’에 대한 판타지라기보다 시스템 관리자가 되는 판타지 같음
- 나는 라이선스 문제로 좋아하는 음악 접근이 막힐까 걱정하지 않아도 되는 게 정말 좋음
- 독립에는 책임이 따라오는 법임. 둘은 분리될 수 없음
- 예로 r/homelab에서 NAS를 직접 만들어 아내의 사진을 Google Photos 대신 저장하게 한 사람들 얘기가 있음
하지만 솔직히 Google이나 Apple에 월 5달러 내는 게 훨씬 나은 선택 같음. 3-2-1 백업이라도 하고 있는지 의문임
-
지역 도서관에서 이런 서비스를 운영하는 자원봉사 그룹이 있으면 좋겠음
아이들이 서비스 운영을 배우고, 기술이 부족한 사람들도 오픈소스를 활용할 수 있는 좋은 기회가 될 것 같음- 하지만 문제는 항상 지원(서포트) 임
아무도 고객 지원을 맡고 싶어 하지 않음. 그래서 대부분의 서비스는 “지원은 저쪽에 문의하세요”라고 말할 수 있게 돈을 내는 구조로 되어 있음
- 하지만 문제는 항상 지원(서포트) 임
-
나는 비밀 관리용으로 fnox를 씀
sops보다 훨씬 많은 백엔드를 지원하고, DX(개발자 경험) 도 더 좋다고 느낌- 나는 Infisical을 셀프호스팅해서 사용함
- 흥미로워 보임. 지금은 SOPS를 쓰고 있는데, 대체제로 고려해볼 만함
-
‘독립적이고 준비된 남성의 판타지’라는 말이 있지만, 결국 Cloudflare가 중간에 있으니 완전한 독립은 아님
-
Cloudflare Tunnel은 정말 훌륭한 도구임
예전엔 집 IP로 직접 호스팅했지만, 지금은cloudflared로 훨씬 편하게 관리함
방화벽이나 네트워크 침입 걱정도 줄었음
내 homelab은 이제 Claude가 작성한 idempotent bash 스크립트로 관리함
의존성은 속성을 바꾸려는 사람의 욕구 때문에 복잡해지고, 그 상호작용이 버그를 만든다고 느낌
그래서 단순한 bash 스크립트로 모든 걸 표현하는 게 더 안정적임
현재는 systemd + podman 컨테이너를 사용 중이며, 내 기록용으로 메모 페이지를 남겨둠- Cloudflare가 모든 데이터를 볼 수 있다는 프라이버시 우려는 없나?
현실적인 편의성이 그 단점을 상쇄한다고 생각하는지 궁금함 - 단순히 Wireguard를 쓰는 것보다 Cloudflare Tunnel의 장점이 뭔지 알고 싶음
- Cloudflare가 모든 데이터를 볼 수 있다는 프라이버시 우려는 없나?
-
왜 다들 이런 걸 공개 인터넷에 올리는지 이해가 안 됨. 그냥 Tailscale 쓰면 되지 않나
- 앱을 설치하고 공개 URL만 지정하면 되는 게 편하긴 함. 같은 tailnet에 묶일 필요가 없으니까
- Tailscale은 과한 솔루션임. 포트 80, 443만 열고 리버스 프록시로 인증만 제대로 하면 충분히 안전함. 나는 그렇게 수년째 운영 중임
- 하지만 스마트TV처럼 Tailscale을 설치할 수 없는 외부 사용자가 Jellyfin에 접속해야 하는 경우도 있음
-
작성자가 homelab과 self-hosting을 혼동한 것 같음
self-hosting은 실제 사용하는 서비스를 운영하는 것이고, homelab은 실험과 학습용 환경임
나는 개인 데이터나 서비스를 homelab에 두지 않음. 깨질 수 있는 공간이니까 -
우크라이나에서 실제로 지하 벙커 안에서 프로덕션 트래픽을 처리하는 SaaS 회사를 본 적 있음
-
스트리밍 구독료만 연간 1,300달러가 나와서 충격받음
그래서 NAS와 36TB 하드를 사서 arr 스택을 구축하고 모든 구독을 해지함
가족 전체가 따라 하면서 연간 5~6천 달러를 절약 중임
NAS는 몇 달 안에 본전이 나올 예정이고, 이제는 전부 순이익임
Claude 코드 덕분에 설정도 몇 시간 만에 끝남
게다가 Netflix나 Hulu의 잡음 없는 콘텐츠 큐레이션이 가능해져서 훨씬 즐거움- 또 하나의 큰 장점은 고비트레이트 스트리밍이 가능하다는 점임
4K 블루레이를 리핑해서 집에서 스트리밍하면 상용 서비스보다 훨씬 고화질임 - 나는 하이브리드 방식을 씀. 저가형 구독은 유지하되, 광고 없는 최고 화질은 자체 미디어 서버에서 봄
요즘 스트리밍 서비스의 가성비가 바닥이라 느껴짐. 비싼 요금제도 1080p가 한계인 경우가 많음 - 그게 합법인지 궁금함. 업로드는 피하는 방식인지 알고 싶음
- 혹은 아예 돈도 시간도 주지 말고, 콘텐츠 소비 중독에서 벗어나 다른 취미를 찾는 것도 방법임
- 또 하나의 큰 장점은 고비트레이트 스트리밍이 가능하다는 점임