Files
homelabstack/scripts/restore-resume-data.sh
ginnoir 51acb44322
Deploy to valhalla / deploy (push) Has been cancelled
Ship homelab quick wins: Recyclarr, infra pins, jd.ginnoir.com, and LAN lockdown.
Add Recyclarr to the media stack, pin database/object-store/Caddy/Vault images with Watchtower disabled, expose JDownloader at jd.ginnoir.com, and restrict minio/homarr/docs to internal_only. Mark TB-002–004 and TB-033 complete; bundle batch-3 OIDC env for FreshRSS, ownCloud, and Reactive Resume.
2026-06-11 02:28:06 -05:00

48 lines
2.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# Restore resume postgres + minio from pre-split monolith named volumes into bind mounts.
# Safe to re-run: stops stack, copies from htpc-download-box_* volumes, restarts postgres.
OLD_PG_VOL="${OLD_PG_VOL:-htpc-download-box_postgres_data}"
OLD_MINIO_VOL="${OLD_MINIO_VOL:-htpc-download-box_minio_data}"
PG_BIND="${PG_BIND:-/config/resume/postgres}"
MINIO_BIND="${MINIO_BIND:-/storage1/labdata/resume/minio}"
echo "=== stop resume stack services ==="
docker stop resume minio_resume postgres_resume 2>/dev/null || true
echo "=== restore postgres: ${OLD_PG_VOL} -> ${PG_BIND} ==="
docker run --rm \
-v "${OLD_PG_VOL}:/from:ro" \
-v "${PG_BIND}:/to" \
alpine sh -c 'rm -rf /to/* /to/.[!.]* /to/..?* 2>/dev/null || true; cp -a /from/. /to/; chown -R 70:70 /to'
echo "=== restore minio objects: ${OLD_MINIO_VOL}/default -> ${MINIO_BIND}/default ==="
docker run --rm \
-v "${OLD_MINIO_VOL}:/from:ro" \
-v "${MINIO_BIND}:/to" \
alpine sh -c 'mkdir -p /to/default; rm -rf /to/default/* 2>/dev/null || true; cp -a /from/default/. /to/default/ 2>/dev/null || true'
echo "=== start postgres ==="
docker start postgres_resume
for i in $(seq 1 30); do
if docker exec postgres_resume pg_isready -U postgres -d postgres >/dev/null 2>&1; then
break
fi
sleep 1
done
docker exec postgres_resume pg_isready -U postgres -d postgres
echo "=== verify restored data ==="
docker exec postgres_resume psql -U postgres -d postgres -c 'SELECT email, username FROM "user"; SELECT slug, is_public FROM resume;'
echo "=== align resume user email with Authentik (3nigma.matt@gmail.com) for OAuth linking ==="
docker exec postgres_resume psql -U postgres -d postgres -c "UPDATE \"user\" SET email = '3nigma.matt@gmail.com' WHERE username = 'ginnoir';"
echo "=== start minio + resume (if compose project exists) ==="
docker start minio_resume 2>/dev/null || true
docker start resume 2>/dev/null || true
echo "done — if resume container was ad-hoc recreated, redeploy stacks/resume via Portainer after git push"