1P by GN⁺ | ★ favorite | 댓글 1개
  • 개인 Homelab 운영 부담을 줄이기 위해 단일 서버 구성과 자동 업데이트에 집중해, 일상적인 손봐야 할 일을 대부분 없앤 상태임
  • 여러 서버를 하나로 통합하면서 환경 복잡도가 줄었고, 서버 수 기준 유지보수도 75% 감소
  • Raspberry Pi 4는 Home Assistant OS, 네트워크는 UniFi의 자동·예약 업데이트에 맡겨 수동 관리 지점이 줄어듦
  • Docker 서비스는 주 1회 docker compose pulldocker compose up -d를 실행하는 crontab으로 갱신하고, root crontab은 주로 백업에 쓰임
  • 긴급 상황이 없다면 월간 유지보수는 약 15분이며, apt update와 재시작을 미뤄도 당장 서비스 영향은 거의 없음

단순화된 인프라 구성

  • Homelab 서비스는 여러 장비에서 단일 서버로 통합됨
    • 기존에는 4대 서버를 사용했지만, 현재는 하나의 물리 서버에 서비스를 모음
    • 클러스터, 하이퍼바이저, 하이브리드 클라우드 대신 지하실의 물리 장비 하나로 운영함
    • 이 단순화로 서버 기준 유지보수량이 75% 감소
  • Raspberry Pi 4는 별도로 있지만, Home Assistant OS가 자체 업데이트를 처리해 관리 부담이 작음
    • 기술적으로는 서버에 가깝지만, 실제 사용감은 자체 유지되는 IoT 장치에 가까움
  • 네트워크 장비는 미니 랙의 UniFi 구성으로 운영됨
    • UniFi Dream Machine Pro, 스위치, 여러 AP가 포함됨
    • 자동 업데이트와 예약 업데이트를 지원해 네트워크 장비도 수동으로 자주 만질 필요가 없음

