vm-babysitter

vm-babysitter

Docker 应用程序 from Staffwerke GmbH's Repository

概述

Automatic Backup & Monitoring utility for QEMU/KVM Virtual Machines (powered by Virtnbdbackup) Features: - Manages a list of *non-transient* domains defined in QEMU to be backed up regularly via internal cron task - Checks backup chains integrity of all listed domains, being able to detect inconsistencies and proceed accordingly (e.g. fixing, discarding, creating new ones, etc.) - Configurable backup rotation and retention policy - Ability to create a mirror and keep it updated with Rsync right after backup schedule or at configurable one, with independent retention policy - All main tasks (backup, sync, rotation/retention) can be performed manually by the user from inside the container - Pseudo-interactive tools for domain replication (to local and remote endpoints) and recovery from backups on the local host - Notify about backup chain and Rsync start and end of activities, as also when user intervention is required and about errors (Unraid feature) - Assume a different behavior when detects the server has been started recently, assuming the possibility of a previous crash, and therefore a more strict check of backup chains (Unraid feature)

要求

Unraid VM Manager Enabled

运行时参数

网络
host
外壳
bash
特权
false
额外参数
--device /dev/fuse --cap-add SYS_ADMIN

模板配置

Time ZoneVariable

Set container to a desired timezone (usually same as this host)

目标
TZ
Autostart DomainsVariable

Space separated list of domains that will be started along with the container if found powered off (case sensitive)

目标
VM_AUTOSTART_LIST
Ignored DomainsVariable

Space separated list of domains to exclude from backup schedule and automatic checks (case sensitive)

目标
VM_IGNORED_LIST
Backups Rotation (local)Variable

Backups rotation: Number of checkpoints to save incrmentally into a backup chain before to archive it. If set to `0`, backup chain will grow indefinitely (and no retention policies will be applied)

目标
MAX_BACKUPS_PER_CHAIN
默认值
30
Path for Backups (local)Pathrw

Path to user share where all backups will be stored

目标
/backups
默认值
/mnt/user/backups/domains
Backup ScheduleVariable

Cron expression to schedule incremental backups

目标
BACKUP_SCHEDULE
默认值
@daily
Retention Policy (local)Variable

Local retention policy: How many backup chains to keep archived at `LOCAL_BACKUP_PATH`. If set to `0`, disables retention policy on the local endpoint

目标
LOCAL_BACKUP_CHAINS_TO_KEEP
默认值
1
SSH KeyPathro

Path to private SSH key to perform operations onto remote servers via SSH and Rsync. Key must be owned by root and file permissions equal to '0600' (in most cases, necessary for send Unraid notifications)

目标
/private/hostname.key
默认值
/mnt/user/appdata/vm-babysitter/hostname.key
Unraid IP/HostnameVariable

Unraid IP/Hostname to send notifications (usually, same as this host). It has no effect on non-Unraid OS

目标
UNRAID_NOTIFY_HOST
默认值
localhost
Path for Backups (mirror)Variable

Usually, a SSH address to a path into another host, where backup chains will be mirrored. Requires r/w permissions at the remote host. If not set, this feature remains disabled and `RSYNC_` env vars have no effect. (Read documentation for advanced usage)

目标
RSYNC_BACKUP_PATH
Rsync ScheduleVariable

When a cron expression is set, backup mirrors are updated at this specific schedule, instead of immediately after backups schedule

目标
RSYNC_SCHEDULE
Retention Policy (mirror)Variable

Mirror's retention policy: How many backup chains to keep archived at `RSYNC_BACKUP_PATH`. If set to `0`, disables retention policy on the mirror

目标
RSYNC_BACKUP_CHAINS_TO_KEEP
默认值
2
Fix Backup Chains After Interrupted TasksVariable

Attempts to repair backup chains when virtnbdbackup was interrupted in the middle of an operation, by removing the last checkpoint at both backup and domain, avoiding thus a forced rotation and creation of a new backup chain. (Set a non-empty value to enable)

目标
VM_ALLOW_BACKUP_CHAIN_FIX
Allow Automatic Powercycle of DomainsVariable

