ns1.stackryze.com and ns2.stackryze.com, which serve all Stackryze Domain subdomains under indevs.in, sryze.cc, ryzedns.org, and nx.kg.
The walkthrough below uses
yourname.indevs.in as a working example. If you registered under one of the other namespaces (sryze.cc, ryzedns.org, nx.kg), substitute the namespace everywhere you see indevs.in.Why PowerDNS?
- Complete control — own your DNS infrastructure.
- Multiple backends — PostgreSQL, SQLite, BIND zone files, and more.
- RESTful HTTP API — programmatic DNS management.
- High performance — built for millions of queries.
- DNSSEC support — built in.
- Active development — regular updates and security patches.
Prerequisites
Before you begin, confirm you have:- ✅ Linux server(s) with root access (minimum two for redundancy).
- ✅ Docker and Docker Compose (20.10.0+ recommended).
- ✅ A Stackryze Domain registered at domain.stackryze.com.
- ✅ At least one public static IP.
- ✅ Working knowledge of DNS zones and nameserver delegation.
- ✅ Familiarity with PostgreSQL (if using the database backend).
For production, you need at least two nameservers for redundancy. This guide starts with a single-server setup for learning, then covers replication.
Docker images
PowerDNS publishes official images at hub.docker.com/u/powerdns:This guide uses
powerdns/pdns-auth-49 — the latest stable authoritative server.Architecture overview
Install with Docker and PostgreSQL
PostgreSQL is a solid production backend for PowerDNS — robust, standards-compliant, and feature-rich.Step 1 — Create docker-compose.yml
Step 2 — Create the PostgreSQL schema
Createschema-postgres.sql with the official PowerDNS 4.7+ schema:
Step 3 — Create the PowerDNS config
Createpdns-postgres.conf:
Step 4 — Start the services
Step 5 — Verify the connection
Step 6 — Allow DNS traffic
Manage zones via the API
PowerDNS exposes a RESTful HTTP API for zone and record management.Create a zone
Add an A record
Add a CNAME record
List all zones
View zone details
Delete a record
Register with Stackryze Domains
Once your PowerDNS server is running:- Open domain.stackryze.com.
- Go to My Domains.
- Click your domain.
- In DNS Configuration, click Edit.
- Enter your PowerDNS nameserver hostnames:
- Primary:
n1.yourdomain.com(must have anArecord pointing to your server IP). - Secondary:
n2.yourdomain.com(for redundancy, pointing to the secondary server).
- Primary:
- Click Save.
Test DNS resolution
Test against your server directly
Test through public DNS
Online tools
- DNS Checker — global propagation.
- What’s My DNS — worldwide propagation.
- IntoDNS — DNS health check.
High availability with master-slave replication
For production DNS, run at least two nameservers for redundancy. PowerDNS supports master-slave replication using AXFR (Authoritative Zone Transfer).How AXFR works
- The master (n1) holds the authoritative data.
- The slave (n2) periodically pulls zone updates from the master.
- Zone data is transferred via AXFR over TCP port 53.
- The slave stays in sync automatically.
- Redundancy if the master fails.
- Load distribution across both servers.
- Geographic distribution for performance.
- Automatic synchronization.
ns1.stackryze.com— master (primary).ns2.stackryze.com— slave (secondary).
Master configuration (n1.yourdomain.com)
Create pdns-master.conf:
Slave configuration (n2.yourdomain.com)
Create pdns-slave.conf:
Set up replication
Step 1 — Add the master as a supermaster on the slave:MASTER_SERVER_IP with the master’s IP.
Step 2 — Create the zone on the master as Master:
How updates propagate
- Admin makes a change on the master (n1) via API.
- Master increments the zone’s SOA serial.
- Master sends NOTIFY to the slave (n2).
- Slave requests AXFR from the master.
- Master transfers the full zone.
- Slave updates its local database.
- Both servers serve identical DNS data.
Firewall for AXFR
On the master:Troubleshooting replication
Slave not receiving zones:- Confirm
allow-axfr-ipson the master includes the slave IP. - Confirm the firewall allows TCP 53 from slave to master.
- Confirm the slave IP is correct in the master config.
Security best practices
Restrict API access
Use strong API keys
Enable DNSSEC (optional)
Keep software updated
Monitor logs
Disable query logging in production
Common issues
Port 53 already in use
Another service (oftensystemd-resolved) is using port 53.
Database connection failed
- Verify the database container is running:
docker-compose ps. - Confirm credentials match in
docker-compose.ymlandpdns.conf. - Wait 30–60 seconds after starting the database before starting PowerDNS.
- Check database logs:
docker-compose logs postgres.
DNS queries not responding
API returns 401 Unauthorized
- Confirm the
X-API-Keyheader matches the key inpdns.conf. - Confirm
api=yesis set. - Restart PowerDNS after config changes:
docker-compose restart powerdns. - Test the API directly:
curl http://localhost:8081/api.
Zone not found
yourname.indevs.in.).
Monitoring and maintenance
Server statistics
Backup
SQLite:Restore
SQLite:Performance tuning
Resources
Simpler alternatives
If PowerDNS feels heavy, try one of these instead:- Cloudflare — recommended for beginners.
- Hurricane Electric — free, simple interface.
- deSEC — privacy-focused, with an API.
- ClouDNS — free tier with good features.
How Stackryze uses PowerDNS
Stackryze runs PowerDNS to power our authoritative nameservers:ns1.stackryze.com(primary) — PostgreSQL backend, receives updates from the API.ns2.stackryze.com(secondary) — PostgreSQL replication from n1.
indevs.in subdomain through the PowerDNS HTTP API — zone creation and record management are fully automated when users register domains.