#!/bin/bash # {{ ansible_managed }} # Dump application databases to {{ backup_dump_dir }} # for pickup by the backup host set -euo pipefail umask 077 DEST={{ backup_dump_dir }} mkdir -p "$DEST" # MariaDB stacks: dump via the stack's `db` service using its own env creds. dump_mariadb() { # docker compose -f "/opt/$1/docker-compose.yml" exec -T db sh -c \ 'exec mariadb-dump --single-transaction --quick --routines --events \ -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"' \ | gzip > "$DEST/$2.tmp" mv "$DEST/$2.tmp" "$DEST/$2" } dump_mariadb nextcloud nextcloud.sql.gz dump_mariadb gitea gitea.sql.gz dump_mariadb hdwiki mediawikidb.sql.gz # Authentik PostgreSQL (docker compose) docker compose -f /opt/authentik/docker-compose.yml exec -T postgresql \ pg_dump -U authentik -d authentik | gzip > "$DEST/authentik.sql.gz.tmp" mv "$DEST/authentik.sql.gz.tmp" "$DEST/authentik.sql.gz" # Drone CI sqlite (online-safe consistent copy) sqlite3 /opt/drone/drone/database.sqlite ".backup '$DEST/drone.sqlite.tmp'" mv "$DEST/drone.sqlite.tmp" "$DEST/drone.sqlite" date --iso-8601=seconds > "$DEST/LAST_DUMP"