콘텐츠로 이동

기능

BombVault는 기본적으로 간단하고 필요할 때 깊이가 있습니다. 간단히 보기 / 고급 보기 스위치를 켜기 전까지는 인터페이스가 필수 항목만 표시합니다. 이 페이지는 전체 기능 세트를 정리합니다.

백업 범위

대상 저장되는 항목
Docker 컨테이너 Appdata 디렉터리와 컨테이너 정의(이미지, 환경 변수, 포트, 레이블, 볼륨).
KVM / libvirt VM VM 디스크 이미지, XML 정의, UEFI NVRAM(정상 종료 또는 라이브 스냅샷, SSH를 통해). 라이브 스냅샷은 스냅샷을 만들 수 없으면 자동으로 정상 종료 백업으로 대체되므로, VM 백업이 그냥 오류로 끝나는 일은 없습니다.
Unraid 플래시 USB 플래시 전체(/boot): OS, 라이선스, 배열 구성, 공유, 네트워크 및 플러그인 구성. 복원은 원클릭 .zip 다운로드이며 실행 중인 플래시를 절대 덮어쓰지 않습니다.
앱 구성 BombVault 자체 /config(설정 데이터베이스, 오프사이트 자격 증명, libvirt SSH 키 쌍). SQLite VACUUM INTO로 스냅샷되므로 WAL 모드 데이터베이스가 쓰기 도중에 캡처되는 일이 없습니다. 자체 재시작을 통해 복원되므로, 열려 있는 핸들 아래에서 실행 중인 데이터베이스가 덮어쓰이는 일이 없습니다.
파일 및 폴더 이름이 지정된 파일 세트: 서버의 모든 폴더(공유, 문서, 사진 라이브러리), 각각 선택적으로 세트별 제외 패턴을 가질 수 있습니다. 다른 도메인과 완전한 동등성을 갖습니다(일정, 보존, 오프사이트 복사, 무결성 검사, 복원 리허설).

복원

  • 원클릭 전체 복원. 스냅샷을 선택하고 복원을 클릭하세요. 끝.
  • 로컬 또는 오프사이트에서 복원. 모든 백업 브라우저에는 로컬 / 오프사이트 스위치가 있어, 로컬 저장소를 잃거나 손상되면 오프사이트 복제본에서 바로 목록을 보고 복원할 수 있습니다. 삭제는 소스별로 적용됩니다: 백업을 제거해도 보고 있는 사본에만 영향을 줍니다.
  • 컨테이너는 자동으로 재설치됩니다. 컨테이너 정의가 Docker API에 대해 재생되므로, 컨테이너가 이전과 똑같이 Unraid Docker 탭에 다시 나타납니다.
  • VM은 자동으로 재생성됩니다. SSH를 통해 XML이 다시 가져와지므로, VM이 디스크와 UEFI NVRAM이 다시 연결된 상태로 VM Manager에 다시 나타나며, VM이 삭제된 후에도 마찬가지입니다. 백업 검색은 완전히 사라진 항목(예: 새로 설치한 후)을 재구성합니다.
  • 개별 복원. 다른 것을 건드리지 않고 컨테이너 하나, VM 하나, 파일 세트 하나를 복원합니다.
  • 플래시 복원은 .zip 다운로드입니다. flash-<id>.zip으로 브라우저에 스트리밍되어, Unraid USB 작성기에 바로 넣을 준비가 됩니다. 실행 중인 /boot은 절대 건드리지 않습니다.
  • 예약된 플래시 zip 내보내기. 매 플래시 백업 후, 선택적으로 스냅샷을 선택한 폴더에 일반 .zip으로 기록합니다(매번 덮어쓰이는 단일 flash-latest.zip 또는 순환 기록). Syncthing 또는 rclone 폴더를 가리키게 하면 부팅 가능한 USB 백업이 자동으로 서버 밖으로 나갑니다.
  • 사전 점검 충돌 검사. 어떤 것이 중지되거나 제거되기 전에, 복원은 컨테이너의 고정 IP와 게시된 호스트 포트가 비어 있는지 확인하고, 중간에 끝난 복원을 남기는 대신 명확한 메시지와 함께 중단합니다.
  • 파일 수준 복원. 컨테이너 스냅샷의 파일을 펼치고, 필터링하고, 원하는 수만큼 파일과 폴더를 체크한 다음, 선택 항목을 제자리에 또는 선택한 폴더에 복원합니다.
  • 파일 세트 복원. 파일 세트 스냅샷을 제자리에(명시적 확인 후) 또는 선택한 폴더에 복원하며, 절대 조용히 하지 않습니다. 선택적 복원도 여기서 작동합니다.
  • 복원은 실행 상태를 유지합니다. 백업 시 실행 중이던 컨테이너나 VM은 실행 중인 상태로 돌아오고, 중지되어 있던 것은 중지된 채 유지됩니다. 복원 후 중지된 상태로 둠을 체크하면 시작하지 않고 재생성합니다.
  • 스택 전체 복원. 같은 Docker Compose 프로젝트의 컨테이너는 스택 패널로 그룹화됩니다. 스택 복원은 각 멤버를 최신 백업에서 중지된 상태로 재구성한 다음, 선택적으로 depends_on 순서대로 시작합니다.
  • 실시간 진행 상황, 취소, 처리 중 피드백. 오래 걸리는 복원은 실시간 백분율 막대를 표시하며, 유형을 인식하는 확인과 함께 취소할 수 있습니다. 취소된 복원은 실패가 아니라 취소됨으로 기록됩니다.
  • 안내형 복구. 전용 복구 탭이 새로 설치한 상태에서 재해 상황을 안내합니다. 오프사이트 및 복구를 참고하세요.
  • 다른 BombVault 저장소에서 복원. 일회성 읽기 전용 세션이 그 인스턴스의 APP_KEY로 다른 BombVault 인스턴스의 저장소를 열어, 자체 설정을 건드리지 않고 서버 A에서 서버 B로 컨테이너를 가져올 수 있습니다. 오프사이트 및 복구를 참고하세요.

