A simple web GUI for managing DNS servers.
- Manage DNS zones and records (A, AAAA, CNAME, MX, TXT, NS, PTR, SRV)
- Configure forwarders (global and conditional)
- Bundled BIND9 or connect to external DNS servers
- Dark/light theme
docker run -d \
-p 53:53/udp -p 53:53/tcp \
-p 8080:80 \
-v dnsinabox-data:/data \
dnsinaboxAccess the UI at http://localhost:8080
Default login: admin / admin
Single container with:
- nginx - serves React frontend
- FastAPI - REST API backend
- SQLite - configuration database
- BIND9 - DNS server (bundled mode)
┌─────────────────────────────────┐
│ dnsinabox container │
│ ┌───────────┐ ┌─────────────┐ │
│ │ nginx │ │ BIND9 │ │
│ │ (React UI)│ │ (DNS) │ │
│ └─────┬─────┘ └──────▲──────┘ │
│ │ │ │
│ ┌─────▼──────────────┴──────┐ │
│ │ FastAPI + SQLite │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
| Path | Purpose |
|---|---|
/data |
SQLite database, zone files, config |
| Variable | Default | Description |
|---|---|---|
ADMIN_USERNAME |
admin |
Admin username |
ADMIN_PASSWORD |
admin |
Admin password |
SECRET_KEY |
(random) | JWT signing key |
# Clone the repository
git clone https://github.com/youruser/dnsinabox.git
cd dnsinabox
# Build the container
docker build -t dnsinabox .
# Run it
docker run -d \
-p 53:53/udp -p 53:53/tcp \
-p 8080:80 \
-v dnsinabox-data:/data \
dnsinaboxOr use docker-compose:
docker-compose up --buildFor development with hot reload, use the dev compose file:
docker-compose -f docker-compose.dev.yml up --buildThis starts separate containers for backend, frontend, database, and BIND with hot reload enabled.
See TASKS.md for current progress and planned features.
MIT