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 packages are built by the package job of the pipeline and kept there as an artifact (dnseditor-cloud_<version>_amd64.deb, …_arm64.deb, dnseditor-cloud-<version>-1.x86_64.rpm, …aarch64.rpm). For your own node make package works as well, see below.

Terminal window
# Debian, Ubuntu and relatives
sudo apt install ./dnseditor-cloud_1.0.0_amd64.deb
# RHEL, Fedora, Rocky, SUSE
sudo dnf install ./dnseditor-cloud-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
Operator panel: http://127.0.0.1:8422/operator
Operator login: operator / Ox2h8dDLBFfs3neJacgq
IMPORTANT: back up the encryption key from /etc/dnseditor-cloud/env now.

The cloud edition has two separate logins: the platform admin and the operator panel under /operator. The package generates both start passwords on first install and writes them to /etc/dnseditor-cloud/env.

PathContents
/usr/bin/dnseditor-cloudthe binary with the embedded interface
/etc/dnseditor-cloud/envconfiguration — created once, never overwritten
/etc/dnseditor-cloud/env.examplefull reference of every variable
/lib/systemd/system/dnseditor-cloud.serviceunit with Restart=always and hardening
/var/lib/dnseditor-clouddatabase and state, mode 0750

Plus a system account dnseditor-cloud 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 Commissioning).

A single node runs right away with the SQLite default. A cluster needs every node on the same database and the same session store — otherwise node B does not know about a login on node A. Both are in /etc/dnseditor-cloud/env, commented out:

Terminal window
DNSE_DB_DSN=postgres://dnseditor:...@db.internal:5433/dnseditor?sslmode=require
DNSE_DB_YB=on
DNSE_VALKEY_ADDR=valkey.internal:6379

Important: the same DNSE_ENCRYPTION_KEY on every node. The package generates its own on each host — so copy the first node’s key to the second, otherwise the credentials in the shared database cannot be read. Details: Cluster operation.

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-cloud_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-cloud/env
sudo systemctl restart dnseditor-cloud

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

Terminal window
sudo apt install ./dnseditor-cloud_1.1.0_amd64.deb # upgrade
sudo apt remove dnseditor-cloud # 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-cloud and /var/lib/dnseditor-cloud 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/.