Rust DNS-over-TLS server with web panel, DHCP, ad blocking, and admin auth
4.8K
DNS-over-TLS server with web panel, DHCP, ad blocking, and admin auth.

docker pull ismkdc/nimbusdns:latest
docker run -d --name nimbusdns --restart unless-stopped --network host \
-v /etc/nimbusdns/nimbus.toml:/etc/nimbusdns/nimbus.toml \
-v nimbusdns-data:/var/lib/nimbusdns \
--cap-add NET_ADMIN --cap-add NET_BIND_SERVICE \
ismkdc/nimbusdns:latest
services:
nimbusdns:
image: ismkdc/nimbusdns:latest
container_name: nimbusdns
restart: unless-stopped
network_mode: "host"
cap_add:
- NET_ADMIN
- NET_BIND_SERVICE
volumes:
- /etc/nimbusdns/nimbus.toml:/etc/nimbusdns/nimbus.toml
- nimbusdns-data:/var/lib/nimbusdns
volumes:
nimbusdns-data:
Save as docker-compose.yml and run:
docker compose up -d
Open http://localhost:8181 to access the web panel.
Place nimbus.toml at /etc/nimbusdns/nimbus.toml:
[dns]
upstreams = [
{Tls = {address = "8.8.8.8", port = 853, hostname = "dns.google"}},
{Tls = {address = "8.8.4.4", port = 853, hostname = "dns.google"}},
]
bind = "0.0.0.0:53"
blocking-mode = "NULL"
query-log = true
[webserver]
ports = ["8181o"]
[dhcp]
enabled = true
pool-start = "192.168.1.100"
pool-end = "192.168.1.200"
router = "192.168.1.1"
lease-time = 86400
[blocking]
source-url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
refresh-interval = 86400
[misc]
enable-ipv6 = false
cargo build --release --bin nimbusdns
docker build -t nimbusdns .
Content type
Image
Digest
sha256:bcaa35c6c…
Size
16.7 MB
Last updated
8 days ago
docker pull ismkdc/nimbusdns