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.
cloudflaredinstalls 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) oravahi(Linux) - Uses
mkcertto generate a locally-trusted certificate - Other devices need the mkcert CA installed once
Requirements
- Node.js 18+
- macOS or Linux (Windows supported via Docker)
sudofor Pro and Quick modes (to bind ports 80/443) — or pass--port 8443to avoid it. Max mode needs no sudo.
Install
npm install --save-dev dynamoip
# or
pnpm add -D dynamoip
# or
yarn add -D dynamoipMinimal 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 (binds ports 80/443)
sudo npm run dev:proxy
# Max mode — no sudo needed
npm run dev:proxySee Quick Setup for step-by-step instructions.