IPTunnel Documentation
Back Home
Install

Install SlowDNS

SlowDNS installs from the public GitHub repository but activates through this private license backend using a single-use install code. The installer prechecks the code first, then binds the final hostname and public IP only after you confirm them.

How it works

The installer is hosted publicly on GitHub but is gated by a one-time IPT-SD-XXXXXX-XXXXXX-XXXXXX install code issued from this panel. The flow is:

  1. You generate a code from /slowdns. The code is valid for 5 minutes and single-use.
  2. The installer performs a precheck using the code plus machine identity (/etc/machine-id and the SSH host fingerprint). The code stays in issued state and the server returns a signed 15-minute precheck token.
  3. You enter the public hostname, delegated tunnel domain, and public IP only after the code is accepted.
  4. The installer then activates the install. This is the step that binds the chosen hostname and public IP, marks the code as consumed, and returns a signed 10-minute install token.
  5. Once all services are live and verified, the installer confirms the activation and permanently consumes the install token.
  6. If anything fails before confirmation, the installer calls release so the code can be restored and retried.

Install command

bash <(curl -4fsSL https://raw.githubusercontent.com/stellawills/slowdns/main/install.sh)

The installer requires root. Run it on an Ubuntu 20.04 / 22.04 / 24.04 VPS. It installs python3, curl, unzip, openssh-server, and builds the dnstt server and client from source if prebuilt binaries are not provided.

Step-by-step

  1. Open /slowdns in this panel and click Generate Code. Copy the IPT-SD-... value. The code expires in 5 minutes, so do this only when you are ready to install.
  2. SSH into your VPS as root.
  3. Run the install command above.
  4. If the session is interactive over SSH and screen is available, the installer re-launches itself inside screen -S slowdns-install so it can survive a dropped connection.
  5. When prompted, paste the install code. The installer validates it immediately and will let you retry before asking for anything else if the code is invalid, used, expired, or blocked.
  6. Enter the public hostname — the A record host that points to this VPS (for example dns.example.com).
  7. Enter the delegated tunnel domain — the subdomain whose NS record points to the public hostname (for example slowdns.example.com). The installer suggests a default based on the hostname.
  8. Confirm or enter the VPS public IPv4. The installer auto-detects it; press Enter to accept.
  9. The installer builds dnstt, generates SSH host keys, writes systemd units, and starts services.
  10. On success you will see Activation confirmed and the install code in the summary line.

Expected terminal output

A healthy install looks like this end to end:

============================================================
 SlowDNS Install Code
============================================================
 Generate code at: https://license.internetshub.com/slowdns
 This code is single-use and expires quickly.

 Enter install code: IPT-SD-XXXXXX-XXXXXX-XXXXXX
Validating install code...
 Install code accepted. Continue with the SlowDNS host prompts.

SlowDNS public hostname (A record host) [ns1.example.com]:
SlowDNS delegated tunnel domain [slowdns.example.com]:
Public IPv4 for this VPS [1.2.3.4]:

Preparing SlowDNS files...
Starting SlowDNS services...
Confirming activation...
 Activation confirmed.

============================================================
 SlowDNS installed successfully
============================================================
  Installed at:  /opt/slowdns
  API status:    systemctl status slowdns-api
  dnstt status:  systemctl status slowdns-dnstt
  Menu:          slowdns-menu
  Install code:  IPT-SD-XXXXXX-XXXXXX-XXXXXX activated via https://license.internetshub.com

Resuming after network issues

If the installer re-launches itself in screen, you can safely reconnect and reattach with:

screen -r slowdns-install

If the VPS build is especially slow, precheck buys you time: the code itself expires in 5 minutes, but once precheck succeeds the installer has a separate 15-minute token to reach the final activation step.

Unattended / scripted install

Pass configuration as environment variables to skip all interactive prompts:

SLOWDNS_INSTALL_CODE="IPT-SD-XXXXXX-XXXXXX-XXXXXX" \
SLOWDNS_HOSTNAME="ns1.example.com" \
SLOWDNS_TUNNEL_DOMAIN="slowdns.example.com" \
SLOWDNS_PUBLIC_IP="1.2.3.4" \
bash <(curl -4fsSL https://raw.githubusercontent.com/stellawills/slowdns/main/install.sh)

See Environment Variables for the full list.

After install

Once the installer finishes:

  • Run slowdns-menu to manage SSH accounts, view runtime info, and check service status.
  • Verify DNS propagation with dig +short A ns1.example.com and dig +short NS slowdns.example.com.
  • The API is available locally at http://127.0.0.1:8091/api/v2/healthz.
  • Activation metadata is stored at /opt/slowdns/config/license.json.

Common failure cases

Error message Cause and fix
Install code already used The code was consumed by an earlier run. Generate a new code from /slowdns.
Install code expired More than 5 minutes passed between generating and using the code. Generate a fresh one and run the installer immediately.
Install code exceeded max activation attempts The same code was activated and released too many times. Generate a new code.
Too many requests Rate limit hit. Wait before trying again. See Rate Limits.
Install token has expired The install took more than 10 minutes (usually when building dnstt from source on a very slow VPS). Retry; consider providing prebuilt binaries via DNSTT_SERVER_URL / DNSTT_CLIENT_URL.
Could not reach the license server The VPS cannot reach the license server over HTTPS. Check outbound connectivity: curl -4v https://license.internetshub.com/api/v2/healthz