TRENDSHIFT · 2026.06.16

Self-Hosting-Guide 딥다이브
— "내 데이터를 내 서버에" 셀프호스팅 생태계 전체 지도

Self-Hosting-Guide(mikeroyal/Self-Hosting-Guide)는 코드가 아니라 "지식"을 담은 저장소다. 구글 드라이브·드롭박스·노션 같은 월 구독형 SaaS를 내 집 서버(또는 라즈베리파이·VPS)로 갈아타기 위해 필요한 거의 모든 것 — 컨테이너(Docker/Podman), VPN(WireGuard), 파일동기화(Nextcloud), 모니터링(Grafana), 쿠버네티스, 네트워킹, 보안, 머신러닝, 그리고 7개 프로그래밍 언어 가이드까지 — 을 하나의 거대한 큐레이션 문서로 엮은 awesome-list형 학습 지도다. (저장소: mikeroyal/Self-Hosting-Guide · ★21,100+ · fork 1,000+ · 주 언어 Dockerfile · 마지막 갱신 2025-06)

이 문서는 README를 그대로 번역하지 않는다. 대신 "셀프호스팅을 처음 배울 때 어떤 순서로, 어떤 기술을 쌓아야 하는가"라는 학습 로드맵 관점에서 이 가이드를 해부한다.
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 — 셀프호스팅 스택의 해부
  5. 문서 구조 해부 (디렉토리 대신 목차)
  6. 학습 포인트 (기술별)
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"구독 끊고 직접 호스팅하고 싶은 사람을 위한,
한 권짜리 백과사전 + 학습 로드맵."

Self-Hosting-Guide는 실행되는 소프트웨어가 아니다. 거대한 README 한 장(약 59만 자)에 셀프호스팅에 필요한 개념 설명, 도구 목록, 학습 자료 링크를 주제별로 모아 둔 awesome-list다. "넷플릭스 대신 Jellyfin, 드롭박스 대신 Nextcloud, 구글 포토 대신 Immich를 내 서버에 올리려면 무엇을 알아야 하나?"에 대한 단계별 답안지라고 보면 된다.

이 저장소의 주 언어가 Dockerfile로 잡히는 이유도 여기 있다. 실제 애플리케이션 코드는 거의 없지만, 레포에 포함된 Getting Started with Self-Hosting.dockerfile 예시 파일 하나 때문에 GitHub이 주 언어를 Dockerfile로 분류한 것이다(README 안의 코드블록은 언어 감지 대상이 아니다). 즉 "코드를 읽는 레포"가 아니라 "지도를 따라 직접 서버를 구축하는 레포"다.

핵심 용어
셀프호스팅(Self-Hosting)
SaaS(월 구독 클라우드 서비스)에 맡기던 소프트웨어를, 내가 소유·관리하는 서버(집 안 PC·라즈베리파이·임대 VPS)에 직접 설치해 운영하는 것. 데이터 주권·프라이버시·비용 절감이 동기이고, 운영 책임도 내가 진다.

2왜 주목받는가

왜 ★2만 개를 넘기고 지금도 트렌딩에 오르는가.

셀프호스팅은 최근 몇 년간 꾸준히 커지는 흐름이다. 구독료 인상, 클라우드 서비스의 갑작스러운 정책 변경·서비스 종료, 프라이버시 우려, 그리고 라즈베리파이·미니PC·중고 서버의 가격 하락이 맞물리면서 "내 데이터는 내가 들고 있겠다"는 사람이 늘었다. 이 가이드가 트렌딩에 오르는 이유는 다음과 같다.

강점 1 — 입구가 하나다

셀프호스팅 입문자가 가장 막히는 지점은 "무엇부터 배워야 할지 모른다"는 것이다. Docker, 네트워킹, 리버스 프록시, DNS, 백업, 보안… 흩어진 지식을 하나하나 검색해야 한다. 이 레포는 그 모든 갈래를 한 페이지의 목차로 묶어 "여기서 출발하라"를 제공한다.

강점 2 — 단순 앱 목록을 넘어선다

유명한 awesome-selfhosted가 "설치할 수 있는 앱 카탈로그"라면, 이 가이드는 그 앱을 돌리기 위한 인프라 지식(컨테이너·VPN·쿠버네티스·모니터링·보안·언어별 개발)까지 포함한다. 앱을 고르는 곳이 아니라, 앱을 돌릴 실력을 쌓는 곳이다.

강점 3 — 한 명의 큐레이터가 만든 일관성

