Installation and Setup - thakares/nx9-dns-server GitHub Wiki
Installation and Setup
This guide covers how to install and set up nx9-dns-server for your environment.
Prerequisites
Before installing nx9-dns-server, ensure you have the following:
- Rust toolchain (latest stable version recommended)
- SQLite development libraries
- For DNSSEC: BIND's
dnssec-keygen
tool (optional but recommended) - For deployment: systemd (for traditional deployment) or Docker (for containerized deployment)
Installation Methods
Method 1: Build from Source
-
Clone the repository:
git clone https://github.com/thakares/nx9-dns-server.git cd nx9-dns-server
-
Build the project:
cargo build --release
-
The compiled binary will be located at
target/release/dns_server
Method 2: Docker Deployment
See the [Deployment Options]page for Docker installation instructions.
Initial Setup
1. Create a DNS Records Database
Create an SQLite database with the required schema:
# Create a new SQLite database
sqlite3 dns.db < conf/dns_records.sql
# Or use the sample database
cp conf/dns.db.sample dns.db
2. Configure Environment Variables
Set up the following environment variables:
export DNS_BIND="0.0.0.0:53"
export DNS_DB_PATH="/path/to/dns.db"
export DNSSEC_KEY_FILE="/path/to/Kanydomain.tld.key" # If using DNSSEC
export DNS_FORWARDERS="8.8.8.8:53,1.1.1.1:53"
export DNS_NS_RECORDS="ns1.anydomain.tld.,ns2.anydomain.tld."
3. Run the Server
# Manual execution
./dns_server
# Or for systemd-based deployment
sudo cp dns_server /usr/local/bin/
sudo cp conf/dns-server.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now dns-server.service
4. Verify Installation
Use the provided diagnostic script to verify the installation:
bash scripts/dnscheck.sh
This will run a series of DNS queries against your server to ensure it's responding correctly.
Setup for DNSSEC (Optional)
If you want to enable DNSSEC, follow these steps:
-
Install BIND's
dnssec-keygen
tool:sudo apt-get install bind9-dnsutils # Debian/Ubuntu # or sudo yum install bind-utils # CentOS/RHEL
-
Generate a DNSSEC key pair:
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE yourdomain.tld
-
Set up the
DNSSEC_KEY_FILE
environment variable to point to the generated public key:export DNSSEC_KEY_FILE="/path/to/Kyourdomain.tld.+008+24550.key"
For more details on DNSSEC setup, see the [DNSSEC Implementation] page.
Next Steps
After installation, you might want to:
- Add or modify DNS records in the database
- Configure the Web UI (coming soon)
- Set up API access (coming soon)
- Create user accounts (coming soon)
See the [DNS Record Management] page for information on managing DNS records.