vm-babysitter

vm-babysitter

Docker-Anwendung from Staffwerke GmbH's Repository

Übersicht

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)

Anforderungen

Unraid VM Manager Enabled

Laufzeit-Argumente

Netzwerk
host
Shell
bash
Privilegiert
false
Extra Params
--device /dev/fuse --cap-add SYS_ADMIN

Konfiguration der Vorlage

Time ZoneVariable

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

Ziel
TZ
Autostart DomainsVariable

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

Ziel
VM_AUTOSTART_LIST
Ignored DomainsVariable

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

Ziel
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)

Ziel
MAX_BACKUPS_PER_CHAIN
Standard
30
Path for Backups (local)Pathrw

Path to user share where all backups will be stored

Ziel
/backups
Standard
/mnt/user/backups/domains
Backup ScheduleVariable

Cron expression to schedule incremental backups

Ziel
BACKUP_SCHEDULE
Standard
@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

Ziel
LOCAL_BACKUP_CHAINS_TO_KEEP
Standard
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)

Ziel
/private/hostname.key
Standard
/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

Ziel
UNRAID_NOTIFY_HOST
Standard
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)

Ziel
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

Ziel
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

Ziel
RSYNC_BACKUP_CHAINS_TO_KEEP
Standard
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)

Ziel
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)

Ziel
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)

Ziel
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

Ziel
VM_WAIT_TIME
Standard
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

Ziel
VIRTNBDBACKUP_ARGS
Rsync Extra ArgumentsVariable

Extra arguments passed to Rsync

Ziel
RSYNC_ARGS
Standard
-a
SSH OptionsVariable

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

Ziel
SSH_OPTIONS
Standard
-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

Ziel
LOCAL_BACKUP_PATH
Standard
/backups
Path for Domain Disk ImagesPathrw

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

Ziel
/mnt/user/domains
Standard
/mnt/user/domains
Main Path for LogsPathrw

Persistent bind mount for log files generated by scripts

Ziel
/logs
Standard
/mnt/user/appdata/vm-babysitter/logs
Internal Main Log PathVariable

Container path for the main log file

Ziel
LOGFILE_PATH
Standard
/logs/vm-babysitter.log
Internal Schedule Log PathVariable

Container path for scheduled tasks log file

Ziel
SCHEDULE_LOGFILE_PATH
Standard
/logs/scheduled-tasks.log
Internal Logrotate Config PathVariable

Container path to place and read log rotation config

Ziel
LOGROTATE_CONFIG_PATH
Standard
/tmp/logrotate.d/vm-babysitter
Logrotate ScheduleVariable

Cron expression to schedule internal logs rotation

Ziel
LOGROTATE_SCHEDULE
Standard
@daily
Logrotate SettingsVariable

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

Ziel
LOGROTATE_SETTINGS
Standard
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

Ziel
/var/tmp
Standard
/var/tmp
Libvirt API SocketPathrw

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

Ziel
/run/libvirt
Standard
/run/libvirt
Lock FolderPathrw

Allow scripts to put locks onto the main host

Ziel
/run/lock
Standard
/run/lock
Path to Nvram BinariesPathrw

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

Ziel
/etc/libvirt/qemu/nvram
Standard
/etc/libvirt/qemu/nvram
Path to OVMF BinariesPathro

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

Ziel
/usr/share/qemu/ovmf-x64
Standard
/usr/share/qemu/ovmf-x64

Kategorien

Einzelheiten

Repository
ghcr.io/staffwerke/vm-babysitter
Zuletzt aktualisiert2026-05-31
Erstmals gesehen2024-11-23

Führen Sie vm-babysitter auf Unraid aus.

vm-babysitter ist gelistet in Community Apps für Unraid OS. Erkunden Sie Unraid, um einen flexiblen Heimserver, ein NAS oder ein Heimlabor aufzubauen.