Skip to content

Installing from a package

Besides the bare binary there are ready-made distribution packages. The package brings everything a service needs on a server: its own system account, a systemd unit with a restart policy, a configuration file with a freshly generated encryption key and a start password for the first login.

The most convenient route on Debian/Ubuntu is the TechEve package repository — set it up once, then updates arrive through the ordinary apt upgrade, and the admin area points out new versions:

Terminal window
curl -fsSL https://repo.techeve.de/setup.sh | sudo sh
sudo apt install dnseditor

Alternatively, packages are attached to every release as Generic Packages in the GitLab project (dnseditor_<version>_amd64.deb, …_arm64.deb, dnseditor-<version>-1.x86_64.rpm, …aarch64.rpm).

Terminal window
# Debian, Ubuntu and relatives (single file)
sudo apt install ./dnseditor_1.0.0_amd64.deb
# RHEL, Fedora, Rocky, SUSE
sudo dnf install ./dnseditor-1.0.0-1.x86_64.rpm

The service runs right after installation and reports the credentials:

DNS-Editor has been installed.
Web interface: http://127.0.0.1:8422
Login: admin / 3ce5002cb3a407e7fc70965a
IMPORTANT: back up the encryption key from /etc/dnseditor/env now.
PathContents
/usr/bin/dnseditorthe binary with the embedded interface
/etc/dnseditor/envconfiguration — created once, never overwritten
/etc/dnseditor/env.examplefull reference of every variable
/lib/systemd/system/dnseditor.serviceunit with Restart=always and hardening
/var/lib/dnseditordatabase and state, mode 0750

Plus a system account dnseditor without a login shell. By default the service listens on 127.0.0.1:8422 only — put a TLS reverse proxy in front for public operation (see Quick start).

Installer and service speak English by default. When the system language is German, the texts appear in German:

Terminal window
LANG=de_DE.UTF-8 sudo apt install ./dnseditor_1.0.0_amd64.deb
DNS-Editor wurde installiert.
Oberflaeche: http://127.0.0.1:8422
Anmeldung: admin / 3ce5002cb3a407e7fc70965a

LC_ALL, LC_MESSAGES and LANG are read in that order, then LANGUAGE. C and POSIX count as neutral and stay English.

The German terminal texts deliberately avoid umlauts (“Oberflaeche”, “Schluessel”). Services run under systemd with a neutral locale; real umlauts would regularly show up as question marks or mojibake in the journal, over SSH sessions and in log aggregators. The web interface, the API, e-mails and invoice PDFs are unaffected — they carry proper German.

To make the running service log in German, put the locale into the configuration, because systemd starts services without LANG:

Terminal window
echo 'LANG=de_DE.UTF-8' | sudo tee -a /etc/dnseditor/env
sudo systemctl restart dnseditor

An upgrade replaces the binary and restarts the service; /etc/dnseditor/env is left alone.

Terminal window
sudo apt install ./dnseditor_1.1.0_amd64.deb # upgrade
sudo apt remove dnseditor # stop the service, remove the package

Configuration and database survive even a purge — the env file holds the key without which any backup is worthless. To really get rid of everything, delete /etc/dnseditor and /var/lib/dnseditor by hand.

Terminal window
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
make package # → dist/packages/*.deb and *.rpm, amd64 + arm64

nfpm needs neither dpkg nor rpmbuild, so it also runs on a Mac and in the CI image. The package definition lives in packaging/.