mikeroyal은 같은 형식의 거대 가이드(Apple, Linux, Windows, Machine Learning, Cybersecurity 등) 시리즈를 운영하는 큐레이터다. 덕분에 각 주제가 "개념 → 학습 자료 → 도구"라는 동일한 틀로 정리돼, 어느 섹션을 펼쳐도 같은 방식으로 읽힌다.

균형 잡힌 시각
단점도 분명하다

① 깊이보다 넓이. 각 주제는 "여기 좋은 자료 링크들이 있다" 수준이라, 실제 설치·트러블슈팅은 외부 문서로 넘어가야 한다. ② 링크 부패(link rot). 수천 개 외부 링크 중 일부는 시간이 지나 죽는다. ③ 거대한 단일 README. 59만 자가 한 파일이라 브라우저에서 무겁고, 원하는 항목 찾기가 Ctrl+F 의존적이다. 이 가이드는 "지도"이지 "매뉴얼"이 아니다 — 방향을 잡는 용도로 쓰고, 실제 시공은 각 도구 공식 문서로 한다.

3기술 스택 전체 지도

이 가이드가 다루는 기술을 "셀프호스팅 스택" 층위로 재배열했다.

README는 주제를 나열식으로 늘어놓지만, 실무에서는 아래에서 위로 쌓는 계층으로 이해하는 게 빠르다. 하드웨어 위에 OS, 그 위에 컨테이너 런타임, 네트워킹·보안으로 감싸고, 맨 위에 실제 앱을 올린다.

계층역할가이드가 소개하는 대표 도구
① 하드웨어물리 서버 본체Raspberry Pi, 미니PC, NAS, 중고 서버, 또는 임대 VPS
② OS운영체제 기반Linux(Ubuntu/Debian), Raspberry Pi OS, TrueNAS
③ 컨테이너앱 패키징·격리Docker, Podman, Docker Compose, Portainer
④ 오케스트레이션다중 노드 자동화Kubernetes(K8s), Ansible
⑤ 네트워킹/접속안전한 원격 접근WireGuard(VPN), 리버스 프록시, DNS
⑥ 보안방어·인증·프라이버시OpenSSF, OAuth, 차등 프라이버시(Differential Privacy)
⑦ 관측(Observability)상태 모니터링Grafana, 데이터 시각화 도구
⑧ 데이터저장·DBSQL/NoSQL DB, 백업, MinIO(오브젝트 스토리지)
⑨ 애플리케이션실제 쓰는 서비스Nextcloud(파일), Home Assistant(홈오토), 로컬 LLM(ollama·LocalAI·llama.cpp), 검색·미디어 서버
(부록) 개발직접 만들기Node.js, Python, Rust, Go, C/C++, Java, Swift 가이드
비유

셀프호스팅 스택은 집 짓기와 같다. ① 땅(하드웨어) → ② 기초공사(OS) → ③ 조립식 방(컨테이너) → ④ 여러 채 관리(쿠버네티스) → ⑤ 대문·울타리·전용 통로(VPN·프록시) → ⑥ 보안 시스템 → ⑦ CCTV(모니터링) → ⑧ 창고(스토리지) → ⑨ 실제 가구·가전(앱). 입문자는 ①③⑨만으로도 시작할 수 있고, 규모가 커질수록 ④~⑦을 더한다.

핵심 도구 4종 빠르게 짚기

컨테이너
Docker / Podman
앱과 그 의존성(라이브러리·설정)을 하나의 "이미지"로 묶어, 어느 컴퓨터에서나 똑같이 실행되게 하는 패키징·격리 기술. Podman은 Docker와 호환되면서 데몬 없이(rootless) 돌릴 수 있어 보안상 유리하다.
VPN
WireGuard
최신 암호학 기반의 가볍고 빠른 VPN. 집 밖에서 내 서버에 포트를 인터넷에 직접 열지 않고 안전하게 접속하는 표준 방법. 코드가 IPsec보다 훨씬 작아 감사·운영이 쉽다.
애플리케이션
Nextcloud
셀프호스팅의 "대표 앱". 파일 동기화·공유·캘린더·문서 협업을 제공하는 오픈소스 플랫폼으로, 구글 드라이브/드롭박스/오피스를 대체한다.
관측
Grafana
서버·서비스의 지표(CPU·메모리·트래픽 등)를 대시보드로 시각화하는 도구. 보통 Prometheus 같은 수집기와 짝지어, "내 서버가 지금 건강한가"를 한눈에 본다.

