Files
homelabstack/stacks/backup/init-kopia.sh
T
ginnoir f660bc9c4b Fix backup stack env for Portainer git deploy.
Remove compose ${VAR} overrides that blanked stack.env values and map KOPIA_REPOSITORY_PASSWORD in init-kopia; use hostname-only B2 endpoint.
2026-06-10 21:26:02 -05:00

48 lines
1.5 KiB
Bash

#!/bin/sh
# One-time (or idempotent) Kopia repo + policy setup, then start server UI.
set -e
CONFIG_DIR=/app/config
export KOPIA_CONFIG_PATH="${CONFIG_DIR}/repository.config"
export KOPIA_PASSWORD="${KOPIA_REPOSITORY_PASSWORD}"
mkdir -p "${CONFIG_DIR}" /app/cache /app/logs
# Connect or create B2 repository when credentials are present.
if [ -n "${B2_KEY_ID}" ] && [ -n "${B2_APPLICATION_KEY}" ] && [ -n "${B2_BUCKET}" ]; then
if [ ! -f "${KOPIA_CONFIG_PATH}" ]; then
echo "init-kopia: creating S3 repository on bucket ${B2_BUCKET}"
kopia repository create s3 \
--bucket="${B2_BUCKET}" \
--access-key="${B2_KEY_ID}" \
--secret-access-key="${B2_APPLICATION_KEY}" \
--endpoint="${B2_ENDPOINT}" \
--password="${KOPIA_PASSWORD}"
else
echo "init-kopia: repository config exists, skipping create"
fi
while IFS= read -r path || [ -n "${path}" ]; do
case "${path}" in ''|\#*) continue ;; esac
kopia policy set "${path}" \
--keep-latest 14 \
--keep-daily 30 \
--keep-weekly 12 \
--keep-monthly 24 \
--compression=zstd \
--snapshot-time=03:00 \
--enable-actions=false \
2>/dev/null || kopia policy set "${path}" \
--keep-latest 14 \
--keep-daily 30 \
--keep-weekly 12 \
--keep-monthly 24 \
--compression=zstd \
--snapshot-time=03:00
done < /snapshot-paths.txt
else
echo "init-kopia: B2 credentials empty — start UI only; configure repo manually (see README)"
fi
exec kopia server start --ui --insecure --address=0.0.0.0:51515