Files
vibedns/docker-compose.yml
2026-08-16 21:18:45 -05:00

65 lines
1.6 KiB
YAML

# VibeDNS via Docker Compose.
#
# docker compose up -d
# docker compose logs vibedns # the generated admin password is printed once
#
# Then open http://127.0.0.1:8080 and sign in as "admin".
services:
vibedns:
build:
context: .
args:
VERSION: "0.1.0"
image: vibedns:latest
container_name: vibedns
restart: unless-stopped
ports:
# DNS needs both transports: TCP is not optional, it is how large
# answers are carried after a truncated UDP reply.
- "53:53/udp"
- "53:53/tcp"
# The management interface is bound to loopback on the host. Reach it
# over SSH or a VPN rather than exposing it to the network.
- "127.0.0.1:8080:8080/tcp"
volumes:
- vibedns-data:/var/lib/vibedns
environment:
VIBEDNS_DB_PATH: /var/lib/vibedns/dns.db
VIBEDNS_HTTP_ADDR: 0.0.0.0:8080
VIBEDNS_DNS_ADDR: 0.0.0.0:53
VIBEDNS_LOG_LEVEL: info
VIBEDNS_LOG_FORMAT: text
# Set your own initial password instead of the generated one:
# VIBEDNS_ADMIN_USERNAME: admin
# VIBEDNS_ADMIN_PASSWORD: change-me-to-something-long
# Binding port 53 without running the whole container as root.
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/healthz"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
vibedns-data:
driver: local