4아키텍처 심화 — 셀프호스팅 스택의 해부

가이드의 도구들이 실제로 어떻게 한 시스템으로 엮이는가.

이 레포에는 "아키텍처"라는 코드가 없으므로, 가이드가 설명하는 개념을 현실적인 1대 서버 셀프호스팅 구성으로 조립해 보면 다음과 같다. 외부에서 들어온 요청이 어떤 길을 거쳐 컨테이너 안의 앱에 닿는지가 핵심이다.

┌──────────────────────────── 인터넷 ────────────────────────────┐ │ │ │ 집 밖 기기 ──(암호화 터널)──► WireGuard VPN ──┐ │ │ (노트북/폰) │ │ └────────────────────────────────────────────────── │ ──────────┘ ▼ ┌──────────────────── 내 서버 (Linux + Docker) ───────────────────┐ │ │ │ [리버스 프록시] Nginx / Traefik / Caddy │ │ · 도메인별 라우팅 · HTTPS(TLS) 인증서 자동 발급 │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Nextcloud│ │ Immich │ │ Grafana │ ← Docker 컨테이너 │ │ │ (파일) │ │ (사진) │ │ (모니터) │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────────────────────────────────┐ │ │ │ 데이터 계층: PostgreSQL · 볼륨 · │ │ │ │ MinIO(오브젝트) · 정기 백업 │ │ │ └──────────────────────────────────────┘ │ │ │ │ 감싸는 층: 방화벽 · fail2ban · 자동 업데이트 · 모니터링 알림 │ └──────────────────────────────────────────────────────────────┘

핵심 설계 패턴 3가지

패턴 1 — 컨테이너당 한 서비스

각 앱(Nextcloud, Grafana 등)을 독립 컨테이너로 띄우고 docker compose로 묶는다. 한 앱이 죽어도 다른 앱에 영향이 없고, 업그레이드·롤백이 컨테이너 단위로 깔끔하다. README의 Docker 예시들이 모두 이 패턴이다.

패턴 2 — 단일 진입점(리버스 프록시)

여러 앱이 각자 포트를 열지 않고, 리버스 프록시 하나가 80/443만 받아 도메인으로 분기한다. cloud.mydomain.com→Nextcloud, photos.mydomain.com→Immich 식. HTTPS 인증서도 프록시가 한 곳에서 자동 관리한다.

패턴 3 — 포트 노출 대신 VPN

가장 안전한 접근법은 인터넷에 아무 포트도 열지 않고 WireGuard 터널로만 들어오는 것. 외부 공격면(attack surface)을 0에 가깝게 줄인다. 외부 공유가 꼭 필요한 서비스만 프록시로 선별 노출한다.

초보자 함정
"일단 포트포워딩으로 열어두기"

라우터에서 서버 포트를 인터넷에 바로 열면 즉시 봇 스캔·무차별 대입 공격의 표적이 된다. 최소한 VPN 또는 인증 프록시 뒤에 두고, 방화벽·자동 보안 업데이트·강한 비밀번호·2FA를 기본으로 깔아야 한다. 이 가이드의 "Open Source Security" 섹션이 그래서 중요하다.

5문서 구조 해부 (디렉토리 대신 목차)

파일이 아니라 README의 목차가 곧 이 레포의 "구조"다.

이 저장소는 사실상 README.md(약 59만 자) 하나가 본문 전부이고, 그 외엔 짧은 Getting Started with Self-Hosting.dockerfile 예시와 CONTRIBUTING.md가 전부다. 따라서 "디렉토리 구조" 대신 목차를 학습 묶음으로 그룹핑해 두면 길을 잃지 않는다.

Self-Hosting-Guide/ └── README.md ← 전부 여기 (약 59만 자) │ ├─ A. 시작하기 ............ Getting Started · 컨테이너 · Docker · Podman ├─ B. 핵심 앱 ............. WireGuard · Nextcloud · Raspberry Pi · Grafana ├─ C. 인프라/운영 ......... Networking · Kubernetes · Ansible · Databases ├─ D. 보안/프라이버시 ..... Open Source Security · Differential Privacy ├─ E. 응용 분야 ........... Machine Learning · IoT · Home automation · │ Robotics · Mesh networks · Blockchain · │ Telco 5G · Search · Data Visualization └─ F. 언어별 개발 가이드 .. Node.js · C/C++ · Java · Python · Rust · Swift · XML

