Containerized BIND DNS Server with Smart Management
Welcome to BindCaptain - Take command of your DNS infrastructure with captain-grade precision.
New to BindCaptain? Start here:
# 1. Clone BindCaptain
git clone https://github.com/yourusername/bindcaptain.git
cd bindcaptain
# 2. System setup (one-time)
sudo ./tools/system-setup.sh
# 3. Configure DNS zones
sudo ./tools/config-setup.sh wizard
# 4. Build and run container
sudo ./bindcaptain.sh build
sudo ./bindcaptain.sh run
# 5. Manage DNS records (Chief plugin — works locally and remotely)
source /opt/bindcaptain/chief-plugin/bc_chief-plugin.sh
bc.create webserver.example.com 192.168.1.100
# 1. Install prerequisites manually
# See manual-setup.md for your distribution
# 2. Configure DNS zones
sudo ./tools/config-setup.sh wizard
# 3. Build and run container
sudo ./bindcaptain.sh build
sudo ./bindcaptain.sh run
BindCaptain ships two bc.* surfaces: the Chief plugin (operator-facing wrappers — bc.create, bc.update, bc.delete, bc.list, bc.refresh, bc.sync_ptr) and the in-container manager (low-level primitives — bc.create_record, bc.create_cname, bc.create_txt, bc.delete_record, bc.list_records). For day-to-day use, prefer the Chief plugin — it works the same locally on the DNS host and remotely from a workstation. See DNS Operations and Chief Remote Plugin for details.
# Load the Chief plugin (BC_HOST unset = local mode on the DNS host)
source /opt/bindcaptain/chief-plugin/bc_chief-plugin.sh
# Create DNS records (only A, CNAME, TXT supported for writes)
bc.create webserver.example.com 192.168.1.100
bc.create mail.example.com 192.168.1.101
bc.create CNAME www.example.com webserver
# List and manage records
bc.list example.com
bc.update webserver.example.com 192.168.1.200
bc.delete webserver.example.com
# Validate + reload BIND
bc.refresh
| Distribution | Support | Setup Method |
|---|---|---|
| RHEL 8/9 | ✅ Full | system-setup.sh |
| CentOS 8/9 | ✅ Full | system-setup.sh |
| Rocky Linux 8/9 | ✅ Full | system-setup.sh |
| AlmaLinux 8/9 | ✅ Full | system-setup.sh |
| Fedora 35+ | ✅ Full | system-setup.sh |
| Ubuntu/Debian | ⚠️ Manual | See Manual Setup |
| Arch Linux | ⚠️ Manual | See Manual Setup |
| Others | ⚠️ Manual | See Manual Setup |
bindcaptain/
├── bindcaptain.sh # Main container management script
├── chief-plugin/ # Optional Chief plugin for remote control
│ ├── bc_chief-plugin.sh # Source in Chief to control remote BindCaptain
│ └── README.md
├── tools/ # Management and setup tools
│ ├── common.sh # Shared utilities library
│ ├── system-setup.sh # System preparation (supported distros)
│ ├── config-setup.sh # DNS configuration management
│ └── bindcaptain_manager.sh # DNS management (bc.*); run 'refresh' or source for bc.help
├── config-examples/ # Configuration templates
├── docs/ # Comprehensive documentation
└── tests/ # Test suite
# Container lifecycle
sudo ./bindcaptain.sh build # Build container image
sudo ./bindcaptain.sh run # Start container
sudo ./bindcaptain.sh stop # Stop container
sudo ./bindcaptain.sh status # Check status
# DNS management — Chief plugin (recommended)
source /opt/bindcaptain/chief-plugin/bc_chief-plugin.sh
bc.help # Show all bc.* commands
bc.create --help # Per-command help
bc.list # List records (all zones)
bc.refresh # Validate zones and reload BIND
# System management
sudo ./tools/system-setup.sh # One-time system setup
sudo ./tools/config-setup.sh # Configure DNS zones
Essential requirements:
BindCaptain uses:
BindCaptain - Take command of your DNS infrastructure