Containerized BIND DNS Server with Smart Management
Get BindCaptain up and running in minutes with this step-by-step guide.
git clone https://github.com/yourusername/bindcaptain.git
cd bindcaptain
Run the automated system setup script:
sudo ./tools/system-setup.sh
This script will:
Set up your DNS configuration:
sudo ./tools/config-setup.sh wizard
Follow the interactive wizard to:
Build the BindCaptain container:
sudo ./bindcaptain.sh build
Start the DNS service:
sudo ./bindcaptain.sh run
Check that everything is running:
# Check container status
sudo ./bindcaptain.sh status
# Test DNS resolution
dig @localhost example.com
nslookup example.com localhost
Load the Chief plugin (works locally on the DNS host with BC_HOST unset, and remotely from a workstation when BC_HOST is set):
source ./chief-plugin/bc_chief-plugin.sh
# or, when installed: source /opt/bindcaptain/chief-plugin/bc_chief-plugin.sh
Create your first DNS record:
bc.create webserver.example.com 192.168.1.100
See DNS Operations for the full command reference, including the in-container manager primitives (
bc.create_record, etc.) for direct host-local use.
# Container management
sudo ./bindcaptain.sh build # Build container
sudo ./bindcaptain.sh run # Start service
sudo ./bindcaptain.sh stop # Stop service
sudo ./bindcaptain.sh status # Check status
# DNS management — Chief plugin (recommended; works local + remote)
source ./chief-plugin/bc_chief-plugin.sh
bc.create host.domain.com 192.168.1.100
bc.list domain.com
bc.delete host.domain.com
# Check logs
sudo podman logs bindcaptain
# Check configuration
sudo ./bindcaptain.sh validate
# Check BIND status
sudo ./bindcaptain.sh status
# Test configuration
sudo named-checkconf /path/to/your/named.conf
# Ensure proper ownership
sudo chown -R root:root /opt/bindcaptain
sudo chmod +x /opt/bindcaptain/tools/*.sh
Need help? Check the Troubleshooting Guide or Manual Setup for unsupported distributions.