On 9 Oct 2026, on our 1 GB test server, restoring a restic snapshot took 7.1 seconds and loading Coolify's database dump into a fresh Postgres container took 6.9 seconds, with 0 errors and identical row counts in all 65 tables. The whole drill took under a minute.
The checklist
- Restore to a folder, not over the live data.
restic restore latest --target /root/restore-test. - Start an empty Postgres of the same major version, with a memory cap so it cannot hurt the box:
docker run -d --name restore-pg --memory 256m -e POSTGRES_PASSWORD=test postgres:16-alpine. Wait untildocker exec restore-pg psql -U postgres -c 'select 1'works (9 to 19 s on our busy server). - Load the dump.
gzip -dc /root/restore-test/<path>/db.sql.gz | docker exec -i restore-pg psql -U postgres -q -f -, thengrep -c ERRORon the output: it should be 0. - Compare row counts, table by table, live against restored. Matching counts in every table is the proof; "restored 3387 files" is not.
- Delete the test container and folder.
docker rm -f restore-pg && rm -rf /root/restore-test. - Do it again after every Postgres major upgrade and at least once a quarter.
The full test
- restic Postgres backups on a 1 GB VPS, with a timed restore
- Back up Postgres on a small server: dump first, then restic
The starter kit has the backup side: fewservers-backup restore <folder> puts a snapshot back, and restore-volume puts one Docker volume back in place. Pay what you want.