Updates
If you used install.sh or option B, you already have update.sh in the project folder. It does what's safe and unsurprising – and asks before doing anything bigger.
Standard flow
cd /path/to/dns-manager
./update.sh What happens, in order:
git fetchwith tags. If checkout sits on a release tag, switches to the newestv*. If onmain, runsgit pull.- Offers a DB backup (skip with
--no-backup) – writes abackup_<version>_<ts>.sqlviamysqldump --single-transaction. - Warns on a major version jump (red box, explicit confirmation needed).
docker compose build backend– with--no-cacheonly on actual version bumps or with explicit--rebuild. Saves 3–5 min on patches.docker compose up -d.
Flags
| Flag | Purpose |
|---|---|
--rebuild / --no-cache | Force build --no-cache, even without a version bump. |
--no-backup | Skip the DB backup prompt. |
--skip-fetch | No git fetch/pull, use the local state. |
--help / -h | Print help. |
What is preserved across updates
- MariaDB data (
mariadb_datavolume). .env(never overwritten).- Uploaded files like the branding logo (
backend_uploadsvolume). - All tokens, webhook definitions, server configs, users – everything in the DB.
Manually pin to a specific version
cd dns-manager
git fetch origin --tags --force --prune --prune-tags
git checkout v2.3.7 # or: git checkout main && git pull
docker compose build --no-cache backend
docker compose up -d Rollback
docker compose down
docker compose up -d mariadb
sleep 10
docker exec -i dns-manager-db mysql -u root -p dns_manager < backup_v2.3.7_20260420-153000.sql
git checkout v2.3.7
docker compose build backend
docker compose up -d Pre-update checklist
- Fresh DB dump (auto-done by
./update.shunless you pass--no-backup). - Read the target version's notes – see Changelog.
- For major jumps: try a stage VM first.
- Enough disk for a second backend image during the build.