스토리지 및 예약

  • restic을 통한 증분, 중복 제거 백업이므로 큰 VM 디스크조차 저장소를 부풀리지 않습니다.
  • 대상: 로컬 경로 또는 오프사이트. SMB/CIFS와 NFS(Unraid에 공유를 마운트하고 백업 경로를 그곳으로 지정), rclone 없는 네이티브 restic 백엔드(s3:..., rest:http://host:8000/repo, b2:..., sftp:user@host:/repo), 또는 rclone:<remote>:<bucket>/path를 통한 모든 rclone 원격. 모든 자격 증명은 암호화되어 저장됩니다.
  • SSH 대상은 상대편에 아무것도 설치할 필요가 없습니다. sftp:는 SSH 서버만 필요하므로, 아무것도 없는 Raspberry Pi(Docker 없음, restic 없음)도 오프사이트 대상으로 작동합니다. 호스트 키는 첫 접속 시 자동으로 고정됩니다.
  • 오프사이트 복사(로컬 + 원격). 빠른 로컬 백업을 유지하면서 하나 이상의 오프사이트 복제본을 추가하고, restic copy로 최선 노력 방식으로 복제합니다(오프사이트 장애가 로컬 백업을 실패시키는 일은 없습니다). 각 도메인은 자체 오프사이트 일정을 가지며, 지금 복제 버튼도 있습니다.
  • 도메인별 여러 오프사이트 대상. 각 도메인(컨테이너, VM, 플래시, 구성, 파일 세트)은 하나만이 아니라 여러 오프사이트 대상에 동시에 복제할 수 있습니다. 오프사이트 탭에서 추가 대상을 더하세요. 각각 자체 저장소, S3 스토리지 클래스, append-only 플래그, 보존, 증가 예산을 가집니다. 기존 오프사이트 복사본은 첫 번째 대상으로 이어지므로, 두 번째를 추가하기 전까지는 아무것도 바뀌지 않으며, 도메인의 모든 대상은 그 도메인의 오프사이트 일정에 따라 복제됩니다.
  • 수동 백업 순서. 컨테이너 페이지의 백업 순서 패널에서 컨테이너가 백업되는 정확한 순서를 설정합니다. 예약 및 다중 선택 실행은 그 순서를 따릅니다. 순서를 지정하지 않은 컨테이너는 이전의 가장 기한이 지난 것 우선 동작을 유지하며, 단일 컨테이너 백업은 변함이 없습니다.
  • 구성 가능한 보존: keep-last / 일별 / 주별 / 월별로, 매 백업 후 자동으로 정리되며 소스별로 설정됩니다(로컬은 백업 경로 옆에서, 오프사이트는 오프사이트 탭에서 설정하여 오프사이트 사본을 아카이브로 더 오래 보관할 수 있음).
  • 도메인별 예약(일별 / 주별(여러 요일 세트 포함) / N일마다 / 원시 cron), 모두 설정, 일정 한 곳에서 편집.
  • 오프사이트 대역폭 제한. restic 업로드/다운로드 속도를 제한하여 복제가 WAN을 포화시키지 않도록 합니다.
  • 콜드 및 아카이브 스토리지 클래스(S3). 네이티브 S3 오프사이트 저장소의 경우 스토리지 클래스를 선택할 수 있으며, 복원 가능한 계층(Standard, Standard-IA, One Zone-IA, Intelligent-Tiering, Glacier Instant Retrieval)으로 제한되어 아카이브 가격이 조용히 복원을 망가뜨리는 일이 없습니다. 먼저 비동기 해동이 필요한 딥 아카이브 계층(Glacier Flexible, Deep Archive)은 의도적으로 제외됩니다. 네이티브 S3 백엔드만 해당하며, rclone 원격은 rclone 구성에서 클래스를 설정합니다.
  • 백업 폴더는 장비 밖으로 복사 가능한 상태를 유지합니다. 매 백업 후 BombVault는 로컬 저장소 트리를 디렉터리 0755 / 파일 0644로 완화하므로(저장소는 암호화되어 있어 아무것도 노출되지 않음) SMB를 통한 비root 동기화 사용자가 차단되지 않습니다. 복구 정의는 각 저장소 안에 있으므로, 복사한 저장소 폴더는 완전히 자기 완결적입니다.

통찰, 검증 및 모니터링

  • 보호 상태(RPO). 대시보드는 마지막 성공한 백업을 일정과 비교하여 도메인별로 녹색 / 황색 / 적색 표시를 보여주므로, 기한이 지난 백업이 로그에 숨는 대신 적색으로 바뀝니다.
  • 백업 상태 히트맵. 도메인별 일일 백업 결과를 GitHub 기여도 스타일 달력으로 보여주며, 컨테이너 / VM / 플래시 / 구성 / 파일 토글이 있습니다.
  • 어디서나 실행 시간. 모든 실행 기록 항목은 시작, 종료(소요 시간)를 표시하고, 각 컨테이너와 VM은 자체 페이지에 최근 실행 목록을 가집니다.
  • 재배치할 수 있는 대시보드. 사용자 지정 모드를 켜서 카드를 원하는 순서로 드래그하고 필요 없는 것을 숨기세요. 레이아웃은 브라우저별로 저장됩니다.
  • 저장소 크기 및 중복 제거 추세. 도메인별 현재 저장소 크기, 중복 제거 비율, 스냅샷 수와 함께 스토리지 증가 스파크라인을 보여줍니다.
  • 복원 검증 리허설. BombVault는 주기적으로 백업이 복원 가능함을 입증하고(restic check --read-data-subset, 제한됨) 도메인별로 마지막 복원 가능 확인 배지를 표시합니다.
  • 자가 치유 작업. 확실히 고아가 된 restic 잠금(작업 도중 재시작으로 남겨진 것)은 자동으로 강제 해제되고 한 번 재시도됩니다. 보존은 정체성이 안정적이며(항목별로 정리, 경로나 호스트 변경에 영향받지 않음), 보존 실패는 알림을 보냅니다.
  • 암호화 키 복구 키트. 마스터 키, 파생된 restic 비밀번호, 정확한 저장소 위치와 명령을 원클릭으로 다운로드하므로, 실행 중인 BombVault 없이도 복원할 수 있습니다. 오프사이트 및 복구를 참고하세요.
  • 설정 내보내기 및 가져오기. 설정 페이지의 설정 내보내기 및 가져오기 카드는 전체 구성(도메인 설정, 오프사이트 대상, 일정, 보존, 알림)을 이식 가능한 JSON 파일로 기록하므로, 새 장비로 옮기거나 설정을 복제할 때 모든 것을 손으로 다시 입력할 필요가 없습니다. 오프사이트 및 알림 자격 증명을 포함할지 선택할 수 있으며, 포함하면 파일이 복구 키트만큼 민감해집니다. 가져오기는 미리 보기를 표시하고 확인을 요청하며, 백업 데이터나 기록을 절대 건드리지 않습니다.
  • 알림. Webhook(Discord / Slack / Gotify / ntfy), Matrix, Healthchecks.io, 이메일(SMTP), 셀프 호스팅 Apprise API 서버, 그리고 Unraid의 네이티브 알림 시스템. 백업별 정책: 안 함 / 실패 시 / 항상. 여러 항목의 예약 실행은 하나의 N/M 성공 요약을 보낼 수 있습니다. URL이 설정되면 Healthchecks는 전체 수명 주기(/start, 그다음 성공 또는 /fail)를 받습니다.
  • Prometheus /metrics. Grafana 또는 Uptime Kuma용 선택 기능(기본 꺼짐, 선택적 bearer 토큰). 레이블에 비밀이나 경로 없이 백업 상태, 크기, 타임스탬프를 노출합니다.

랜섬웨어 보호

  • 불변(append-only) 오프사이트. 오프사이트 저장소를 append-only로 표시하여 랜섬웨어나 손상된 호스트가 백업을 삭제하거나 다시 쓸 수 없게 합니다. 상대편(--append-only 모드의 restic/rest-server)이 이를 강제하며, BombVault는 오직 검증만 하고 구성 주장만으로는 절대 녹색을 표시하지 않습니다.
  • 변조 테스트. BombVault는 주기적으로 오프사이트 저장소에 대해 실제로 삭제를 시도하여(존재하지 않는 객체를 대상으로) append-only 보증을 입증합니다: 거부되면 보호됨, 허용되면 보호되지 않음. 결론이 나지 않는 결과는 저장된 판정을 절대 뒤집지 않습니다.
  • 안내형 오프사이트 설정. 마법사가 백엔드 선택부터 바로 붙여넣을 수 있는 rest-server 배포 스니펫, 연결 테스트, 불변 토글, 보존 전략까지 안내합니다.
  • DR 리허설(오프사이트). 오프사이트 저장소에서 실제 대상을 일회용 샌드박스로 복원하고, 파일 단위와 바이트 단위로 검증한 다음 정리합니다. 오프사이트 및 복구를 참고하세요.
  • 랜섬웨어 보호 스코어카드. 도메인별 녹색 / 황색 / 적색 자세와 시점이 표시된 체크리스트를 가진 대시보드 카드입니다. 모든 적색 행은 수정 방법으로 딥 링크됩니다. 검증된 사실에서만 녹색이 됩니다.
  • 증가 예산 경보. 불변 오프사이트(오래된 스냅샷을 의도적으로 절대 정리하지 않는 곳)의 경우 크기 예산을 설정하고 폭주하기 전에 경고를 받으세요.
  • 수신자 대시보드(수신 측). 다른 BombVault로부터 불변 오프사이트 사본을 받는 장비에서 수신자 토글(설정)을 켜서 수신자 탭을 표시하세요. 받은 저장소를 읽기 전용으로(보내는 인스턴스의 키로 열어) 등록하면, 소스별로 그룹화된 스냅샷 인벤토리, 각 소스가 마지막으로 도착한 시점을 볼 수 있고, 수신 하드웨어에서 독립적인 restic check를 실행할 수 있습니다. 설정한 기간 내에 소스가 전송을 멈추거나(데드맨 스위치) 무결성 검사가 실패하면 경고합니다. 엄격히 읽기 전용이므로 받은 저장소에 절대 쓰지 않으며, 기본적으로 꺼져 있습니다. 오프사이트 및 복구를 참고하세요.

일반 내보내기

  • 컨테이너 일반 내보내기. 컨테이너별 내보내기 버튼은 저장소 옆에 탐색 가능하고 도구가 필요 없는 사본을 기록합니다: 백업 폴더의 <name>.tar.gz와 Unraid <name>.xml 템플릿. restic은 여전히 엔진이며, 이것은 추가적인 편의 사본입니다.
  • VM 일반 내보내기. VM도 동일한 내보내기(일반 tar)를 가집니다: 디스크 이미지의 <name>.tar.gz<name>.xml. BombVault나 restic 없이 virsh define과 디스크로 복원할 수 있습니다.
  • 일반 내보내기 암호화(age). 내보내기는 restic 밖에 위치하므로 기본적으로 평문입니다. 설정에서 age 암호화를 켜고 하나 이상의 수신자(age 공개 키 또는 SSH 공개 키)를 추가하세요. 그러면 각 내보내기(컨테이너 및 VM .tar.gz, 그 .xml 사이드카, 플래시 ZIP)가 그 수신자를 위해 봉인되며, 나중에 장비 밖에서 해당 개인 키로 복호화합니다. 안전 규칙으로, 암호화가 켜져 있고 유효한 수신자가 설정되지 않으면, 내보내기는 평문을 쓰는 대신 명확한 오류와 함께 실패합니다.

기타

  • 한 번에 여러 개 백업. 컨테이너를 다중 선택하고 선택 항목 백업을 누르세요. 배치는 서버 측에서 실행되므로 탭을 닫거나 연결이 끊겨도 계속됩니다. BombVault는 자체 컨테이너를 절대 백업하지 않으며(따라서 절대 중지하지 않음).
  • 스냅샷 브라우저: 복원 지점 목록, 스냅샷별 삭제, 파일 수준 복원을 위한 접을 수 있는 폴더 트리를 제공합니다.
  • 도메인별 저장소 유지 관리: 검증(restic check), 잠금 해제(멈춘 잠금 제거), 정리(정책이 설정되어 있으면 요청 시 보존 정책 적용, 그렇지 않으면 일반 공간 회수).
  • 컨테이너별 사전/사후 백업 훅. 셸 명령이 컨테이너 내부에서 실행됩니다(예: 백업 전 appdata로 mysqldump). 사전 훅이 실패하면 백업이 중단됩니다.
  • 백업 중 다른 컨테이너 중지, 상태 게이트 재시작 포함. 이 컨테이너가 백업되는 동안 중지할 종속 컨테이너(예: 데이터베이스)를 지정하세요. 이후 BombVault는 Compose의 depends_on 순서대로 다시 가져오고, 기본적으로 각 컨테이너가 정상 상태(또는 헬스체크가 없으면 실행 중)를 보고할 때까지 기다린 후에 그에 의존하는 컨테이너를 시작합니다. 따라서 Pi-hole, 데이터베이스, VPN 게이트웨이 같은 종속 항목이 그것을 필요로 하는 서비스보다 실제로 먼저 가동되어, 그 서비스가 connection refused로 되돌아가는 일이 없습니다. 대기는 컨테이너별 타임아웃(기본 120초)으로 제한되므로 느리거나 절대 정상이 되지 않는 컨테이너가 실행을 멈추게 할 수 없습니다. 대기와 타임아웃은 모두 설정, 일정에 있습니다(이전의 한꺼번에 재시작하려면 대기를 끄세요). 동일한 순서화된 상태 게이트 재시작은 사후 백업 이미지 업데이트도 감싸므로, 업데이트가 도착하는 날에는 종속 항목이 재생성 동안 내려간 상태로 유지되고 완료된 후에만 상태 게이트를 거쳐 다시 가동됩니다.
  • 컨테이너별 제외 패턴. 백업되는 볼륨 내부에서 건너뛸 하위 디렉터리를 한 줄에 하나씩 나열하세요. 컨테이너 내부에서 보이는 대로 경로를 입력하세요. 실시간 미리 보기가 각 줄이 무엇으로 해석되는지 보여주고, 어떤 줄이 아무것도 제외하지 않으면 경고합니다.
  • 백업 성공 후 업데이트(고급, 기본 꺼짐). 컨테이너에서 이를 켜면 BombVault가 최신 이미지를 가져와 재생성하지만, 실제로 더 새로운 이미지가 있을 때만 그렇게 하므로 항상 새 복원 지점이 먼저 존재합니다. 선택적 추가 기능: 업데이트된 컨테이너별 알림과 이미지 정리(다른 컨테이너가 공유하는 기본 이미지는 절대 삭제되지 않음). 업데이트 후 BombVault는 Unraid에 그 컨테이너의 업데이트 상태를 다시 확인하도록 요청하므로, Docker 탭의 오래된 업데이트 사용 가능 배너가 남아 있는 대신 스스로 지워집니다(Unraid 업데이트는 Docker API를 바로 거치므로, 그 캐시된 상태와 일부 버전에서는 캐시된 다이제스트가 그렇지 않으면 계속 배너를 표시함). 최선 노력 방식이며 백업에 절대 영향을 주지 않고, 기본적으로 켜져 있으며 설정에 토글이 있습니다.
  • 다른 폴더로 복원하여 복제 또는 검사에 사용합니다.
  • 스냅샷 비교 및 태그. 두 스냅샷을 비교하여 무엇이 바뀌었는지 확인하고, 스냅샷에 태그를 지정하여 필터링합니다.
  • 업데이트 후 새로운 기능. 릴리스 노트가 새 버전마다 한 번 팝업되며, 바이너리에 내장된 노트에서 제공되므로 대화 상자가 오프라인에서도 작동합니다.
  • 기본으로 HTTPS(자체 서명, 또는 리버스 프록시 뒤에 자체 인증서 사용).
  • Docker 헬스체크. 컨테이너는 자체 /api/health에서 정상/비정상을 보고하므로, 엔진이 멈추면 자가 치유 도구가 재시작할 수 있습니다.
  • 26개 언어의 다크/라이트 UI와 국기 선택기.