Self-hosting
Run your own authoritative DNS with Docker Compose.
The DNS server and the console ship as two container images, configured through a single environment file. You need Docker, a host with port 53 available, and a few minutes.
Start it
Download the compose file and the environment template, set an admin password of at least 10 characters and a session secret of at least 32 characters, then pull the published images and start both services. The console is then at port 3000, and you sign in as admin.
$ mkdir patchvia && cd patchvia$ curl -fsSLO https://raw.githubusercontent.com/patchvia/patchvia/main/deploy/docker-compose.yml$ curl -fsSL -o .env https://raw.githubusercontent.com/patchvia/patchvia/main/deploy/.env.example$ nano .env # set ADMIN_PASSWORD and SESSION_SECRET$ docker compose pull$ docker compose up -d --no-buildPorts
DNS is served on port 53, over UDP and TCP. The API listens on port 8081 and is bound to localhost by default, because the console and automation use it and it should not be exposed without TLS.
- DNS: port 53, UDP and TCP
- API: port 8081, bound to 127.0.0.1 unless you set API_BIND
- Console: port 3000
Port 53 on Ubuntu
On many Ubuntu servers systemd-resolved already listens on port 53. The deployment guide explains how to free the port, which firewall rules to add, and how to undo the change.
Data and backups
All state is in one database file on a Docker volume. The database holds DNSSEC private keys and password hashes, so back it up and protect it like a secret.
Build or pull
Build the images from a checkout for development, or pull the published images on a server. The pulled images are chosen by registry and tag in the environment file.
Questions before you install?
Read the frequently asked questions, or go straight to the features list.