구독 서비스를 집으로 옮겼다: 16GB 미니 PC로 28개 서비스를 운영한 선택

영상 추천과 저장공간 구독이 번거로워 직접 운영을 택한 가족의 사례입니다. 16GB 미니 PC의 서비스 구성과 해상도 선택, 백업·접속 조건을 살펴봅니다.

16GB 메모리 중 약 7.5GB를 사용한 N100 미니 PC의 작성자 관찰값과 비율
원문 작성자가 보고한 당시 메모리 사용량. 최대 부하 측정값이 아닙니다.

스트리밍 구독을 끊은 계기는 요금만이 아니었다. 아이가 볼 작품을 정해 놓아도 추천과 다음 영상이 계속 끼어들었다. 서비스마다 자동 재생을 끄고, 앱이 바뀔 때마다 설정을 다시 챙기는 일도 번거로웠다. 10월 10일 개인 블로그 viceconsole에 올라온 운영기는 이 불편에서 출발한다. 작성자는 미디어 서버 Jellyfin을 쓰기 시작한 뒤 약 1년 반 동안 사진, 음악, 가계부 등으로 직접 운영하는 서비스를 늘렸다.

그가 소개한 구성은 인텔 N100 프로세서와 메모리 16GB를 갖춘 Beelink S12 Pro 미니 PC다. 내부 SSD는 512GB, 미디어용 외장 하드디스크는 6TB다. 글 말미에 보고한 메모리 사용량은 약 7.5GB, CPU 사용률은 30~40%였다. 서비스 28개라는 숫자를 이해하려면 기기의 사양보다 그가 어떤 기능을 줄이고 어떤 책임을 맡았는지 살펴볼 필요가 있다.

영상 서비스를 바꾸자 무엇이 달라졌나

Jellyfin은 서버에 보관한 영상을 가족이 여러 기기에서 재생하게 해 주는 소프트웨어다. 구독 서비스의 전체 작품 목록을 그대로 가져오는 방식은 아니다. 작성자는 DVD에서 추출한 영상 등을 보관하며 영어와 프랑스어 콘텐츠를 마련한다고 설명한다. 그에게 중요한 변화는 작품을 고르려고 추천 목록을 헤매지 않고 가족이 정한 라이브러리에서 찾게 됐다는 것이다.

공식 홈페이지의 예시 화면에서도 영화·음악·TV 프로그램·오디오북 라이브러리와 이어 보기 목록이 구분돼 있다. 이 화면은 작성자의 서버를 촬영한 것이 아니라 제품의 구성을 보여 주는 공식 예시다. 자동 재생을 쓰지 않고 추천을 보지 않는다는 평가는 작성자 자신의 이용 경험이다.

Jellyfin 공식 홈 화면 전체와 내 미디어·이어 보기·최근 영화의 한국어 번역 주석
원문 기반 한글 번역 주석. 공식 홈페이지 홈 화면 전체. 출처: Jellyfin

16GB로 운영하려고 어디서 부담을 줄였나

작성자는 영상을 대체로 720p로 보관한다. 4K TV가 있어도 그 정도면 충분하다는 취향에 따른 선택이다. 감시 카메라 8대를 연결한 Frigate도 카메라의 최대 해상도를 그대로 쓰지 않는다. 녹화 해상도를 낮춰 무선망과 저장장치의 부담을 줄이고, 움직임·객체 감지에는 더 낮은 해상도의 별도 영상 스트림을 쓴다. 같은 서비스 이름을 설치해도 처리할 영상의 크기와 수가 달라지면 자원 사용량은 달라진다.

소프트웨어를 고르는 방식도 비슷하다. 두 사람이 쓰는 할 일 관리에 별도 PostgreSQL이나 MySQL 서버까지 띄우고 싶지 않아 SQLite를 기본으로 쓰는 Vikunja를 골랐다. 의존성이 적은 프로그램은 운영체제에서 직접 실행하고, 복잡한 서비스는 Podman 컨테이너로 묶는다. 작성자 집계로 직접 실행하는 서비스 17개와 Podman 서비스 11개이며, 모두 리눅스의 서비스 관리자인 systemd로 관리한다. Gonic과 MPD는 각각 두 인스턴스를 쓴다고 적혀 있어, 이 집계는 실행 프로세스의 총수와도 다르다.

