{% extends "cms/base.html" %} {% block title %}Backups{% endblock %} {% block page_title %}Backups{% endblock %} {% block extra_head %} {% endblock %} {% block cms_content %} {% if pending_delete %}
Backup {{ pending_display }} deleted. Permanent in 15s.
{% csrf_token %}
{% endif %}

Backups ({{ backups|length }})

{% csrf_token %}
Saved Backups
{% if backups %} {% for b in backups %} {% endfor %}
# Name Size Created Actions
{{ forloop.counter }}
{{ b.display }}
{{ b.filename }}
{{ b.size_mb }} MB {{ b.modified|date:"d M Y H:i" }}
{% else %}
No backups yet. Click Create Backup to get started.
{% endif %}
Nightly Encrypted Backup {{ nightly.label }}
{{ nightly.value }}
{{ nightly.detail }}
This is not one of the archives above. It runs on the server at 03:00, streams the database straight into AES-256 so no readable copy is ever written to disk, and stores it where the panel cannot reach it. The panel only reads a status line the job writes when it finishes.
What is included
Database — full PostgreSQL dump: content, orders, users, tenants, settings
Code — the whole application, templates and migrations
Environment — .env and frozen package list, so the install rebuilds exactly
Media files — all uploaded images and documents
ZIP format — single file, easy to download and store
RESTORE.txt — restore instructions included inside
Handle With Care
These archives contain both halves of your security: .env, which holds FIELD_ENCRYPTION_KEY, and the database dump, which holds every credential encrypted with that key. Separately each is useless. Together they open Stripe, mail, and every API key you have. Treat a downloaded copy like a password. Never put one on a shared or synced drive.
Restore Warning
Restoring a backup will overwrite all current data including the database and media files. The server will restart automatically. You will be logged out.
{% endblock %}