DurinDoor
Deployment

Laptop

Start a local gateway, verify a provider, and connect desktop clients.

Run DurinDoor on your computer to connect desktop clients to one local gateway. Install Node.js 20.20.2 and npm 10.8.2 before using the CLI or source package.

Prepare a local install

Choose a persistent data directory. Native installs default to ~/.9router on macOS and Linux, or %APPDATA%\9router on Windows. A Unix-style DATA_DIR on Windows is ignored.

For a fresh install, set a unique JWT_SECRET and a password you can retrieve. Save both in your private launcher or service environment so restarts reuse them. On macOS or Linux:

export DATA_DIR="$HOME/.durindoor"
export JWT_SECRET="$(openssl rand -hex 32)"
read -r -s INITIAL_PASSWORD
export INITIAL_PASSWORD

The read command waits for your chosen password. Enter at least six characters. Published example values and 123456 are rejected as new passwords. On Windows, set the same variables through your protected PowerShell environment or launcher.

Start the gateway

npx durindoor --host 127.0.0.1

npm downloads the package for this invocation.

The CLI binds every interface by default. Keep --host 127.0.0.1 for a local install. Source production binds loopback when HOSTNAME is unset.

Verify the install

curl -fsS http://localhost:20128/api/health

Expect {"ok":true}. This checks the HTTP listener only.

Open http://localhost:20128/dashboard, sign in with the password you set, and add a provider connection. Create a DurinDoor API key for each client. Use http://localhost:20128/v1 as the client's API base. Complete the authenticated startup smoke test to check provider access.

Change the port or use the tray

durindoor --host 127.0.0.1 --port 8080
durindoor --host 127.0.0.1 --tray
durindoor --help

After a port change, update each client's base URL. --log displays server logs. --skip-update skips the update check. --no-browser is accepted, but startup does not open a browser automatically.

Foreground CLI offers Web UI, Terminal UI, Hide to Tray, and Exit. Tray mode offers Open Dashboard, Enable Auto-start, and Quit. Linux tray mode needs DISPLAY; the server can still run without a tray. Quit from the tray or press Ctrl+C in the foreground to stop the worker.

Auto-start uses your OS login session. Verify that its environment retains the data path and secrets before depending on it. Use VPS and cloud for a host service.

Connect from another device

Use a VPN, SSH tunnel, or a reverse proxy. Before binding to the LAN, follow Security and enable Require API Key.

Dashboard → Endpoint can start a Cloudflare Tunnel. First startup downloads cloudflared, and the host needs outbound TCP and UDP port 7844. Wait for a public HTTPS URL, then append /v1 in your client. The dashboard stays blocked through the tunnel unless Allow dashboard access via tunnel is enabled; dashboard login still applies. Stop the tunnel to revoke that URL.

If startup fails, check the port, the saved JWT_SECRET, and the service's data-directory permissions. Stop the process before a backup or restore.

On this page

Edit on GitHub