# 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