Контейнеры легко поднять заново — данные нет. Immich, Vaultwarden, Nextcloud, PostgreSQL: всё это volume и каталоги на диске. Ниже — схема шифрованного бэкапа через rclone crypt, которую можно повесить на cron.
На AlmaLinux / Rocky / RedOS:
sudo dnf install -y rclone
# или официальный скрипт:
curl https://rclone.org/install.sh | sudo bash
rclone version
Интерактивно:
rclone config
Создайте, например:
s3backup — реальное хранилище (S3-совместимое, Wasabi, Selectel, Yandex Object Storage и т.п.);cryptbackup — тип crypt, в качестве remote укажите s3backup:my-homelab и задайте пароль шифрования.Шифрование на стороне клиента: провайдер видит только blob’ы.
Остановите сервисы на время консистентного снимка БД или используйте pg_dump / штатные дампы. Для файловых volume достаточно:
# пример путей на домашнем сервере
BACKUP_SRC="/data/backups/stage"
mkdir -p "$BACKUP_SRC"
# снимок важных каталогов (подставьте свои пути)
rsync -a --delete /home/user/vaultwarden/data/ "$BACKUP_SRC/vaultwarden/"
rsync -a --delete /home/user/uptime-kuma/data/ "$BACKUP_SRC/uptime-kuma/"
# большие медиабиблиотеки планируйте отдельным заданием
Для named volumes Docker:
docker run --rm \
-v immich_pgdata:/from:ro \
-v "$BACKUP_SRC":/to \
alpine ash -c "cd /from && tar czf /to/immich_pgdata.tgz ."
rclone sync "$BACKUP_SRC" cryptbackup:daily \
--fast-list \
--transfers=4 \
--checkers=8 \
--log-file=/var/log/rclone-backup.log \
--log-level INFO
Проверка:
rclone ls cryptbackup:daily
rclone size cryptbackup:daily
cat > /etc/cron.d/rclone-homelab << 'EOF'
30 3 * * * root /usr/local/sbin/homelab-backup.sh >/dev/null 2>&1
EOF
Скрипт /usr/local/sbin/homelab-backup.sh — ваши rsync/tar + rclone sync. Права 700, владелец root.
rclone copy cryptbackup:daily/vaultwarden /tmp/restore-vw
# затем верните файлы в каталог сервиса и поднимите compose
Итог: volumes уезжают в облако уже зашифрованными, а восстановление — обычный rclone copy + docker compose up -d.