# DNS: Configure a DNS server using nsd
#######################################

# After running this script, you also must run scripts/dns_update.sh,
# and any time a zone file is added/changed/removed, and any time a
# new domain name becomes in use by a mail user.
#
# This script will turn on DNS for $PUBLIC_HOSTNAME.

# Install nsd, our DNS server software.

useradd nsd
apt-get -qq -y install nsd

# Prepare nsd's configuration.

sudo mkdir -p /var/run/nsd
mkdir -p "$STORAGE_ROOT/dns";

# Create the default zone if it doesn't exist.

if [ ! -f "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" ]; then
	# can be an empty file, defaults are applied elsewhere
	cat > "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" << EOF;
EOF
fi

# Let the storage user own all DNS configuration files.

chown -R $STORAGE_USER.$STORAGE_USER $STORAGE_ROOT/dns

# Permit DNS queries on TCP/UDP in the firewall.

ufw allow domain


# DNS: Configure a DNS server using nsd
#######################################

# After running this script, you also must run scripts/dns_update.sh,
# and any time a zone file is added/changed/removed, and any time a
# new domain name becomes in use by a mail user.
#
# This script will turn on DNS for $PUBLIC_HOSTNAME.

# Install nsd, our DNS server software.

# ...but first, we have to create the user because the 
# current Ubuntu forgets to do so in the .deb
if id nsd > /dev/null 2>&1; then
	echo "nsd user exists... good";
else
	useradd nsd;
if
	
apt-get -qq -y install nsd

# Prepare nsd's configuration.

sudo mkdir -p /var/run/nsd
mkdir -p "$STORAGE_ROOT/dns";

# Create the default zone if it doesn't exist.

if [ ! -f "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" ]; then
	# can be an empty file, defaults are applied elsewhere
	cat > "$STORAGE_ROOT/dns/$PUBLIC_HOSTNAME.txt" << EOF;
EOF
fi

# Let the storage user own all DNS configuration files.

chown -R $STORAGE_USER.$STORAGE_USER $STORAGE_ROOT/dns

# Permit DNS queries on TCP/UDP in the firewall.

ufw allow domain


Add conditional to avoid errors if nsd exists
Add conditional to avoid errors if nsd exists