약 7.5GB라는 값은 이 구성에서 작성자가 htop으로 본 당시 사용량이다. 여러 명이 고해상도 영상을 동시에 변환하거나 사진을 대량 처리할 때의 최대 사용량을 뜻하지 않는다. 따라서 이 사례를 읽고 같은 미니 PC부터 사기보다는, 보관할 해상도와 가족의 동시 사용 방식을 먼저 정하는 편이 낫다.

사진을 집으로 옮기면 백업도 직접 맡는다

사진은 Immich로 옮겼다. 작성자는 유료 저장공간 안내가 반복되고 배우자의 저장공간이 자주 부족해지던 경험을 이유로 든다. 집 안에서 사진을 불러오는 속도에도 만족한다. 공식 예시에는 웹 사진 목록과 지도, 휴대전화의 앨범 및 백업 화면이 함께 나온다. 가족이 휴대전화로 찍고 찾아보는 사용 흐름을 유지하면서 보관 장소를 바꾸는 선택이다.

Immich 공식 웹·모바일 화면 모음과 사진·지도·앨범·백업의 한국어 주석
원문 기반 한글 번역 주석. README의 제품 화면 모음 전체. 출처: Immich

사진이 늘어났다고 정리가 저절로 끝나지는 않았다. 그는 중복 파일이 많이 남았고, 저장공간을 덜 걱정하게 되자 사진과 영상을 지우는 일에도 느슨해졌다고 썼다. 백업에는 Restic의 웹 관리 도구인 Backrest를 쓰고, 실패 알림을 Gotify로 받는다. 별도로 Syncthing을 이용해 Immich 사진이 맥북의 외장 드라이브에도 복사되게 했다. 맥북 쪽 동기화 모드는 받기 전용이다. 이 구성을 따라 한다면 파일 복사와 복구 가능한 백업의 차이부터 구분할 필요가 있다.

Immich 사진의 Restic·Backrest 백업 관리 경로와 Syncthing을 거쳐 맥북 외장 드라이브로 가는 별도 복사 경로
작성자가 설명한 백업 관리와 별도 사진 복사 경로를 재구성했다. Restic 백업의 저장 위치는 원문에 명시되지 않았다.

밖에서도 쓰려면 연결 조건을 받아들여야 한다

이 집의 서비스들은 공개 인터넷에 직접 열려 있지 않다. 라우터의 VPN 서버만 예외다. 집 안에서는 내부망으로, 밖에서는 VPN을 거쳐 접속한다. 통신사가 IPv4에 CGNAT를 사용해 집의 IPv4 주소로 직접 들어갈 수 없고, 작성자의 VPN은 IPv6에서만 외부 접속이 가능하다. IPv6를 제공하지 않는 공공 와이파이에서는 이 VPN을 거의 쓸 수 없어 휴대전화의 모바일 데이터로 바꾼다고 한다. 데이터 통신도 되지 않으면 이 경로는 막힌다.

서비스가 멈췄다는 가족의 말을 듣고 수동으로 재시작하던 일은 Uptime Kuma를 도입한 계기였다. 이제 장치 응답과 서비스 상태를 확인하고, 몇 차례 재시도 뒤에도 복구되지 않으면 Gotify 알림을 보낸다. 구독을 줄인 자리에 상태 확인과 장애 대응이라는 일이 들어온 셈이다. 집 자동화를 맡긴 Home Assistant도 서버 고장 때 집의 기능을 어떻게 유지할지 더 고민해야 할 대상으로 남아 있다.

작성자는 이메일까지 직접 운영하지 않는다. 송수신을 놓칠 수 없고, 들일 노력에 비해 얻는 이익이 적다고 판단했다. 구글 문서가 필요한 공유 작업이나 투자 계좌 관리도 외부 서비스를 남겨 뒀다. 이 운영기에서 참고할 것은 이전 순서다. 추천 없이 볼 영상처럼 바꾸고 싶은 용도부터 옮기고, 사진의 별도 사본과 접속이 끊겼을 때의 이용 방식을 함께 정할 수 있다.

출처: What I Self-Host, Jellyfin, Immich