셀프 호스팅을 위한 부드러운 가이드
(knhash.in)- 클라우드와 구독형 서비스가 보편화된 2024년에, 직접 시스템을 설정하며 배우는 소프트웨어 중심 셀프 호스팅을 취미로 다시 시도해볼 만함
- 셀프 호스팅은 독점적 서비스에 대한 저항이 될 수 있지만, 시간과 정신적 비용이 크기 때문에 재미와 탐구가 가장 중요한 동기임
- 초보자는 물리 서버 없이도 시작할 수 있으며, Uberspace 같은 공유 호스팅에서 SSH로 접속해 10GB 저장공간과 1.5GB RAM 환경을 사용할 수 있음
- Uberspace에서는 Docker를 사용할 수 없지만, Uberspace Labs와 Awesome-Selfhosted를 참고해 Actual Budget과 Miniflux 같은 서비스를 운영할 수 있음
- 개인 도메인을 연결하면 서비스별 서브도메인, 커스텀 이메일 주소, 공개 파일 호스팅을 구성해 셀프 호스팅 결과물을 더 쉽게 보여주고 유지할 수 있음
클라우드 이전의 개인용 컴퓨팅 감각
- 2000년대에는 소프트웨어와 게임이 DVD로 배포됐고, 개인용 컴퓨터는 사용자가 직접 다루는 계산 장치라는 성격이 강했음
- 2010년대에는 Chromebook과 클라우드 서비스가 확산되며 많은 소프트웨어가 다른 사람의 컴퓨터에서 실행되는 방식으로 이동함
- 광고 다음으로 구독이 온라인 수익화의 주요 방식이 되면서, 편의성을 대가로 사용자가 제어권을 넘기는 흐름이 커졌음
- 그 결과 컴퓨터 과학을 배우는 세대 중 일부는 컴퓨터 애호가로 출발할 기회를 덜 갖게 됐고, 초기 해커식 태도도 약해지고 있음
취미로 접근하는 셀프 호스팅
- 셀프 호스팅은 독점이 지배하는 환경에서 디지털 자아에 대한 통제권을 되찾는 행위가 될 수 있음
- 순수한 실용성만 보면 다른 곳에 맡기는 호스팅이 더 나은 선택일 수 있음
- 안정성, 동시성, 중복성, 가용성 관리를 서비스 제공자에게 맡길 수 있음
- 비용을 아끼는 대신 시간과 정신적 부담이 커질 수 있음
- 지적으로는 시스템을 계속 조정하는 디지털 차고에 가까움
- 하루 일을 마친 뒤 자신이 좋아하는 장난감 같은 시스템을 만지는 취미가 될 수 있음
- “진짜 셀프 호스팅”의 기준을 엄격히 따지기보다, 소프트웨어 수준에서라도 즐겁게 시작하는 쪽이 중요함
공유 호스팅으로 첫 환경 만들기
- 셀프 호스팅을 시작하려면 먼저 호스팅할 공간이 필요함
- 추천 호스팅으로 Uberspace가 나옴
- “드라이버를 줄 테니 건물을 태우지는 말고 재미있게 해보라”에 가까운 방식의 호스팅임
- 월말 후불 방식이라 첫 달은 사실상 무료 체험처럼 사용할 수 있음
- 계정을 만들면 인터넷에 연결된 컴퓨터에 SSH 접속할 수 있음
- 제공 환경은 10GB 저장공간과 1.5GB RAM임
ls를 실행하면 비어 있는 새 사용자 디렉터리를 확인할 수 있음
설치할 소프트웨어를 고르는 방법
- Uberspace에서 사용할 소프트웨어를 찾을 때 두 자료가 특히 유용함
- Uberspace Labs: Uberspace에서 여러 소프트웨어를 설치하는 방법을 다루는 전용 가이드
- Awesome-Selfhosted: 셀프 호스팅 가능한 소프트웨어를 폭넓게 모은 목록이며, 커뮤니티가 어느 정도 있는 프로젝트를 찾는 데 적합함
- Uberspace에서는 Docker를 사용할 수 없음
- 메모리 제약 때문에 전체 가상화 스위트를 실행하기 어려움
- 대형 소프트웨어나 Docker 전용 설치에는 불편하지만, 소스에서 설치하거나 Docker화 과정의 최종 런타임을 빌드 이미지처럼 가져오는 우회 방식이 있음
예시 1: Actual Budget으로 재무 데이터 직접 관리
- Actual Budget은 빠르고 프라이버시 중심적인 재무 관리 앱임
- 지출, 순자산, 소비 패턴 등을 추적하고 싶은 사용자에게 맞음
- 민감한 금융 정보를 다른 서비스에 맡기지 않고, 브라우저를 통해 어디서든 접근하는 방식으로 운영할 수 있음
- 예산 방식의 중심에는 Envelope Budgeting 방법론이 있음
- Uberspace 설치 가이드는 guide_actual에서 볼 수 있음
- 보고서 섹션을 보면 금융 데이터를 잘라 보고 분석할 수 있음
- 작은 구매라고 생각했던 항목들도 한 달 동안 합쳐지면 커질 수 있음
- 통근 비용이 예상보다 많이 나간다는 식의 인사이트를 얻을 수 있음
예시 2: Miniflux와 RSS로 피드 되찾기
- Miniflux는 미니멀하고 의견이 분명한 피드 리더임
- RSS를 이용하면 좋아하는 뉴스 매체, 잡지, 블로그 글 업데이트를 한곳에서 확인할 수 있음
- YouTube 구독 채널도 광고 없는 전용 피드 타임라인처럼 구성할 수 있음
- YouTube는 RSS 피드를 제공함
- 임베드된 YouTube 플레이어에는 광고가 없음
- Uberspace에 Miniflux를 설치한 뒤 좋아하는 YouTube 채널 피드를 추가할 수 있음
- 설정에서 Fever API를 활성화하면, Fever API를 읽을 수 있는 RSS 클라이언트가 클라우드의 RSS 집계기에 접근할 수 있음
- Apple 생태계에서는 Golden Hill Software의 Unread가 추천됨
- 뉴스와 웹코믹용 피드 카테고리를 따로 둘 수도 있음
개인 도메인으로 보여줄 공간 만들기
- 셀프 호스팅의 재미 중 하나는 자신이 만든 것을 보여주는 것임
- 개인 도메인은 자신만의 온라인 공간 역할을 함
- 도메인 등록 서비스로 Porkbun이 추천됨
awesauce.com같은 도메인이 있으면 여러 구성이 가능함- Uberspace에서 호스팅하는 서비스를
actual.awesauce.com,miniflux.awesauce.com같은 서브도메인에 연결할 수 있음 - 이메일 제공자가 커스텀 도메인을 지원하면
contact@awesauce.com같은 주소를 만들 수 있음- 실제 이메일 서비스 제공자는 나중에 바꿔도 주소는 유지할 수 있음
- 커스텀 도메인 이메일은 유료일 수 있음
- 서브도메인이나 URL 경로를 GitHub 저장소에 연결해 이력서 같은 공개 파일을
awesauce.com/files/resume.pdf로 제공할 수 있음
- Uberspace에서 호스팅하는 서비스를
일부러 남겨둔 다음 탐색
- 이 글의 목표는 세부 단계별 튜토리얼보다, 직접 만져보고 싶은 호기심을 만드는 데 있음
- 독자가 직접 탐색할 과제로, 특정 상품이 재입고되거나 웹사이트가 바뀌었을 때 모바일 알림을 보내는 방법이 남아 있음
- 관련 Hacker News 토론은 해당 스레드에서 이어짐
댓글과 토론
Hacker News 의견들
-
오래된 관점으로 보면, 공유 호스팅 비용을 내는 것이 이제 “셀프 호스팅”으로 불리는 게 놀랍다. 그 자체가 나쁘다는 뜻은 아니지만, 10년 전에는 절대 셀프 호스팅이라고 부르지 않았을 것 같음
“처음부터 요리하기”의 의미가 변한 것과 비슷함. 19세기 요리책이라면 재료에 “돼지 1마리”라고 쓰고 도축하라고 했을 수도 있지만, 지금은 당연히 스티로폼 트레이에 담긴 돼지고기 부위를 사는 식임- 용어 자체에도 문제가 있음. 셀프 호스팅 커뮤니티는 /r/selfhosted를 중심으로 꽤 기술적인 분위기이고, 컴퓨터를 만지작거리는 걸 즐기는 사람들에 가깝다. 키트카 조립하는 사람들 같은 느낌임
하지만 셀프 호스팅의 이점을 누릴 수 있으면서도 모든 세부사항을 이해할 필요는 없는 사람들도 큰 시장을 이룸. 예를 들어 자기 도메인으로 관리형 서비스를 쓰면 데이터 소유권, 오픈소스 소프트웨어, 제공자 간 경쟁 같은 장점을 꽤 얻을 수 있음. 그래서 더 넓은 용어가 필요해 보이고, 요즘은 인디 호스팅이라는 표현을 쓰고 있음 - 호스팅 제공자를 쓰면, 직접 소프트웨어를 배포하더라도 셀프 호스팅이 아니라고 말할 사람은 분명 많음
일반적으로 받아들여지는 예외는 네트워크 보호 쪽임. 가능하면 집 IP 주소를 외부에 노출하고 싶지 않으니, Tailscale, Cloudflare Tunnel, 또는 VPS를 프록시로 쓰는 사람이 많음 - 나도 오래된 사람이 되어가는 듯함. 내 하드웨어에서 돌리는 것만 진짜 셀프 호스팅으로 보는 편임
그걸로도 부족하다면, 직접 키우고 손질한 돼지에서 나온 돼지고기와 집에서 염지한 베이컨도 냉동고에 있음. “새 세상에 사는 오래된 영혼”이라는 말이 꽤 잘 맞는다 - 집에서 호스팅하는 건 원래부터 가정용 인터넷 제공자의 이용약관 제한에 걸릴 수 있었음. 초창기에 셀프 호스팅을 했을 때도, 내 시스템을 남의 랙에 장착하고 그쪽 네트워크를 쓰기 위해 돈을 냈음
그 하드웨어를 빌렸든, 직접 서버를 조립했든, 제공자가 주는 가상 머신을 썼든 유지보수 작업량은 비슷함. 그래도 Wix/Squarespace, Geocities, 소셜 미디어 플랫폼을 쓰는 것과는 여전히 다름 - 원문 작성자도 어느 정도는 같은 생각임
“그래서 여기에는 ‘진짜 셀프 호스팅’은 아니지만 아무튼 셀프 호스팅에 대한 부드러운 입문을 적어본다. 고소하려면 하라.”라고 했으니까 :)
- 용어 자체에도 문제가 있음. 셀프 호스팅 커뮤니티는 /r/selfhosted를 중심으로 꽤 기술적인 분위기이고, 컴퓨터를 만지작거리는 걸 즐기는 사람들에 가깝다. 키트카 조립하는 사람들 같은 느낌임
-
셀프 호스팅을 정말 좋아하고, 지난 몇 달 동안 꽤 깊게 빠져들었음. 지금은 회사용 서비스와 홈랩을 여러 개 운영 중이고, Hetzner VPS에 Ansible + Docker Compose 파일 또는 https://github.com/coollabsio/coolify/로 배포함
awesome-selfhosted 저장소도 셀프 호스팅할 프로젝트를 찾기에 좋지만 사용 편의 기능이 부족해서, 약간의 사용자 경험 개선을 넣은 디렉터리를 https://selfhostedworld.com에 만들었음. 검색, 별 개수/인기/날짜 필터, 다크 모드가 있음- 이 주제에 잘 아는 것 같아서 묻고 싶음. 네트워크에는 아주 익숙하지 않지만 어느 정도 기술 지식이 있는 사람이, 자기 네트워크의 컴퓨터를 인터넷에 노출하는 건 얼마나 위험한가?
현대 도구와 가상 머신을 쓰면 비교적 안전한지, 아니면 매주 소프트웨어 업데이트를 확인하는 식으로 계속 신경 써야 하는지 궁금함. 오래전부터 서버를 세워보고 싶었고, 이제 여분 노트북이 생겨서 최소한 NAS라도 돌려볼까 생각 중임 - 내 SaaS도 “Heroku 대안” 섹션에 넣을 수 있을까?
https://ptah.sh - 꽤 좋다. sish와 inlets가 보이는데, 비슷한 도구를 훨씬 많이 모아둔 목록이 여기 있음: https://github.com/anderspitman/awesome-tunneling
인증 쪽은 OIDC 서버 비교도 만들어뒀음: https://github.com/lastlogin-net/obligator#comparison-is-the... - Coolify처럼 다른 서버들을 위한 관리 평면을 제공하는 소프트웨어 유형을 부르는 이름이 있을까? Dokku처럼 해당 서버 위에서 직접 실행되는 방식과 대비되는 종류 말임
- 이 주제에 잘 아는 것 같아서 묻고 싶음. 네트워크에는 아주 익숙하지 않지만 어느 정도 기술 지식이 있는 사람이, 자기 네트워크의 컴퓨터를 인터넷에 노출하는 건 얼마나 위험한가?
-
“돈으로 아낀 만큼 시간과 멘탈을 잃으니 실용적으로는 어리석다”는 말이 있는데, 셀프 호스팅 커뮤니티에서는 Kubernetes가 곱지 않은 시선을 많이 받음. 하지만 셀프 호스팅 전체가 원래 그런 면이 있으니, 아예 끝까지 가는 것도 나쁘지 않음
Dell R720XD 3대에 NixOS를 올리고 k3s 멀티 마스터로 돌리는 중임. 저장소는 rook/ceph를 쓰고, 크기가 제각각인 하드디스크가 12개쯤 있음. 제일 좋아하는 파티 묘기는 동영상 스트리밍 중에 클러스터에서 아무 하드디스크나 뽑아버리는 것인데, 전혀 신경 쓰지 않음. 다시 꽂으면 아무 일도 없었던 것처럼 돌아오고, 아직 공간도 많이 남아 계속 호스팅할 유용한 것들을 찾는 중임- 셀프 호스팅에 k8s나 k3s를 쓰는 사람은 많음. 다만 대부분에게는 추가 복잡도에 비해 얻는 게 충분하지 않음. 대개 단일 노드라서 Docker만으로 필요한 일을 다 할 수 있다는 점도 고려해야 함
개인적으로는 작은 데스크톱 4대 구성인데도 Docker Swarm을 씀. 가진 하드웨어라면 전기요금만 월 200달러는 쉽게 나올 것 같음. Docker Swarm은 오래되고 인기는 없지만, 순정 Docker보다 아주 조금 더 복잡할 뿐이고 다중 노드 배포와 오케스트레이션에는 필요한 걸 다 해줌 - 나는 NixOS를 가상 머신으로 쓰고, 서비스는 컨테이너로 직접 실행함. Docker Compose 프로젝트를 NixOS에서 쉽게 돌리게 해주는 도구도 만들었음 [1]
이렇게 하면 NixOS 설정의 장점을 얻으면서도 nixpkgs에 없을 수 있는 임의의 애플리케이션을 실행할 수 있음. 저장소는 하이퍼바이저인 Proxmox에서 ZFS를 쓰고, 로컬에서는 NFS로 노출함
[1] https://github.com/aksiksi/compose2nix - 홈랩에서 k8s는 과함. 그래도 하는 이유는 셀프 호스팅이 실용성 1에 학습 2의 비율이기 때문임
- 셀프 호스팅에 k8s나 k3s를 쓰는 사람은 많음. 다만 대부분에게는 추가 복잡도에 비해 얻는 게 충분하지 않음. 대개 단일 노드라서 Docker만으로 필요한 일을 다 할 수 있다는 점도 고려해야 함
-
원문은 이 부분을 잘 짚었음: “2024년이니, 이제 우리 시스템을 직접 설정하는 근본적인 즐거움을 다시 돌아볼 때다.”
셀프 호스팅은 정말 즐겁다. 학습, 도전, 실용성이 섞여 있기 때문임. Actual Budget과 Changedetection.io에는 +1. 하지만 위협 모델링과 보안을 다루지 않은 건 -1임. 원문 작성자는 HTTPS를 쓰지만 웹사이트를 공개 인터넷에 열어둠. 처음 시작하는 사람은 LAN 전용으로 호스팅하거나 아주 강하게 잠가야 함. 다만 공유 호스팅에서는 IP 제한이나 터널링 같은 게 없으면 까다로울 수 있고, uberspace가 그런 걸 제공하는지는 모르겠음. 초기 단계를 지난 사람에게는 여러 앱을 나란히 더 많이 돌리기 위해 Docker 같은 걸 추천함. 묶음 의존성 최고임. Docker 방식도 다루는 내 책 홍보를 조금 하자면: https://selfhostbook.com -
다른 오래된 사람들 쪽에 동의함
소유하거나 임대한 공간에서 자기 하드웨어가 돌아가는 게 아니면 셀프 호스팅이 아님. 지금은 작은 Micro-ITX 박스 하나를 쓰지만, 예전에는 6U 서버, UPS, 네트워크 장비가 들어간 제대로 된 서버 랙도 있었음. 결혼하기 전 얘기임 -
셀프 호스팅을 아주 좋아함. 작은 취미 프로젝트를 하면서 많이 배웠다
내 구성이 궁금한 사람을 위해 적자면, eBay에서 중고 Dell R630을 싸게 샀음. SSD 1TB RAID 1, RAM 32GB, 코어 32개 구성이고 Docker, virsh, minikube로 작은 취미 앱들을 돌리며 즐기는 중임. 셋 다 배웠다. 1Gbps 광 회선이 있고, IP가 바뀌었는지 1분마다 cron 작업으로 감지한 뒤 Linode API로 DNS A 레코드를 바꿈 -
RAM 1.5GB, 디스크 10GB라고? Hetzner 기본 클라우드 VPS는 4GB RAM과 40GB 디스크가 4.51유로임
- 내가 아는 한 Oracle Cloud를 이기기 어려워 보임: https://www.oracle.com/cloud/costestimator.html
컴퓨트는 “각 테넌시마다 Ampere A1 Compute 인스턴스를 만들 수 있도록 매월 처음 3,000 OCPU 시간과 18,000GB 시간을 무료로 제공한다. 이 무료 등급 사용량은 베어메탈, 가상 머신, 컨테이너 인스턴스 전체에 공유된다.”고 함. 블록 저장소는 “Block Volume 서비스 무료 등급 허용량은 전체 테넌시에 대해 총 200GB다. 같은 테넌시에 여러 견적이 있으면 총 200GB만 적용된다.”는 식임. 즉 4코어 ARM CPU + 24GB RAM + 200GB 공간을 무료로 갖는 셈임 - 잠재적인 가격 차이도 보고 있나?
- 내가 아는 한 Oracle Cloud를 이기기 어려워 보임: https://www.oracle.com/cloud/costestimator.html
-
스포일러를 하자면, 이 글은 셀프 호스팅이 아니라 공유 호스팅에 관한 글임
-
그런데 누군가 귓가에 K8S라고 속삭이면…
- 그러고 보니 다음 업그레이드 창을 준비하려고 내 홈랩 K3S 클러스터에 업데이트된 CRD를 먹이러 가야겠음
-
이 가이드를 졸업하면 /r/homelab과 /r/homedatacenter도 꼭 확인해보면 좋음 ;)
- https://lemmy.world/c/selfhosted와 https://www.reddit.com/r/selfhosted/도 있음. 셀프 호스팅 관련해서 유용한 Matrix 채팅방도 몇 개 있음: #selfhosted:matrix.org, #self-hosted:jupiterbroadcasting.com, #steadfast:matrix.org