Skip to content

Technitium: store settings and zones on the host - #364

Merged
crypt0rr merged 1 commit into
mainfrom
technitium-persist-settings
Oct 8, 2026
Merged

crypt0rr merged 1 commit into
mainfrom
technitium-persist-settings

Conversation

@jackspiering

Copy link
Copy Markdown
Collaborator

Description

Technitium keeps its settings, zones, logs, and statistics in /etc/dns. The stack mounted the data folder at /config, which Technitium does not use. The host folder stayed empty, and everything was lost when the container was recreated, for example after an image update.

  • compose.yaml: mount ./${SERVICE}-data/app/config at /etc/dns.
  • README.md (service): list the data folder, remove the data-loss warning, and add an "Upgrading" section. Existing installations have their settings inside the container, so the section explains how to copy them to the host before the first start of the new version.

Related Issues

  • None.

Verification

Tested in a scratch copy with technitium/dns-server:latest. A stand-in container replaced Tailscale, because the test only concerns the volume.

Step main This branch
Create a zone, then recreate the container Zone is gone, host folder has 0 files Zone is still there
docker compose down, then up -d Zone is gone Zone is still there
New installation: create a zone, recreate the container Zone is gone Zone is still there, host folder has 13 entries

Upgrade path from the README, starting on main with a zone probe5.example and an A record www.probe5.example:

  1. docker compose stop application
  2. docker cp app-technitium:/etc/dns/. ./technitium-data/app/config/
  3. docker compose up -d with the file from this branch

Result: the zone is listed, and nslookup www.probe5.example 127.0.0.1 in the stack returns 192.0.2.10.

A copy from the running container with docker exec … cp missed the zone, because Technitium writes zone files with a delay. The README therefore stops the container first.

  • docker compose config --quiet in services/technitium: passed.
  • rumdl check --config .markdownlint.yml services/technitium/README.md: passed.
  • git diff --check: passed.

Not tested: access through the Tailnet, which this change does not touch.

Checklist

  • I have performed a self-review of my code and followed the templates structure.
  • I have added verification that the stack works as expected.
  • I have updated necessary documentation (e.g. frontpage README.md ).
  • I have selected the correct label(s) for this PR.

Additional Context

@jackspiering jackspiering added the bug Something isn't working label Oct 7, 2026
@jackspiering
jackspiering requested a review from crypt0rr October 7, 2026 17:24
Base automatically changed from t3code/standardize-service-readmes to main October 8, 2026 15:23
Mount the data folder at /etc/dns, where Technitium keeps its settings,
zones, logs, and statistics. The stack mounted it at /config, which
Technitium does not use, so everything was lost when the container was
recreated.

Add upgrade steps to the README for existing installations.
@jackspiering
jackspiering force-pushed the technitium-persist-settings branch from 815ec5a to 2cf51a8 Compare October 8, 2026 15:24
@crypt0rr
crypt0rr merged commit 73fa62b into main Oct 8, 2026
1 check passed
@crypt0rr
crypt0rr deleted the technitium-persist-settings branch October 8, 2026 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants