Langfuse Backup

Data & APIs

Docker volume backup and restore for self-hosted Langfuse. Use when: backing up a self-hosted Langfuse instance, restoring Langfuse after a crash or migration, setting up daily cron backups for Langfuse postgres/clickhouse/minio/redis volumes. Backs up postgres (traces, scores), minio (blobs), with optional clickhouse and redis. Includes restore script with validation and 14-day retention pruning.

Install

openclaw skills install langfuse-backup

Last used: 2026-03-24 Memory references: 2 Status: Active

langfuse-backup

Backup and restore Docker volumes for a self-hosted Langfuse instance.

Scripts

  • scripts/backup_langfuse.sh — back up postgres + minio volumes (primary data)
  • scripts/restore_langfuse.sh — restore from a specific backup date

Quick start

# Configure (env vars or edit the script defaults)
export LANGFUSE_BACKUP_DIR="$HOME/.langfuse-backups"
export LANGFUSE_COMPOSE_DIR="/path/to/langfuse"   # directory with docker-compose.yml
export LANGFUSE_DB_CONTAINER="langfuse-db-1"       # postgres container name
export LANGFUSE_MINIO_CONTAINER="langfuse-minio-1" # minio container name
export LANGFUSE_DB_NAME="langfuse"                  # postgres database name
export LANGFUSE_DB_USER="langfuse"                  # postgres user

# Run a backup
bash scripts/backup_langfuse.sh

# List available backups
ls "$LANGFUSE_BACKUP_DIR"

# Restore from a date
bash scripts/restore_langfuse.sh 2026-02-27

Env vars

VarDefaultDescription
LANGFUSE_BACKUP_DIR~/.langfuse-backupsRoot backup directory
LANGFUSE_COMPOSE_DIR~/langfuseDocker Compose project directory
LANGFUSE_DB_CONTAINERlangfuse-db-1Postgres container name
LANGFUSE_MINIO_CONTAINERlangfuse-minio-1MinIO container name
LANGFUSE_DB_NAMElangfusePostgres database name
LANGFUSE_DB_USERlangfusePostgres user
LANGFUSE_RETENTION_DAYS14How many days of backups to keep

What gets backed up

VolumeBacked up?Notes
Postgres✅ Yespg_dump.sql.gz — traces, scores, evals
MinIO✅ Yestar.gz — uploaded blobs
ClickHouse⚠️ OptionalLarge; many users skip (replayed from traces)
Redis⚠️ SkipCache only — safe to skip

Cron setup (macOS LaunchAgent)

<!-- ~/Library/LaunchAgents/com.yourname.langfuse-backup.plist -->
<key>StartCalendarInterval</key>
<dict>
  <key>Hour</key><integer>2</integer>
  <key>Minute</key><integer>0</integer>
</dict>
<key>ProgramArguments</key>
<array>
  <string>/bin/bash</string>
  <string>/path/to/scripts/backup_langfuse.sh</string>
</array>
<key>StandardOutPath</key>
<string>/tmp/langfuse-backup.log</string>

Restore procedure

# 1. Stop Langfuse
cd $LANGFUSE_COMPOSE_DIR && docker compose down

# 2. Restore from backup
bash scripts/restore_langfuse.sh 2026-02-27

# 3. Start Langfuse
cd $LANGFUSE_COMPOSE_DIR && docker compose up -d