각 묶음은 거의 동일한 내부 패턴을 따른다 — ① 개념 정의 → ② Learning Resources(공식 문서·강의·자격증) → ③ Tools(도구·프레임워크 목록). 이 패턴을 알면 처음 보는 섹션도 빠르게 스캔할 수 있다.

읽는 목적먼저 펼칠 묶음
처음 셀프호스팅 시작A(시작하기) → B의 Nextcloud/Raspberry Pi
집 밖에서 안전하게 접속B의 WireGuard → D(보안)
여러 서버로 확장C의 Kubernetes·Ansible
서버 상태 감시B의 Grafana → C의 Databases
직접 앱 개발F(언어별 가이드) + E의 ML

6학습 포인트 (기술별)

이 가이드를 거치며 실제로 손에 남기면 좋은 것들.

Docker / 컨테이너 — 모든 것의 기초

셀프호스팅의 90%는 컨테이너로 한다. docker compose 파일 하나를 읽고 쓸 줄 알면 대부분의 앱을 올릴 수 있다. 아래는 셀프호스팅에서 가장 자주 보는 형태다.

# docker-compose.yml — Nextcloud + DB 최소 구성
services:
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: change-me
    volumes:
      - ./db:/var/lib/postgresql/data   # 데이터는 볼륨에 영속
  app:
    image: nextcloud:latest
    ports:
      - "8080:80"                       # 호스트 8080 → 컨테이너 80
    depends_on: [db]
    volumes:
      - ./data:/var/www/html            # 파일/설정 보존

여기서 배울 핵심: volume(데이터 영속), ports(포트 매핑), depends_on(기동 순서), environment(비밀·설정 주입). 이 네 가지만 이해하면 README의 거의 모든 Docker 예시가 읽힌다.

네트워킹 — 가장 안 보이지만 가장 자주 막히는 곳

포트, DNS, 리버스 프록시, HTTPS 인증서, NAT/포트포워딩 — 셀프호스팅 트러블슈팅의 대부분이 네트워킹이다. 가이드의 "Networking" 섹션으로 OSI 계층·프로토콜 감을 잡고, 실제로는 리버스 프록시(Caddy가 입문 난이도 최저) 한 개를 세워 보는 게 가장 빠른 학습이다.

보안 — 옵션이 아니라 전제

내 서버를 인터넷에 두는 순간 공격 대상이 된다. 최소 권한, 정기 업데이트, 백업, 2FA, VPN 우선이 기본기다. 가이드의 OpenSSF·차등 프라이버시 섹션은 "조직 수준"까지 다루지만, 개인은 위 5개만 지켜도 안전도가 급상승한다.

실습 아이디어
"한 줄도 안 빼고 따라하지 말 것"

이 가이드를 잘 쓰는 법은 목차에서 지금 필요한 1개 주제만 펼쳐, 거기 링크된 공식 문서로 직접 한 번 설치해 보는 것이다. 예: 이번 주는 "Docker로 Nextcloud 올리기"만. 한 번에 전부 읽으려 하면 59만 자에 깔린다.

7하드웨어 / 시스템 요구사항

"셀프호스팅 하려면 뭘 사야 하나"에 대한 현실적 답.

가이드는 라즈베리파이를 비중 있게 다룬다. 입문용으로 충분하지만, 무엇을 돌리느냐에 따라 권장 사양이 다르다.

용도현실적 하드웨어비고
입문·소규모(파일·홈오토)Raspberry Pi 4/5 (4~8GB) + SSD저전력 24시간 가동, 입문 비용 최저
가족용 사진·미디어미니PC(N100급) 또는 NAS트랜스코딩·다수 앱에 RAM·CPU 여유 필요
다중 앱·여러 사용자중고 워크스테이션/서버, 16GB+가상화·다수 컨테이너 동시 운용
집에 둘 수 없을 때임대 VPS(클라우드)물리 장비 없이 시작, 월 비용 발생
자주 빠뜨리는 것
저장장치와 백업

라즈베리파이의 microSD는 쓰기 수명이 짧아 DB·로그를 올리면 금방 망가진다 — SSD/USB 부팅을 권장한다. 그리고 셀프호스팅의 진짜 비용은 본체가 아니라 백업이다. 내 데이터를 내가 책임지는 만큼, 3-2-1 백업(사본 3개·매체 2종·오프사이트 1개)은 선택이 아니다.

8직접 해볼 수 있는 실습 과제

