dynamoip

Setup by Platform

Step-by-step setup for Windows, macOS, and Linux — plus copy-paste AI prompts to get help instantly.

Pick your platform. Each section has two paths: a prompt you can paste directly into any AI assistant (ChatGPT, Claude, Copilot), and manual steps if you prefer to do it yourself.


Windows

Windows can't run dynamoip natively. Use Docker — it works the same way on every machine.

Copy this prompt into your AI assistant

Fill in your port(s), domain, and service names, then paste into ChatGPT, Claude, or Copilot.

I want to set up dynamoip on Windows using Docker (Max mode — Cloudflare Tunnel, public internet).

Here's how dynamoip works in Docker:
- dynamoip runs in its own container built from a custom Dockerfile (node:22-alpine + socat + cloudflared pre-installed)
- Each app service has its own container with no exposed ports
- dynamoip uses FORWARD_<service>=<port> env vars to bridge localhost:PORT → the Docker service via socat
- The config is mounted at /config/dynamoip.config.json
- Tunnel credentials are cached in a dynamoip-tunnels volume
- No LAN_IP needed for Max mode — it uses CNAME records, not A records

My setup:
- Services: [e.g. "app on port 3000" or "api on 4000, frontend on 3000"]
- Domain (Cloudflare-managed): [e.g. myapp.com]
- I have a CF_API_TOKEN with Zone:DNS:Edit + Account:Cloudflare Tunnel:Edit

Please create:
1. dynamoip/Dockerfile — node:22-alpine, installs socat + cloudflared binary (linux-amd64), copies entrypoint.sh
2. dynamoip/entrypoint.sh — loops over FORWARD_* env vars, starts socat forwarders, then runs: node node_modules/.bin/dynamoip --config /config/dynamoip.config.json
3. dynamoip.config.json — baseDomain, tunnel: true, domains map
4. docker-compose.yml — one service per app (healthchecks), plus dynamoip service with FORWARD_ vars, volume mount for config + tunnels volume, env_file: .env
5. .env — just CF_API_TOKEN

Then show me how to start it: docker compose up --build

Manual setup

What you need: Docker Desktop for Windows, a Cloudflare-managed domain, a Cloudflare API token with Zone:DNS:Edit + Account:Cloudflare Tunnel:Edit.

The quickest path is cloning the official example and swapping in your domain:

git clone https://github.com/foundanand/dynamoip-examples
cd dynamoip-examples/tunnel

Copy .env.example to .env and add your token:

CF_API_TOKEN=your_cloudflare_api_token_here

Edit dynamoip.config.json with your domain:

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

Then start:

docker compose up --build

First run takes 20–30 seconds (installs cloudflared, creates the tunnel). After that it's instant.

Adapting it to your own project — the key files are:

  • dynamoip/Dockerfile — builds the dynamoip container (Alpine + socat + cloudflared)
  • dynamoip/entrypoint.sh — starts socat port forwarders then runs dynamoip
  • FORWARD_<service>=<port> env vars in docker-compose.yml — one per app service
  • Config mounted at /config/dynamoip.config.json
  • dynamoip-tunnels volume — caches tunnel credentials between restarts

Copy these files from the example into your project and adjust the service names and ports.


macOS

macOS can run dynamoip natively — no Docker needed.

Copy this prompt into your AI assistant

I want to set up dynamoip on macOS to give my local dev server a real HTTPS domain on my LAN.

dynamoip is an npm reverse proxy + DNS tool. I want to use Pro mode: it sets a Cloudflare DNS A record pointing to my LAN IP and gets a wildcard Let's Encrypt cert. All devices on my network trust it automatically.

My setup:
- App port: [e.g. 3000]
- Domain (Cloudflare-managed): [e.g. myapp.com]
- Package manager: [npm / pnpm / yarn]
- Cloudflare API token with Zone:DNS:Edit

Please:
1. Show me dynamoip.config.json
2. Add a dev:proxy script to package.json
3. Show the .env file I need
4. Show me how to run it

Notes:
- Always invoke via package manager: sudo npm run dev:proxy (sudo required for ports 80/443)
- First run takes ~60s for the Let's Encrypt cert — subsequent runs are instant

Manual setup

1. Install:

npm install --save-dev dynamoip

2. Create dynamoip.config.json:

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

3. Add to package.json:

{
  "scripts": {
    "dev:proxy": "dynamoip --config dynamoip.config.json"
  }
}

4. Create .env:

CF_API_TOKEN=your_cloudflare_api_token_here
CF_EMAIL=you@example.com

5. Run (two terminals):

# Terminal 1 — your app
npm run dev

# Terminal 2 — dynamoip
sudo npm run dev:proxy

Your service will be live at https://app.yourdomain.com, trusted on every device on your LAN.

No domain? Omit baseDomain from the config to use Quick mode — you'll get .local hostnames instead.


Linux

Same as macOS natively. If you're in Docker, network_mode: host makes it simpler than macOS/Windows.

Copy this prompt into your AI assistant

I want to set up dynamoip on Linux to give my local dev server a real HTTPS domain on my LAN.

dynamoip is an npm reverse proxy + DNS tool. Pro mode: Cloudflare DNS A record → my LAN IP, wildcard Let's Encrypt cert.

My setup:
- App port: [e.g. 3000]
- Domain (Cloudflare-managed): [e.g. myapp.com]
- Package manager: [npm / pnpm / yarn]
- Cloudflare API token with Zone:DNS:Edit

Please:
1. Show me dynamoip.config.json
2. Add a dev:proxy script to package.json
3. Show the .env file
4. Show me how to run it

Notes:
- sudo npm run dev:proxy (ports 80/443 need root)
- If I'm running in Docker, use network_mode: host — LAN_IP is auto-detected, no extra config needed

Manual setup

1. Install:

npm install --save-dev dynamoip

2. Create dynamoip.config.json:

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

3. Add to package.json:

{
  "scripts": {
    "dev:proxy": "dynamoip --config dynamoip.config.json"
  }
}

4. Create .env:

CF_API_TOKEN=your_cloudflare_api_token_here
CF_EMAIL=you@example.com

5. Run:

# Terminal 1
npm run dev

# Terminal 2
sudo npm run dev:proxy

In Docker on Linux? Use network_mode: host — dynamoip auto-detects your LAN IP inside the container and you don't need to set LAN_IP:

services:
  dynamoip:
    build: ./dynamoip
    network_mode: host
    env_file: .env
    environment:
      FORWARD_app: 3000
    volumes:
      - dynamoip-certs:/root/.localmap/certs
      - ./dynamoip.config.json:/config/dynamoip.config.json:ro

volumes:
  dynamoip-certs:

On this page