Sign inSign up

wozer/dns-server

By wozer

•Updated 6 months ago

A lightweight DNS server with a built-in web dashboard.

Image
Networking
Security
1

329

wozer/dns-server repository overview

⁠🧭 DNS Server with Web Dashboard

A lightweight DNS server with a built-in web dashboard for extremely easy management of records, certificates, and configuration. Supports IPv6, DoH DNS over HTTPS, host file blacklist, caching, TTL manipulation.


ā šŸš€ Quick Start

Run the container:

On first run, the server will generate a random admin password:

╔══════════════════════════════════════════════════╗
ā•‘           FIRST-RUN ADMIN CREDENTIALS        ā•‘
╠══════════════════════════════════════════════════╣
ā•‘  Username: admin                             ā•‘
ā•‘  Password: <generated-password>              ā•‘
╠══════════════════════════════════════════════════╣
ā•‘  Change this password after first login!     ā•‘
ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•

Then open your browser:

http://<server-ip>:8080

Login using the generated credentials.


ā šŸ” Important Notes

  • The admin password is only shown once on first startup.
  • If you lose the password, delete the database file and restart:
rm ./data/data.db
  • A new password will be generated on the next run.

ā šŸ’¾ Persistent Storage

You must mount a volume to persist:

  • Database
  • Certificates
  • Configuration data

docker run -d \
  --name dns-server \
  -p 53:53/udp \
  -p 53:53/tcp \
  -p 8080:8080/tcp \
  -p 443:443/tcp \
  -v "$(pwd)/data:/app/data" \
  -e DNS_DB_PATH=/app/data/data.db \
  -e DNS_DNS_PORT=53 \
  -e DNS_WEB_PORT=8080 \
  wozer/dns-server:latest

⁠🧱 Docker Compose Example

services:
  dnsserver:
    image: wozer/dns-server:latest
    container_name: dns-server
    ports:
      - "53:53/udp"
      - "53:53/tcp"
      - "8080:8080/tcp"
      - "443:443/tcp"
    volumes:
      - ./data:/app/data
    environment:
      - DNS_DB_PATH=/app/data/data.db
      - DNS_DNS_PORT=53
      - DNS_WEB_PORT=8080
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]
      interval: 30s
      timeout: 5s
      start_period: 10s
      retries: 3

Start it with:

docker compose up -d
docker logs dns-server

ā āš™ļø Environment Variables

VariableDescriptionDefault
DNS_DB_PATHPath to database file/app/data/data.db
DNS_DNS_PORTDNS server port53
DNS_WEB_PORTWeb dashboard port8080

ā ā¤ļø Tips

  • Change the admin password immediately after first login.
  • Always use a mounted volume to avoid data loss.
  • Port 53 may require elevated privileges depending on your system.

Tag summary

Content type

Image

Digest

sha256:9520e1e06…

Size

74.7 MB

Last updated

6 months ago

docker pull wozer/dns-server