가이드를 "읽기"에서 "하기"로 바꾸는 난이도별 과제.

① 첫 컨테이너 띄우기 난이도 ★☆☆☆☆

Docker를 설치하고 docker run -d -p 8080:80 nginx로 웹서버 하나를 띄워 브라우저에서 확인한다. 컨테이너의 "이미지→실행→포트" 흐름을 몸으로 익히는 단계.

② Compose로 Nextcloud 구축 난이도 ★★☆☆☆

위 §6의 compose 파일로 Nextcloud + PostgreSQL을 올리고, 파일 업로드·앱 설치까지 해본다. volume로 데이터가 컨테이너 재시작 후에도 살아있음을 확인한다.

③ 리버스 프록시 + HTTPS 난이도 ★★★☆☆

Caddy를 앞단에 세워 cloud.내도메인으로 Nextcloud에 접속되게 하고, Caddy가 자동으로 TLS 인증서를 발급하게 한다. "포트 노출 → 도메인 라우팅"으로의 전환을 경험한다.

④ WireGuard로 집 밖 접속 난이도 ★★★★☆

WireGuard 서버를 세우고 폰에 클라이언트를 설정해, 인터넷에 포트를 열지 않고 외부에서 내 서버에 접속한다. 공격면을 줄이는 가장 실용적 패턴을 체득한다.

⑤ Grafana 모니터링 대시보드 난이도 ★★★★★

Prometheus + node_exporter로 서버 지표를 수집하고 Grafana 대시보드로 CPU·메모리·디스크를 시각화한다. 알림(임계치 초과 시 통지)까지 붙이면 "운영" 단계에 진입한 것.

9관련 기술 심화 학습 로드맵

이 가이드를 4주 코스로 압축한다면.

주차주제도달 목표
1주차Linux 기본 + DockerSSH 접속, 컨테이너 실행/중지, compose 읽기
2주차앱 1개 운영(Nextcloud)볼륨·백업·업데이트까지 한 사이클 경험
3주차네트워킹 + 프록시 + HTTPS도메인 라우팅, TLS 자동화, 포트 이해
4주차보안 + VPN + 모니터링WireGuard 접속, 방화벽·2FA, Grafana 대시보드
이후Kubernetes / Ansible여러 서버로 확장·자동화(규모가 필요할 때만)
조언

대부분의 개인 셀프호스터는 1~4주차까지로 충분하다. 쿠버네티스·Ansible은 "서버가 여러 대로 늘어 손으로 관리가 힘들 때" 비로소 필요해지는 것이지, 입문 단계에서 먼저 손댈 도구가 아니다. 가이드의 분량에 압도되지 말고 필요해질 때 해당 섹션을 펼치는 사전(辭典)처럼 쓰는 게 정석이다.

10핵심 키워드 사전

가이드를 읽다 막히는 용어 빠른 참조.

SaaSSoftware as a Service. 월 구독으로 쓰는 클라우드 소프트웨어(구글 드라이브 등). 셀프호스팅이 대체하려는 대상.
컨테이너앱+의존성을 묶어 격리 실행하는 표준 단위. Docker가 대표.
이미지컨테이너의 "설치 파일". 실행하면 컨테이너가 된다.
볼륨(Volume)컨테이너가 사라져도 데이터를 보존하는 저장 공간 연결.
Compose여러 컨테이너를 YAML 한 파일로 정의·기동하는 도구.
Podman데몬 없이(rootless) 도는 Docker 호환 컨테이너 엔진. 보안 이점.
리버스 프록시외부 요청을 받아 도메인별로 내부 앱에 분배하고 HTTPS를 관리하는 단일 진입점.
WireGuard가볍고 빠른 최신 VPN. 포트를 열지 않고 안전하게 원격 접속.
Kubernetes(K8s)다수 컨테이너의 배포·확장·복구를 자동화하는 오케스트레이션 시스템.
Ansible서버 설정을 코드로 정의해 자동 적용하는 구성 관리 도구.
Observability관측가능성. 지표·로그·추적으로 시스템 상태를 파악하는 것(Grafana 등).
차등 프라이버시데이터에 통계적 잡음을 더해 개인을 식별 불가능하게 보호하는 기법.
3-2-1 백업사본 3개·매체 2종·오프사이트 1개. 데이터 손실 방어의 표준 규칙.
awesome-list특정 주제의 좋은 자료·도구를 큐레이션해 모은 GitHub 문서 형식.

11참고 링크