자동화된 소프트웨어 업데이트와 백업

  • Docker 서비스 업데이트는 서버의 단일 crontab 항목으로 매주 실행됨
    • 0 0 * * 0 docker-update
    • docker-update~/docker/*/ 아래 각 디렉터리에서 sudo docker compose pullsudo docker compose up -d를 실행함
  • root 사용자 crontab은 대부분 백업 용도임
    • 매일 시스템 리포트를 생성함
    • Immich와 Piped의 PostgreSQL 덤프를 생성함
    • Plex, 웹 서버, Nginx 설정, Docker 디렉터리, SSH 파일을 ZFS 풀로 rsync 백업함
    • Docker 디렉터리 백업에서는 데이터베이스·캐시·임시 파일·일부 로그 경로를 제외함
  • 남은 수동 작업은 apt update, apt upgrade, apt autoremove 실행과 필요 시 재시작 정도임
    • 이 작업에는 약 60초가 걸림
  • 긴급 상황이 없다면 유지보수 시간은 월 약 15분 수준임
    • 한 달 동안 SSH로 접속해 업데이트하지 않아도 실제 서비스에는 영향이 없음
    • 6개월 이상 손대지 않아도 고장 나지 않을 가능성이 있지만, 일부러 시험할 계획은 없음
  • 현재 구성은 바쁜 일정 속에서도 프라이버시, 보안, 편의성 사이의 균형을 제공함

댓글과 토론

Lobste.rs 의견들
  • 집 서버도 비슷하게 운영 중임
    Debian에 무인 보안 업그레이드를 켜고, 모든 것은 버전을 고정한 루트리스 컨테이너로 돌리며, Podman Quadlet을 통해 systemd가 관리함
    Podman의 auto-update가 컨테이너 업데이트를 처리하고, systemd 타이머가 백업·이미지 정리 같은 반복 작업을 맡음
    커널 업그레이드가 있거나 이미지 버전을 올릴 때만 재부팅하러 들어가며, 이 작업은 Ansible이 처리함

    • “버전 고정”과 “Podman auto-update”가 같이 쓰인 부분이 헷갈림
      버전을 고정했다는 말은 자동으로 업데이트를 가져오지 않는다는 뜻으로 이해했는데, 실제로는 업데이트를 하고 있는 듯해서 서로 다른 대상이 업데이트되는 건지 잘 모르겠음
    • 거의 같은 구성을 10년 넘게 써왔고, 격년으로 최신 stable로 올림
      따로 관리하는 장비는 라우터 하나뿐인데 OpenBSD라 새 버전이 나오는 약 6개월마다 업그레이드함
      둘 다 지루할 정도로 안정적임
  • 비슷하지만, 원하는 기능이 생기기 전에는 아무것도 업데이트하지 않음
    셀프호스팅 소프트웨어의 좋은 점은 내 일정에 맞춰 업데이트할 수 있다는 것임
    모든 게 잘 돌아가고, Tailscale을 통해서만 접근되고 인터넷에 직접 노출되지 않는다면 하드웨어 고장을 제외하고는 그냥 놔둬도 안정적임

    • 애플리케이션이 인터넷에 직접 노출되는 것과 Tailscale을 통해 노출되는 것이 왜 다른지 궁금함
      애플리케이션에 도달하는 데이터는 결국 같으니, 같은 취약점이 악용될 수 있는 것 아닌가 싶음
  • 그런 상태라면 꽤 좋은 상황임
    나도 거기에 도달하려고 하지만 아직 완전히는 못 했음
    Debian 메이저 업그레이드는 2년마다 여전히 수작업이 필요함: "Issues to be aware of for trixie", "Obsolescence and deprecation", "Cleanup after the upgrade"
    오래된 Ansible은 최신 Debian 시스템을 다루지 못해서, Debian 서버를 올리면 Ansible 버전도 올려야 하고 결국 플레이북도 새 Ansible에 맞게 고쳐야 함
    지금은 using more Docker containers로 이를 줄이려 하지만 Ansible을 완전히 대체하긴 어려울 듯함
    freeDNS, dynv6.net처럼 직접 호스팅하고 싶지 않은 온라인 서비스도 있고, 이들도 가끔 깨지는 변경을 냄
    그래도 전체적으로는 꽤 괜찮은 편임
    솔직히 말하면 “유지보수 없는” 홈랩의 관리는 우리가 쓰는 소프트웨어, 패키지, Docker 이미지를 관리하는 전 세계 오픈소스 개발자들에게 맡기고 있는 셈임

  • 내 구성을 “홈랩”이라고 부르긴 망설여지지만, 여러 Docker 컨테이너를 돌리는 unRAID NAS임
    unRAID에 돈을 내도 만족하는 이유 중 하나가 Docker 지원이 적당히 좋고, 플러그인으로 컨테이너 자동 업데이트가 가능하며, 다른 유지보수도 꽤 단순하기 때문임

  • 개인적으로 “랩”은 실험하는 장소에 가깝고 실험 자체를 유지보수할 필요는 없다는 점이 좀 걸림
    컨테이너 사용은 장단이 섞여 있음
    어떤 프로젝트는 컨테이너가 1급 배포 수단이라 그 방식으로 제대로 업데이트를 받을 수 있음
    하지만 많은 사람이 관리가 애매한 컨테이너를 돌리는 것 같고, 거기서 문제가 많이 생길 것으로 봄
    핵심은 내가 쓰는 소프트웨어에서 업데이트를 받는 정식 경로가 무엇인지 파악하는 데 있음
    나는 주로 RHEL 클론을 자동 업데이트로 운영하고, 재부팅이 필요하면 Nagios가 알려줌
    대부분의 서비스가 RHEL이나 EPEL 안에 있어서 유지보수가 꽤 적음

  • 내 홈랩 유지보수에는 pyinfra가 딱 적당히 게으를 수 있는 수준이었음
    설정 과정을 코드로 적어둘 수 있고, 특히 설정 파일 같은 것에 유용하며, nix에서 이걸 어떻게 처리하지 같은 고민 없이 필요하면 apt를 호출하면 됨
    아주 똑똑한 도구는 아니지만 단일 셸 스크립트보다는 낫고, 앞으로 더 발전시켜보고 싶음
    에이전트형 코딩을 쓰는 경우에는 Claude에게 pyinfra 파일을 보여주고 구성 디버깅 도움을 받을 수 있다는 보너스도 있음

  • 서버에서 NixOS를 쓰고 있고, 생각날 때마다 가끔 업데이트함
    대부분은 nix flake update && nix run .#deploy 정도로 끝나서 크게 신경 쓰지 않음

  • 나도 매우 비슷한 상황인데, 인정하긴 싫지만 상당 부분은 결국 구성이 더 단순해진 덕분임
    예전에는 회전 로그까지 갖춘 전체 관측성 스택을 좋아했지만, 최근의 골치 아픈 일들은 2년 넘게 전부 그 복잡성에서 나온 사소한 문제였음
    로그와 메트릭 때문에 디스크가 꽉 차는 식의 일들임
    해결은 아주 쉽지만 이제는 그런 것들을 더는 처리하고 싶지 않음

  • docker-compose 구성을 최신으로 유지하는 데는 Watchtower가 마음에 듦
    https://hub.docker.com/r/nickfedor/watchtower
    버전을 계속 올리면서도 주요 변경을 어느 정도 감안할 수 있는 설정 옵션이 꽤 좋음
    기본 운영체제는 Debian LTS에 무인 업데이트만 켜두고, 새 커널이 나오면 재부팅하러 들어감
    정말 일이 많지 않고, 월 15분 미만이라는 말에 동의함