New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

apertodns

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

apertodns

ApertoDNS CLI - Dynamic DNS management from your terminal. Manage domains, tokens, API keys and DNS updates with style.

latest
Source
npmnpm
Version
2.1.0
Version published
Maintainers
1
Created
Source

ApertoDNS CLI

npm version npm downloads license node

Dynamic DNS management from your terminal. Manage domains, tokens, API keys, and DNS updates with style.

ApertoDNS is a free Dynamic DNS service that lets you point a subdomain to your dynamic IP address. Perfect for home servers, IoT devices, game servers, NAS systems, and remote access.

Why ApertoDNS?

FeatureApertoDNSDyn (Oracle)No-IPDuckDNS
Free planYesNo ($55/yr)YesYes
Free subdomainsUnlimited015
API Keys with scopesYesNoNoNo
CLI toolYesNoNoNo
Docker imagesYesNoNoNo
IPv6 supportYesPaidPaidYes
No forced renewalYesN/A30 daysYes
DynDNS2 compatibleYesYesYesNo
WebhooksYesNoNoNo
Team sharingYesNoNoNo
Open SourceYesNoNoNo

Features

  • Easy Setup - Login or register directly from CLI
  • Multiple Domains - Manage unlimited subdomains
  • API Keys - Create and manage API keys with granular scopes
  • Auto Updates - Set up cron or daemon mode for automatic IP updates
  • Interactive Mode - Beautiful terminal UI with menus
  • JSON Output - Machine-readable output for scripting
  • IPv4 & IPv6 - Full dual-stack support
  • Real-time Stats - View usage statistics and logs
  • Router/NAS Compatible - Works with Synology, QNAP, and DynDNS2-compatible routers
  • Docker Images - Official apertodns/cli and apertodns/updater images

Requirements

Installation

# npm
npm install -g apertodns

# yarn
yarn global add apertodns

# pnpm
pnpm add -g apertodns

Or use without installing:

npx apertodns --help

Quick Start

# 1. Setup (login or register)
apertodns --setup

# 2. View your dashboard
apertodns --dashboard

# 3. List your domains
apertodns --domains

# 4. Force DNS update
apertodns --force

Commands

Main Commands

CommandDescription
--dashboardComplete dashboard with all info
--domainsList all your domains
--tokensList all your tokens
--statsStatistics and metrics
--logsRecent activity logs
--my-ipShow your current public IP

Domain Management

CommandDescription
--add-domain <name>Create a new subdomain
--delete-domainDelete a domain (interactive)
--test <domain>Test DNS resolution
update <domain>Update a specific domain's IP (use with --api-key)

TXT Records (ACME DNS-01)

CommandDescription
--txt-set <host> <name> <value>Set a TXT record
--txt-delete <host> <name>Delete a TXT record

Perfect for Let's Encrypt DNS-01 challenges:

# Set TXT record for certificate validation
apertodns --txt-set example.apertodns.com _acme-challenge "validation-token"

# Delete TXT record after certificate issuance
apertodns --txt-delete example.apertodns.com _acme-challenge

# Use with API key for automation
apertodns --api-key apertodns_live_xxx... --txt-set example.apertodns.com _acme-challenge "token" --json

Token Management

CommandDescription
--enable <id>Enable a token
--disable <id>Disable a token
--toggle <id>Toggle token state
--verifyVerify token validity

API Keys

CommandDescription
--api-keysList all API keys
--create-api-key <name>Create new API key
--delete-api-key <id>Delete an API key
--scopesShow available scopes
--api-key <key>Use API key for authentication

Configuration

CommandDescription
--setupGuided setup (login/register)
--statusShow current status and IP
--configEdit configuration
--logoutRemove local configuration
--forceForce DNS update now

Standalone Update (DynDNS2)

CommandDescription
--updateStandalone DynDNS2 update (no config required)
--domain <fqdn>Domain to update (with --update)
--token <token>Token for authentication (with --update)
--ip <address>Custom IP address (optional, auto-detected if omitted)

Daemon Mode

CommandDescription
--daemonStart daemon mode (continuous updates)
--interval <sec>Update interval (default: 300s)

Options

OptionDescription
--cronSilent mode for cron jobs
--quietHide banner
--jsonJSON output (machine-readable)
-v, --versionShow version
-h, --helpShow help

Interactive Mode

Run apertodns without arguments for an interactive menu with all options.

apertodns

Authentication Methods

You can authenticate in 3 ways:

  • Interactive Login - Run apertodns --setup (saves JWT to ~/.config/apertodns/)
  • API Key - Use --api-key <key> for single operations
  • Environment Variable - Set APERTODNS_API_KEY