Performs controlled powercycle of running domains under certain scenarios during container startup. If not set, vm-babysitter will ask the user (via logs and Unraid notifications, when available) to manually shut down domains in need of this action. Read documentation for more info (Set a non-empty string to enable)

目标
VM_ALLOW_POWERCYCLE
Check Backups Data IntegrityVariable

Verify data integrity of backups. This operation may take long time, delaying container's full initialization. Only useful under suspect of data corruption (Set a non-empty value to enable)

目标
CHECK_BACKUPS_INTEGRITY
Domain Awaiting TimeoutVariable

Max amount in seconds scripts will await for domains responding to libvirt queries during powercycle operations. Increase this value if you get often warnings about scripts 'giving up' awaiting for slow domains

目标
VM_WAIT_TIME
默认值
60
Virtnbdbackup Extra ArgumentsVariable

Extra arguments passed to virtnbdbackup (only tested with `--start-domain`, `--compress` and `--no-color`. Other combinations usually lead to unexpected results

目标
VIRTNBDBACKUP_ARGS
Rsync Extra ArgumentsVariable

Extra arguments passed to Rsync

目标
RSYNC_ARGS
默认值
-a
SSH OptionsVariable

Common SSH options for communications with remote, and the unraid hosts (expert use only)

目标
SSH_OPTIONS
默认值
-q -o IdentityFile=/private/hostname.key -o BatchMode=yes -o StrictHostKeyChecking=no -o ConnectTimeout=10
Internal Path for BackupsVariable

Container path where vm-babysitter will save and vm-restore will search for backups. Container will not start if not set, or if not mounted in r/w mode

目标
LOCAL_BACKUP_PATH
默认值
/backups
Path for Domain Disk ImagesPathrw

Change only if domain disk images are stored into a different user share than the default

目标
/mnt/user/domains
默认值
/mnt/user/domains
Main Path for LogsPathrw

Persistent bind mount for log files generated by scripts

目标
/logs
默认值
/mnt/user/appdata/vm-babysitter/logs
Internal Main Log PathVariable

Container path for the main log file

目标
LOGFILE_PATH
默认值
/logs/vm-babysitter.log
Internal Schedule Log PathVariable

Container path for scheduled tasks log file

目标
SCHEDULE_LOGFILE_PATH
默认值
/logs/scheduled-tasks.log
Internal Logrotate Config PathVariable

Container path to place and read log rotation config

目标
LOGROTATE_CONFIG_PATH
默认值
/tmp/logrotate.d/vm-babysitter
Logrotate ScheduleVariable

Cron expression to schedule internal logs rotation

目标
LOGROTATE_SCHEDULE
默认值
@daily
Logrotate SettingsVariable

Parsed string with *escaped* logrotate config to `LOGROTATE_CONFIG_PATH` during container (re)start

目标
LOGROTATE_SETTINGS
默认值
compress\n copytruncate\n daily\n dateext\n dateformat .%Y-%m-%d.%H:%M:%S\n missingok\n notifempty\n rotate 30
Virtnbdbackup SocketPathrw

Allows Virtnbdbackup to put its socket onto the main host

目标
/var/tmp
默认值
/var/tmp
Libvirt API SocketPathrw

Allow scripts to read and interact with Libvirt socket from inside the container

目标
/run/libvirt
默认值
/run/libvirt
Lock FolderPathrw

Allow scripts to put locks onto the main host

目标
/run/lock
默认值
/run/lock
Path to Nvram BinariesPathrw

Allow scripts to read/restore per domain nvram binaries for EFI/UEFI boot

目标
/etc/libvirt/qemu/nvram
默认值
/etc/libvirt/qemu/nvram
Path to OVMF BinariesPathro

Allow scripts to read/copy common nvram binaries for EFI/UEFI boot

目标
/usr/share/qemu/ovmf-x64
默认值
/usr/share/qemu/ovmf-x64

类别

详细信息

存储库
ghcr.io/staffwerke/vm-babysitter
最后更新2026-05-31
初见2024-11-23

在Unraid 上运行 vm-babysitter 。

vm-babysitter 已被列入Unraid OS 的社区应用程序。探索Unraid ,构建灵活的家庭服务器、NAS 或家庭实验室。