#!/usr/bin/env bash # Update the self-hosted NetBird server stack (Docker Compose). # Backs up config files and the netbird_data volume before upgrading. set -euo pipefail STACK_DIR=/var/limonia/netbird DATA_VOLUME=netbird_netbird_data BACKUP_DIR="$HOME/netbird-backups/$(date +%F_%H%M%S)" cd "$STACK_DIR" mkdir -p "$BACKUP_DIR" echo "Current images:" docker compose images # Pull first so downtime is only the backup + restart docker compose pull echo "Backing up config to $BACKUP_DIR" tar czf "$BACKUP_DIR/config.tgz" -C "$STACK_DIR" . # Stop the server so the data store is copied consistently docker compose stop netbird-server echo "Backing up volume $DATA_VOLUME" docker run --rm -v "$DATA_VOLUME":/data:ro -v "$BACKUP_DIR":/backup alpine \ tar czf /backup/netbird_data.tgz -C /data . docker compose up -d sleep 5 echo "Updated images:" docker compose images docker compose ps docker compose logs --tail 30 netbird-server echo "Backup saved in $BACKUP_DIR"