Skip to content

Backup

Two Docker volumes hold all the user data Pipebase generates:

  • ipaas_ipaas-runtime-routes — deployed Camel YAML files (one per flow)
  • ipaas_ipaas-designer-flows — designer’s flow definitions, layouts, params, runtime registry, OAuth client secrets, SSO config

Configuration lives in .env (regenerable) and the source code lives in git (regenerable). Lose those volumes and you lose user data.

Terminal window
ssh <host> '
TS=$(date +%Y%m%d-%H%M%S)
mkdir -p /backup/pipebase
docker run --rm \
-v ipaas_ipaas-runtime-routes:/data:ro \
-v /backup/pipebase:/backup \
alpine tar czf /backup/runtime-routes-$TS.tar.gz -C /data .
docker run --rm \
-v ipaas_ipaas-designer-flows:/data:ro \
-v /backup/pipebase:/backup \
alpine tar czf /backup/designer-flows-$TS.tar.gz -C /data .
'

Output: two .tar.gz files per backup run. Total size: typically a few MB; depends on flow count.

Drop this into /etc/cron.daily/pipebase-backup (mode 755):

#!/bin/bash
set -euo pipefail
TS=$(date +%Y%m%d-%H%M%S)
DIR=/backup/pipebase
KEEP=14 # days
mkdir -p $DIR
for vol in ipaas_ipaas-runtime-routes ipaas_ipaas-designer-flows; do
docker run --rm -v "$vol:/data:ro" -v "$DIR:/backup" alpine \
tar czf "/backup/$vol-$TS.tar.gz" -C /data .
done
# Prune anything older than KEEP days
find $DIR -type f -name '*.tar.gz' -mtime +$KEEP -delete

Off-site copy is your call (rsync, S3, Borg, restic). The local files are useless if the host dies.

Stop the stack first so the runtime doesn’t load mid-restore:

Terminal window
docker compose down
docker run --rm \
-v ipaas_ipaas-runtime-routes:/data \
-v /backup/pipebase:/backup \
alpine sh -c 'cd /data && rm -rf ./* && tar xzf /backup/runtime-routes-<TS>.tar.gz'
docker run --rm \
-v ipaas_ipaas-designer-flows:/data \
-v /backup/pipebase:/backup \
alpine sh -c 'cd /data && rm -rf ./* && tar xzf /backup/designer-flows-<TS>.tar.gz'
docker compose up -d

Verify: https://designer.<root>/api/flows should return your restored flow list.

  • The deploy token (PIPEBASE_DEPLOY_TOKEN) — lives in .env
  • The JWT secret — same
  • TLS certs — Traefik regenerates them on demand
  • Container image versions — pinned by PIPEBASE_VERSION in .env

If you lose .env, regenerate the secrets via ./scripts/init.sh, then update Coolify’s env vars to match.