내 홈랩은 스스로 관리된다
이 글은 단일 서버 구조, UniFi 네트워크 기기, 자동화된 Docker 업데이트 및 백업을 활용해 홈랩 유지보수 시간을 월 15분으로 획기적으로 줄인 사례를 다룹니다. 복잡한 클러스터나 하이퍼바이저 대신 단순함과 자동화를 선택함으로써, IT 실무자가 개인 인프라를 효율적으로 운영할 수 있음을 보여줍니다.
날짜: 2026-06-26 제목: 내 홈랩은 스스로 관리된다
저는 제 홈랩을 관리하지 않습니다... 이 녀석은 스스로를 관리하거든요.
목차
- 인프라 1.1. 서버 1.2. 네트워크
- 소프트웨어
- 결과
사실입니다. 저는 제 홈랩을 관리하지 않습니다... 알아서 스스로 관리됩니다. 제가 이미 열반(Nirvana)에 도달한 걸까요? 이것이 홈랩bers(홈랩을 다루는 사람들)의 궁극적인 목표일까요? 견고한 홈랩을 구축하면서 어쩌다 제 스스로 직업(취미?)에서조차 자동화로 밀려난 것 같습니다. 어디서부터 이렇게 잘못(?) 된 건지 알아보겠습니다.
- 인프라 1.1. 서버 지난 몇 년간 몇 가지 다른 서버를 사용해 왔지만, 환경의 복잡성을 줄이기 위해 모든 서비스를 단일 서버로 통합했습니다(빌드 가이드는 여기). 단일 서버 설정 덕분에 유지보수가 75%(4대에서 1대로) 줄었습니다. 맞습니다. 클러스터, 하이퍼바이저, 그리고 하이브리드 클라우드 솔루션은 멋지고 화려하며 인기 있지만, 저는 그저 관심이 없을 뿐입니다. 대신, 저는 지하에 손으로 직접 들어 올릴 수 있는 단 하나의 철제 상자(서버)를 두었습니다.
'서버'가 하나 더 있긴 합니다. 라즈베리 파이 4(Raspberry Pi 4)입니다. 하지만 이 녀석은 홈 어시스턴트 OS(Home Assistant OS)를 사용하여 스스로 업데이트하며, 말 그대로 유지보수가 전혀 필요 없습니다. 이것을 정말 서버라고 불러야 할까요? 기술적 정의에 따르면 그런 것 같습니다. 하지만 결코 그렇게 느껴지지는 않습니다. 잠재적인 서버 기기를 자급자족하는 사물인터넷(IoT) 기기로 바꿔놓은 것 같습니다.
1.2. 네트워크 서버 자체를 제외하면, 미니 랙에 UniFi 기기들이 있습니다(서버도 같은 랙에 있습니다). UniFi 드림 머신 프로(Dream Machine Pro), 스위치, 그리고 몇 개의 액세스 포인트(AP)가 제 지하에 있는 개인 데이터 센터를 구성합니다. 여기서도 정말 그저 스스로 관리됩니다. UniFi는 자동 및 예약 업데이트를 지원하여 하드웨어의 수동 유지보수에서 완전히 벗어날 수 있게 해줍니다. UniFi는 정말로 "설정하고 잊어버리는(set it and forget it)" 플랫폼입니다.
- 소프트웨어 서버에는 단 한 줄의 크론탭(crontab) 명령어가 있는데, 이는 주 단위로 모든 Docker 서비스의 업데이트를 실행합니다.
0 0 * * 0 docker-update
이 명령어는 다음의 별칭(alias)입니다:
for d in ~/docker/*/; do ( cd "$d" && sudo docker compose pull && sudo docker compose up -d); done
권한 문제를 고려하기 위해 root 사용자를 통해서도 몇 가지 크론탭 일정을 실행하고 있습니다. 솔직히 말해서 이 작업들은 그저 백업을 위한 것들입니다. 백업이 필요했던 적은 한 번도 없었지만, 안전을 위해 두는 것이 좋으니까요.
매일 시스템 보고서 생성
0 8 * * * /home/cmc/daily_sys_report.sh
백업
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
앱 인식 데이터베이스 덤프
45 1 * * * mkdir -p /tank/cloud/server/backups/immich && sudo docker exec -t immich_postgres pg_dumpall -U postgres > /tank/cloud/server/backups/immich/immich-postgres-$(date +%F).sql 50 1 * * * mkdir -p /tank/cloud/server/backups/piped && sudo docker exec -t piped-postgres pg_dumpall -U piped > /tank/cloud/server/backups/piped/piped-postgres-$(date +%F).sql
ZFS 풀로 파일 백업
0 2 * * * rsync -aHAX --delete /var/lib/plexmediaserver/ /tank/cloud/plexmediaserver/ 5 2 * * * rsync -aHAX --delete /var/www/ /tank/cloud/server/web_server/ 10 2 * * * rsync -aHAX --delete /etc/nginx/ /tank/cloud/server/nginx/ 15 2 * * * rsync -aHAX --delete --exclude='/postgres/' --exclude='/postgresql/' --exclude='/mysql/' --exclude='/mariadb/' --exclude='/redis/' --exclude='/valkey/' --exclude='/database/' --exclude='/cache/' --exclude='/tmp/' --exclude='/logs/' /home/cmc/docker/ /tank/cloud/server/docker/ 20 2 * * * rsync -aHAX --delete /home/cmc/.ssh/ /tank/cloud/server/ssh/
이 외에 필요한 유일한 업데이트는 apt update를 실행하고 필요시 재부팅하는 것뿐입니다. 이 작업은 제가 원할 때 약 60초의 시간이면 충분합니다.
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
- 결과 그래서, 최종 결과는 어떨까요? 비상 상황을 제외하면 월 평균 약 15분 정도의 유지보수 시간이 소요되는 것으로 추정됩니다.
여러분에게 이것이 평범하게 들린다면, 축하드립니다. 여러분은 이미 인생의 정점을 찍으신 겁니다. 하지만 저에게는 이 시간이 터무니없이 짧습니다. 저는 예전에 서버, 데이터베이스, 앱 등의 다양한 부분을 구축하고, 유지 관리하고, 디버깅하는 데 며칠씩을 통째로 썼던 사람이니까요. 아시죠?