Upgrading and backups
What to back up
- The
latestarr-datavolume. It holds the SQLite database: sources, recipients, newsletters, designs, and send history. - Your
ENCRYPTION_KEY.
You need both. A database without its key is unrecoverable: every source credential, SMTP password, and webhook URL in it is encrypted with that key. Losing the volume but keeping the key is just an ordinary restore from backup.
One way to copy the volume while the container is stopped:
docker compose stop
docker run --rm -v latestarr-data:/data -v "$PWD":/backup alpine \
tar czf /backup/latestarr-data-$(date +%F).tar.gz -C /data .
docker compose startUpgrading
LatestArr is pre-1.0, so releases can include breaking changes. Back up first, and read the release notes for every version you’re skipping.
docker compose pull
docker compose up -dDatabase migrations run automatically when the container starts. There’s no separate migration step.
To stay on a particular version, set LATESTARR_VERSION in .env (for example v0.11.2)
instead of tracking latest. See Image tags.
Upgrading to 0.11.1
LatestArr now checks ENCRYPTION_KEY at startup.
Existing installs already have one set, so most upgrades need nothing. If the container stops
straight after upgrading, run docker logs latestarr: it names the problem with the key. Restore
the key your sources and SMTP profiles were saved with; a new key can’t read them.
Upgrading to 0.11
0.11 replaces the old drag-and-drop template editor with Designs. The upgrade handles this for you:
- Templates you built in the old editor become code designs with their markup intact, so they send exactly as before.
- Each newsletter’s intro, footer note, buttons, and font move into its design. Where one design was shared by newsletters with different text, LatestArr makes a copy per variation.
- The old newsletter columns are kept, unused, for one release in case you need to roll back.
Old /templates links redirect to /designs.
A few things to know as well:
- Designs saved before 0.11 keep their settings. To get the new sections by type, turn on Group by type in the design.
- The container runs as a regular user, not root. On first start it takes ownership of
/app/data, so existing volumes keep working. If you set your ownuser:in Compose, that user needs write access to the data folder. TRUST_PROXY=truenow reaches the container. Only set it if LatestArr is behind a reverse proxy.