Backups
Datenbank und Medien sichern, wiederherstellen und die statischen Websites neu erzeugen.
Sichere zwei Dinge: die Datenbank (alle Inhalte, Verlauf, Benutzer, Einstellungen) und den Speicherordner mit Medien und Screenshots. Die generierten Websites müssen nicht gesichert werden – sie lassen sich jederzeit neu erzeugen.
Bewahre außerdem die .env (vor allem APP_SECRET) zusammen mit den Backups auf.
Datenbank
docker compose exec -T postgres pg_dump -U docsello -Fc docsello > docsello-$(date +%F).dumpAls nächtlicher Cron-Job, der 14 Tage aufbewahrt (Pfade wie in der nginx-Variante):
cat > /etc/cron.d/docsello-backup <<'EOF'
45 3 * * * root cd /mnt/storage/docsello/app && docker compose exec -T postgres pg_dump -U docsello -Fc docsello > /mnt/storage/docsello/backups/docsello-$(date +\%F).dump && find /mnt/storage/docsello/backups -name 'docsello-*.dump' -mtime +14 -delete
EOFSpeicherordner
Wichtig sind die Medien (storage/media). In der Caddy-Variante liegt der Speicher im Docker-Volume
docsello_storage:
docker run --rm -v docsello_storage:/data:ro -v "$PWD":/backup alpine tar czf /backup/storage-$(date +%F).tar.gz -C /data .In der nginx-Variante liegt er direkt auf dem Server, z. B. unter /mnt/storage/docsello/data/storage.
Wiederherstellen
docker compose stop web worker
docker compose exec -T postgres pg_restore -U docsello -d docsello --clean --if-exists < docsello-JJJJ-MM-TT.dump
# Speicher zurückspielen (Caddy-Variante):
docker run --rm -v docsello_storage:/data -v "$PWD":/backup alpine sh -c 'tar xzf /backup/storage-JJJJ-MM-TT.tar.gz -C /data && chown -R 1000:1000 /data'
docker compose up -d
docker compose run --rm worker build-site # alle Websites neu erzeugenWebsites neu erzeugen
Nach einer Wiederherstellung oder wenn etwas seltsam aussieht:
docker compose run --rm worker build-siteDas erzeugt alle statischen Websites aus der Datenbank neu. Eine einzelne Website erzeugst du auch per API neu:
POST /api/v1/sites/{site}/publish bzw. docsello publish --site <website>.