JSON Output

All commands support --json flag for machine-readable output:

# Get domains as JSON
apertodns --domains --json

# Get your IP as JSON
apertodns --my-ip --json

# Combine with API key for scripting
apertodns --api-key apertodns_live_xxx... --domains --json

Daemon Mode

Run continuously to keep your DNS updated:

# Default interval (5 minutes)
apertodns --daemon

# Custom interval (60 seconds)
apertodns --daemon --interval 60

Standalone Update

Update DNS without any saved configuration - perfect for scripts and one-off updates:

# Auto-detect IP and update
apertodns --update --domain myserver.apertodns.com --token YOUR_TOKEN

# Specify custom IP
apertodns --update --domain myserver.apertodns.com --token YOUR_TOKEN --ip 203.0.113.42

Docker

Run without installing Node.js:

# Run CLI via Docker
docker run --rm apertodns/cli --help

# Interactive setup (persisted config)
docker run -it -v apertodns_config:/root/.config/apertodns apertodns/cli --setup

# List domains
docker run -v apertodns_config:/root/.config/apertodns apertodns/cli --domains

# Standalone update (no config needed)
docker run --rm apertodns/cli --update --domain myhost.apertodns.com --token YOUR_TOKEN

For continuous updates, use the dedicated updater image:

docker run -d \
  --name apertodns-updater \
  --restart unless-stopped \
  -e TOKEN=your_token \
  -e DOMAINS=myhost.apertodns.com \
  apertodns/updater

See Docker Hub for more options.

Automatic Updates (Cron)

Set up automatic IP updates with cron:

# Update every 5 minutes
*/5 * * * * /usr/local/bin/apertodns --cron >> /var/log/apertodns.log 2>&1

# Or every minute for faster updates
* * * * * /usr/local/bin/apertodns --cron

Find your apertodns path with: which apertodns

Router Integration (DynDNS2)

ApertoDNS is compatible with routers that support DynDNS2 protocol:

Server: api.apertodns.com
Protocol: DynDNS2
Path: /nic/update
Username: your-token
Password: your-token
Hostname: yourdomain.apertodns.com

Compatible Devices

  • Routers: ASUS, TP-Link, Netgear, Ubiquiti, pfSense, OPNsense, DD-WRT, OpenWRT
  • NAS: Synology DSM, QNAP QTS, TrueNAS
  • Other: Any device supporting DynDNS2/DynDNS protocol

Configuration Storage

Configuration is stored in platform-specific locations:

  • Linux: ~/.config/apertodns/ or ~/.apertodns/
  • macOS: ~/.config/apertodns/
  • Windows: %APPDATA%\apertodns\

Troubleshooting

Common Issues

"Unable to detect IP address"

  • Check your internet connection
  • Try a different IP detection service: the CLI automatically tries multiple fallbacks
  • If behind a corporate proxy, the detected IP may be the proxy's IP

"Authentication failed"

  • Run apertodns --logout then apertodns --setup to re-authenticate
  • If using API key, verify it has the required scopes
  • Check if the token/API key is still active in your dashboard

"DNS not updating"

  • Use apertodns --force to force an immediate update
  • Check apertodns --status to see current IP vs DNS IP
  • DNS propagation can take up to 5 minutes

IPv6 not working

  • IPv6 requires your ISP and network to support it
  • Use apertodns --my-ip --json to check if IPv6 is detected
  • Some networks only provide IPv4

Permission denied on Linux

  • If installed globally, you may need sudo: sudo npm install -g apertodns
  • Or use a Node version manager (nvm) to avoid permission issues

Daemon mode exits unexpectedly

  • Check logs in /var/log/apertodns.log if using cron
  • Ensure stable internet connection
  • Consider using a process manager like PM2 or systemd

Getting Help

# Show all commands
apertodns --help

# Check current status
apertodns --status

# Verify authentication
apertodns --verify

Security

  • Credentials are stored locally, never transmitted except to ApertoDNS servers
  • API keys support granular scopes for least-privilege access
  • All API communication uses HTTPS
  • No cross-account data access - strict user isolation

Examples

# Quick status check
apertodns --status

# Test DNS propagation
apertodns --test myserver.apertodns.com

# Create domain and get token
apertodns --add-domain newserver.apertodns.com

# List domains as JSON
apertodns --domains --json

# Use API key for automation
APERTODNS_API_KEY=apertodns_live_xxx... apertodns --domains --json

Support

Need help?

License

MIT - Aperto Network

Keywords

ddns

FAQs

Package last updated on 22 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts