BindCaptain

Containerized BIND DNS Server with Smart Management

View the Project on GitHub randyoyarzabal/bindcaptain

BindCaptain

Welcome to BindCaptain - Take command of your DNS infrastructure with captain-grade precision.

Table of Contents

Getting Started

User Guides

Advanced Topics

Reference

Development

Quick Start

New to BindCaptain? Start here:

  1. System Requirements - Check compatibility and prerequisites
  2. Installation Guide - Complete setup and configuration
  3. Quick Start Guide - Get your first DNS zone running
  4. DNS Operations - Learn to manage DNS records

Quick Examples

Complete Setup (Supported Distributions)

# 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

Manual Setup (Unsupported Distributions)

# 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

DNS Management

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

Supported Distributions

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

Core Features

Project Structure

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

Common Operations

# 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

Prerequisites

Essential requirements:

Complete Prerequisites Guide

How It Works

BindCaptain uses:


BindCaptain - Take command of your DNS infrastructure

GitHub: https://github.com/yourusername/bindcaptain