Joulenap: Proxmox 백업 서버를 전원이 꺼진 상태로 유지하고 백업 시에만 깨우는 방법 (오픈 소스)
요약
Joulenap은 Proxmox VE와 별도의 PBS를 사용하는 환경을 위해 설계된 오픈 소스 백업 관리 도구입니다. 이 도구는 Wake-on-LAN(WoL) 패킷을 전송하여 PBS를 깨우고, Proxmox API로 백업 및 보존 정책을 실행한 후, SSH를 통해 장비를 종료하는 과정을 자동화합니다. 이를 통해 불필요한 상시 전력 소모를 줄이고 효율적인 백업 관리를 가능하게 합니다.
핵심 포인트
- WoL 기반으로 PBS를 깨우고 필요한 시점에만 작동하여 전력 비용 절감 효과가 큽니다.
- PVE 호스트와 여러 PBS 간의 동기화, 검증 등 복잡한 작업을 통합 관리합니다.
- Docker 단일 명령어로 설치 가능하며, 웹 UI 및 Grafana 대시보드를 지원합니다.
- Python/FastAPI, React 등으로 구성되었으며 오픈 소스로 공개되었습니다.
Joulenap은 매우 특정한 환경을 위해 설계되었습니다. 바로 Proxmox VE를 운영하고, Proxmox Backup Server(PBS)가 별도의 장비에서 실행되는 경우입니다. 제 PBS는 PC 업그레이드 후 남은 부품으로 만든 데스크톱 컴퓨터입니다. 유휴 상태일 때 전력 소비량이 약 30W로, 이탈리아에서는 연간 약 120유로 정도의 비용이 발생하는데, 밤에 고작 30분 정도만 작동하는 장비가 있습니다. 그런데 이제는 하루에 약 한 시간 동안 작동하며 비용은 5유로도 채 안 됩니다. 예약된 시간에 Joulenap이 Wake-on-LAN 패킷을 전송하고, PBS의 응답을 기다린 후, Proxmox API를 통해 백업을 실행하고, 보존 정책(GC 및 원하는 경우 검증)을 적용한 다음, SSH를 통해 장비를 종료하고 알림을 보내줍니다. 현재 버전은 1.4이며, 첫 공개는 7월이었습니다. 이 도구가 수행하는 작업들은 다음과 같습니다: 여러 PVE 호스트와 여러 백업 서버가 라우트를 통해 연결됩니다: 백업, 오프사이트 사본을 위한 PBS 간 동기화, 검증 등입니다. 두 가지 작업을 위해 필요한 장비가 그 사이 계속 켜져 있는 대신, 호스트별로 두 번 깨울 필요 없이 작동합니다: 전체(all), 목록(a list), 또는 목록을 제외한 모든 것(everything except a list)과 같은 옵션이 있습니다. 작업이 이미 PVE/PBS에 예약되어 있는 경우 외부 모드도 지원합니다: 이 경우 앱리즈(Apprise)를 통해 알림(Telegram, ntfy, 이메일, Discord 등 다수)을 보내고, 실시간 작업 로그, 모든 실행의 단계별 기록, 그리고 중지 버튼을 제공하며 장비를 깨우고 종료할 때만 작동합니다. 홈페이지/Homarr/Dashy/Glance 엔드포인트와 Prometheus 메트릭을 지원하여 Grafana 대시보드를 재포지토리에서 사용할 수 있습니다. 설치는 단일 docker run 명령으로 가능합니다 (WoL 브로드캐스트를 위해 --network host가 필요합니다). 그런 다음 웹 브라우저에서 호스트들을 추가하면, 위자드가 API 토큰과 종료용 SSH 키를 생성해 줍니다. Proxmox 호스트에는 아무것도 설치되지 않으며, cron이나 스크립트도 없습니다. 예약은 앱 내에 존재합니다. 만약 rtcwake나 타이머 기반 스크립트를 이미 사용하고 있다면 그대로 유지해도 됩니다. 그리고 PBS가 PVE와 같은 호스트의 VM인 경우에는 이 도구가 전혀 필요하지 않습니다.
지난 여름부터 이를 운영해 온 두 명의 GitHub 사용자에게 큰 감사를 표합니다. 이들이 이 프로젝트를 형성하는 데 필요한 대부분의 이슈들을 열어주었습니다: techfixpros(외부 모드, S3 동기화 작업, PBS 4.2용 패치 및 Grafana 대시보드)와 Yuelows(제외 모드, 백업 노트에 게스트 이름 포함, 그리고 제가 직접 설정으로는 절대 발견하지 못했을 수많은 동기화 버그). 또한 r/Proxmox에서 댓글을 달아준 모든 분들께 감사드립니다. 비판적인 의견도 환영합니다. AI 공개: 이 프로젝트는 'vibecoded'되었으며 오픈 소스입니다. 대부분의 코드는 AI가 작성했습니다. 저는 기능을 결정하고, 모든 변경 사항을 검토하며, 병합하기 전에 제 PVE/PBS 환경에서 직접 테스트합니다. 사용된 기술 스택은 Python/FastAPI, React, SQLite이며 라이선스는 AGPL-3.0입니다. 가짜 데이터를 이용한 데모를 제공하며 설치할 것은 없습니다: https://www.joulenap.com/demo/ GitHub 저장소는 다음과 같습니다: https://github.com/Joulenap/joulenap r/Proxmox에서 마지막 라운드의 피드백 덕분에 크게 개선되었습니다. /u/dbnsst 님이 제출했습니다. [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기