dynamoip

Documentation

Give any service a real domain name and trusted HTTPS — reachable from your LAN or the entire internet.

dynamoip is a Node.js reverse proxy and DNS automation tool. It assigns stable domain names and trusted HTTPS certificates to local services so they're reachable from any device on your network — or the entire internet — with one command.

Three modes

Max mode

Uses Cloudflare Tunnel to expose services to the public internet. No port forwarding, no firewall rules, no inbound ports. No sudo required.

  • cloudflared installs itself on first run
  • Cloudflare manages TLS — no certificate to configure
  • DNS uses CNAME records pointing to the tunnel
  • [PUBLIC] label in CLI output

Requires: A Cloudflare-managed domain and an API token with Zone:DNS:Edit + Account:Cloudflare Tunnel:Edit.

Pro mode

Uses your own domain with Cloudflare DNS and Let's Encrypt certificates. Services are LAN-only.

  • dynamoip sets Cloudflare DNS A records pointing to your LAN IP
  • Obtains a wildcard certificate via DNS-01 challenge
  • Every device on the network trusts it out of the box — no setup on other devices
  • [LAN] label in CLI output

Requires: A Cloudflare-managed domain and an API token with Zone:DNS:Edit.

Quick mode

Uses mDNS .local hostnames — no domain or Cloudflare account required. LAN only.

  • Works via dns-sd (macOS) or avahi (Linux)
  • Uses mkcert to generate a locally-trusted certificate
  • Other devices need the mkcert CA installed once

Requirements

  • Node.js 14+
  • macOS or Linux (Windows supported via Docker)
  • sudo to bind to ports 80 and 443 (Pro / Quick modes only — Max mode doesn't need it)

Install

npm install --save-dev dynamoip
# or
pnpm add -D dynamoip
# or
yarn add -D dynamoip

Minimal config

Pro mode:

{
  "baseDomain": "yourdomain.com",
  "domains": {
    "myapp": 3000
  }
}

Max mode (add one key):

{
  "baseDomain": "yourdomain.com",
  "tunnel": true,
  "domains": {
    "myapp": 3000
  }
}

Quick mode (omit baseDomain):

{
  "domains": {
    "myapp": 3000
  }
}

Run

Pro / Quick mode:

sudo npm run dev:proxy

Max mode:

npm run dev:proxy

See Getting Started for the full setup including package.json scripts and credentials.

On this page