Quick Start

Get DomU DNS running on a Raspberry Pi 3B in under 5 minutes. No database setup, no Docker required.

Prerequisites

No database required. DomU DNS stores all data as JSON files under /var/lib/domudns/data/. No PostgreSQL, SQLite, or Redis setup needed.

Step 1: Clone & Build

On your local machine (not the Pi), clone the repository and cross-compile for ARMv7:

bash
git clone https://github.com/mw7101/domudns.git
cd domudns

# Cross-compile for Raspberry Pi 3B (ARMv7)
make build-arm

# Binary is at: build/domudns-arm

Step 2: Install on Pi

bash
# Create directories on the Pi
ssh pi@<PI_IP> "sudo mkdir -p /etc/domudns /var/lib/domudns/data /usr/local/bin"

# Copy binary
scp build/domudns-arm pi@<PI_IP>:/tmp/domudns
ssh pi@<PI_IP> "sudo mv /tmp/domudns /usr/local/bin/domudns && sudo chmod +x /usr/local/bin/domudns"

Step 3: Minimal Configuration

Create /etc/domudns/config.yaml on the Pi:

yaml
cluster:
  role: "master"           # standalone = master without slaves
  data_dir: "/var/lib/domudns/data"

dnsserver:
  listen: "[::]:53"
  upstream:
    - "9.9.9.9"            # Quad9 (privacy-focused)
    - "149.112.112.112"

http:
  listen: ":80"

system:
  log_level: "info"
Note: Port 53 requires root privileges. If systemd-resolved is running, stop it first: sudo systemctl disable --now systemd-resolved

Step 4: Systemd Service

bash
# Copy service file (from repo)
scp scripts/domudns.service pi@<PI_IP>:/tmp/

ssh pi@<PI_IP> "
  sudo mv /tmp/domudns.service /etc/systemd/system/
  sudo systemctl daemon-reload
  sudo systemctl enable --now domudns
"

# Check status
ssh pi@<PI_IP> "sudo systemctl status domudns"

Step 5: First-Time Setup

Open the dashboard in your browser:

text
http://<PI_IP>/setup

The setup wizard will guide you through:

  1. Setting admin username and password
  2. Generating a secure API key
  3. Configuring blocklist sources
  4. Adding your local DNS zones

Verify DNS is Working

bash
# Test basic resolution
dig @<PI_IP> google.com

# Test blocklist (should return NXDOMAIN or 0.0.0.0)
dig @<PI_IP> ads.doubleclick.net

# Health check
curl http://<PI_IP>/api/health

Set as Network DNS

Configure your router to use the Pi's IP address as the primary DNS server. Most home routers have this setting under DHCP / LAN settings.