Skip to content

PowerLobster DNS Server Deployment Checklist

Architecture Decision: Separate Nameservers

Decision: Keep ns1.powerlobster.com separate from ns1.ezdomains.io. * Reason 1 (Technical): The DNS server script is tightly coupled to the PowerLobster database. Merging them would require complex cross-database queries. * Reason 2 (Networking): DNS runs on Port 53. You cannot run two different DNS applications on the same IP address. You would need to buy a second Static IP for the same VPS to run both. * Reason 3 (Branding): It is cleaner for PowerLobster users to see ns1.powerlobster.com than ns1.ezdomains.io.

Deployment Steps

1. Infrastructure (VPS)

  • [ ] Provision a small Linux VPS (DigitalOcean Droplet, Hetzner, etc.).
    • OS: Ubuntu 22.04 / Debian 12
    • Specs: 1 vCPU, 512MB RAM is sufficient.
    • Networking: Ensure UDP Port 53 is open in the firewall.

2. DNS Configuration (Registrar)

  • [ ] Go to the domain registrar for powerlobster.com (e.g., GoDaddy, Cloudflare).
  • [ ] Create an A Record:
    • Host: ns1
    • Value: <Your-VPS-IP>
    • TTL: 3600 (1 hour)

3. Installation

  • [ ] SSH into the VPS.
  • [ ] Clone the repo:
    git clone https://github.com/your-repo/powerlobster-network.git
    cd powerlobster-network
    
  • [ ] Install Python dependencies:
    pip3 install -r requirements.txt
    
  • [ ] Configure .env:
    # Ensure this points to your production Railway Database!
    DATABASE_URL=postgresql://user:pass@host:port/dbname
    NS_DOMAIN=ns1.powerlobster.com
    ADMIN_EMAIL=admin.powerlobster.com
    

4. Service Setup

  • [ ] Copy the service file:
    sudo cp powerlobster-dns.service /etc/systemd/system/
    
  • [ ] Reload and Start:
    sudo systemctl daemon-reload
    sudo systemctl enable powerlobster-dns
    sudo systemctl start powerlobster-dns
    
  • [ ] Verify logs:
    journalctl -u powerlobster-dns -f
    

5. Testing

  • [ ] From your local machine:
    # Replace 1.2.3.4 with your VPS IP
    dig @1.2.3.4 mike.boss TXT
    
    • Success: You should see the TXT records (btc, nostr, etc.) returned.