commit 7412f5b2b743e5e8de06ca7f449346b5fb8d58f8 Author: Ken Schiano Date: Fri Aug 7 22:40:09 2026 -0400 feat: add Technitium DNS Home Assistant add-on - repository.yaml manifest for HA add-on store - technitium_dns add-on using upstream technitium/dns-server image - config.yaml with ports 53/udp, 53/tcp, 5380/tcp and password schema - Dockerfile symlinks /etc/dns to /data/dns for persistent config - READMEs for repo and add-on diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1564f4f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# build artifacts +*.log +*.tmp +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d11e3a7 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Hassio_Addons + +Home Assistant add-on repository hosting the Technitium DNS add-on. + +## Add-ons + +| Add-on | Description | +|---|---| +| [technitium_dns](./technitium_dns/) | Technitium DNS Server — local DNS with ad-blocking, web console, acts as secondary to a primary Technitium instance in Kubernetes via DNS Replication | + +## Add this repository to Home Assistant + +**Settings → Add-ons → Add-on Store → ⋮ (top right) → Repositories** + +``` +https://git.kenschiano.net/kschiano/Hassio_Addons.git +``` + +Then refresh the add-on store and install **Technitium DNS**. + +## Repo layout + +``` +Hassio_Addons/ +├── repository.yaml # repository manifest (read by HA) +└── technitium_dns/ + ├── config.yaml # add-on metadata, ports, schema + ├── Dockerfile # thin layer on technitium/dns-server:latest + └── README.md +``` + +## Update workflow + +1. Bump `version` in `technitium_dns/config.yaml`. +2. Commit and push to `git.kenschiano.net/kschiano/Hassio_Addons.git`. +3. In Home Assistant: refresh the add-on store, update the add-on, rebuild. + +## Notes + +- The add-on uses the upstream `technitium/dns-server` image directly — no custom build pipeline needed. +- Config persists to the add-on config volume (`/data/dns` symlinked to `/etc/dns`). +- For primary/secondary replication setup, see `technitium_dns/README.md`. \ No newline at end of file diff --git a/repository.yaml b/repository.yaml new file mode 100644 index 0000000..ad7a227 --- /dev/null +++ b/repository.yaml @@ -0,0 +1,3 @@ +name: Technitium +url: https://git.kenschiano.net/kschiano/Hassio_Addons +maintainer: kschiano \ No newline at end of file diff --git a/technitium_dns/Dockerfile b/technitium_dns/Dockerfile new file mode 100644 index 0000000..eb09d18 --- /dev/null +++ b/technitium_dns/Dockerfile @@ -0,0 +1,14 @@ +ARG BUILD_FROM=ghcr.io/hassio-addons/base:latest +FROM technitium/dns-server:latest + +# Home Assistant add-on requirements +ENV DATA_DIR="/data/dns" + +# Technitium stores its config in /etc/dns by default; use the add-on data +# directory so settings persist across restarts. +RUN mkdir -p /data/dns && \ + ln -s /data/dns /etc/dns + +# Home Assistant expects a run command via S6/entrypoint; Technitium ships its own. +ENTRYPOINT [] +CMD ["dotnet", "DnsServerApp.dll"] \ No newline at end of file diff --git a/technitium_dns/README.md b/technitium_dns/README.md new file mode 100644 index 0000000..37c835f --- /dev/null +++ b/technitium_dns/README.md @@ -0,0 +1,38 @@ +# Technitium DNS - Home Assistant Add-on + +Runs the [Technitium DNS Server](https://technitium.com/dns/) inside Home Assistant as a supervised add-on. + +## Features +- Ad-blocking DNS server with web console on port 5380 +- Local DNS records, conditional forwarding, DNS-over-TLS/HTTPS +- Persists config to the add-on config volume +- Designed to act as **secondary** to a primary Technitium instance via DNS Replication + +## Installation + +1. Add this repository in Home Assistant: + **Settings → Add-ons → Add-on Store → ⋮ → Repositories** + ``` + https://git.kenschiano.net/kschiano/Hassio_Addons.git + ``` +2. Refresh the add-on store, then install **Technitium DNS**. +3. Set `admin_password` and `timezone` in the add-on config. +4. Start the add-on and open the web UI at `http://homeassistant.local:5380`. + +## Failover / Replication setup + +This add-on is intended to run as a **secondary** to a primary Technitium instance deployed to Kubernetes. See the repository root README for the full primary/secondary replication plan. + +Quick steps: +1. On the **Primary** (k8s): Settings → Replication → generate API key, add this host as secondary (`https://homeassistant.local:5380`). +2. On this add-on: Settings → Replication → set the same API key, enable secondary mode. + +## Updating the add-on + +The add-on pulls `technitium/dns-server:latest` upstream. To update: +1. Rebuild the add-on image: **Settings → Add-ons → Technitium DNS → Rebuild** +2. Or restart the add-on after bumping `version` in `config.yaml`. + +## Repository + +Source: https://git.kenschiano.net/kschiano/Hassio_Addons \ No newline at end of file diff --git a/technitium_dns/config.yaml b/technitium_dns/config.yaml new file mode 100644 index 0000000..03d0f4f --- /dev/null +++ b/technitium_dns/config.yaml @@ -0,0 +1,25 @@ +name: Technitium DNS +version: 1.0.0 +slug: technitium_dns +description: Technitium DNS Server add-on for Home Assistant +arch: + - amd64 + - aarch64 + - armv7 +init: false +url: https://github.com/technitiumsoftware/dnsserver +webui: http://[HOST]:[PORT:5380]/ +ports: + 53/udp: 53 + 53/tcp: 53 + 5380/tcp: 5380 +map: + - addon_config:rw + - ssl +options: + admin_password: CHANGE_ME + timezone: UTC +schema: + admin_password: password + timezone: str +image: technitium/dns-server \ No newline at end of file