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.
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 14+
- macOS or Linux (Windows supported via Docker)
sudoto 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 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:
sudo npm run dev:proxyMax mode:
npm run dev:proxySee Getting Started for the full setup including package.json scripts and credentials.