Skip to main content
DNZ keeps every change to a proxy’s route as a version: who made it, when, from where, and the route as the route dialog shows it before and after. Any version can be put back with one click, a deleted route included, and the restore is kept as a new version. It works the same for Traefik, DNZ Proxy and Caddy. Zones have the same safety net: History.

Where to find it

  • History… in a route’s menu (its ⋯ button, or right-click the row) on Proxy → Routes or a proxy’s page opens the route’s versions in a side panel. A route that several proxies serve has the item once per proxy: each proxy keeps its own history.
  • History on a proxy’s page lists the versions of all its routes, deleted ones included, newest first. Type a hostname above the list to keep only that route’s.
  • From the terminal:

What a version holds

  • What it did: Added, Edited, Deleted, Group (moved to or out of a route group) or Restored, with the version it went back to.
  • Who and from where: the UI, the CLI, an API token or an AI assistant (MCP), and the address the change came from.
  • What changed, a line per part of the route, named as the route dialog names it:
TCP and UDP routes have versions too, with lines of their own: the kind, entry points, hostnames (SNI; none means every connection), TLS (ended by the proxy or passed through), where the connections go, the client addresses, the priority and the TCP middlewares. A route without hostnames is named by its entry point (TCP route pg). Restoring a deleted one makes it again with its own servers. A new route lists what it has, a deleted one what it had. Saving a route unchanged keeps no version. The newest version of a route reads as it is now.
A version is anything the route dialog, dnz proxy routes add|edit|rm|group|redirect, the MCP route tools or the route endpoints of the API change. Changes made through /routers and /objects (routers, services and middlewares one by one) aren’t versions of a route.

Restore a version

1

Open the history

History… in the route’s menu, or History on the proxy’s page for a deleted route.
2

Pick the version

Click a version to see what it changed, then Restore next to it.
3

Check and confirm

DNZ shows what restoring changes, part by part. Restore saves the route as it was right after that version, checked like any edit, as a new version.
  • A deleted route comes back from its Deleted version, as it was before it was deleted, with its DNS records going through the proxy again.
  • DNS records stay proxied: a restore makes records of hostnames it adds go through the proxy, but never takes a record off it.
  • Middlewares, the firewall and a service the route used are found by name. One deleted since must be added again first (Proxy → Middlewares, Proxy → Upstreams); the restore says which. Middlewares renamed by the v2 upgrade are renamed in the history too, so an older version finds the right one.
  • Another route that holds one of the hostnames now is refused, as in the route dialog.
  • Restoring needs the same rights as editing routes and is in the audit log (proxy.route.restore). AI assistants can read route history but not restore it: an older version may drop a route’s password or sign-in.

Retention

Versions are kept for 365 days, and at most the newest 1,000 per proxy. Change both under Settings → Proxy → Route history, or:
Old versions are dropped every hour. Route history lives in DNZ’s database next to the routes: backups include it, and a Redis/Valkey cluster shares it like the routes. Deleting a proxy deletes its history.

API