-
-
Notifications
You must be signed in to change notification settings - Fork 2
plugin ddns
Dynamic DNS service that monitors your server's public IP and updates DNS records when it changes. Pro plugin (port 3217, unbundled).
Requires: Pro license tier or higher.
nself license set nself_pro_...
nself license set nself_pro_xxxxx...
nself plugin install ddnsThe ddns plugin runs as a background HTTP service on port 3217. It detects your server's current public IP address (via api.ipify.org with a fallback to api.my-ip.io) and, for each DNS record you configure, updates the record at your DNS provider when the detected IP differs from the last known value. Each detection and update attempt is persisted to Postgres so you can audit IP history and debug failed updates.
Records are configured at runtime through the plugin's REST API and stored per record in the database, not through environment variables. This lets you manage multiple domains and providers from a single running instance.
| Provider | Status | Notes |
|---|---|---|
| Cloudflare | Implemented | Updates an A record via the Cloudflare API using a per-record zone ID, record ID, and API token. |
| DuckDNS, No-IP, Dynu | Configurable | Stored as provider config rows; useful for IP tracking and update logging. |
| Route53 | Planned | Listed in plugin metadata; not yet wired into the update path. |
Cloudflare is the actively wired update target. Provider, domain, token, and zone details are supplied per record through the API, never hardcoded.
The plugin reads only the following environment variables. Per-record DNS credentials are supplied through the API, not the environment.
| Env Var | Default | Description |
|---|---|---|
DDNS_PLUGIN_PORT |
3217 |
Port the DDNS service listens on. |
DDNS_HOST |
0.0.0.0 |
Bind address for the service. |
DATABASE_URL |
auto-provided by nself | PostgreSQL connection string. |
DDNS_API_KEY |
(none) | Optional. When set, requests to /api/v1/* must send a matching X-API-Key header. |
DATABASE_URL is supplied automatically by the nSelf backend. Set DDNS_API_KEY to require an API key for all data endpoints.
| Method | Path | Purpose |
|---|---|---|
| GET | /health |
Liveness probe. |
| GET | /ready |
Readiness probe (checks the database). |
| GET | /api/v1/ip |
Return the currently detected public IP. |
| GET / POST | /api/v1/configs |
List or create DNS record configurations. |
| GET / PUT / DELETE | /api/v1/configs/{id} |
Read, update, or delete a configuration. |
| POST | /api/v1/configs/{id}/update |
Force an update for one record. |
| POST | /api/v1/update |
Run an update pass across all enabled records. |
| GET | /api/v1/update-log |
List recent IP change and update events. |
| GET | /api/v1/stats |
Summary statistics for configured records. |
Each configuration carries its own check_interval (seconds, default 300). The service does not expose any public route; it is a background worker plus an internal management API. To trigger update passes on a schedule from outside the container, call POST /api/v1/update from a systemd timer or cron job, for example:
# /etc/cron.d/ddns: run an update pass every 5 minutes
*/5 * * * * root curl -fsS -X POST -H "X-API-Key: $DDNS_API_KEY" http://localhost:3217/api/v1/update >/dev/null 2>&1A systemd timer can wrap the same curl call in a .service unit triggered by an OnUnitActiveSec=5min timer.
Two tables are added to your Postgres database. Both carry source_account_id for multi-app isolation.
-
np_ddns_config, configured DNS records and their last known IP values. -
np_ddns_update_log, history of IP change detections and DNS update results.
| Port | Purpose |
|---|---|
3217 |
DDNS management HTTP service (background service; no public nginx routes). |
None. This is a background service only and does not expose any public HTTP routes.
Related: Plugin-Overview · plugin-cloudflare · Home
ɳSelf CLI v1.0.9. MIT licensed. Docs CC BY 4.0.
GitHub · Issues · Discussions · nself.org · docs.nself.org
Getting Started
Commands
- Commands, Overview
- Lifecycle: cmd-init · cmd-build · cmd-start · cmd-stop · cmd-restart · cmd-dev
- Monitoring: cmd-status · cmd-logs · cmd-health · cmd-urls · cmd-doctor · cmd-monitor · cmd-alerts · cmd-sentry · cmd-watchdog · cmd-dogfood
- Data: cmd-db · cmd-backup · cmd-dr · cmd-queue · cmd-webhooks
- Config: cmd-config · cmd-service · cmd-env · cmd-promote
- Networking: cmd-ssl · cmd-trust · cmd-dns-setup
- Security: cmd-security · cmd-secrets · cmd-waf
- Tenancy: cmd-tenant · cmd-billing
- Plugins: cmd-plugin · cmd-license
- AI: cmd-ai · cmd-claw · cmd-model
- Templates: cmd-template
- Utilities: cmd-exec · cmd-clean · cmd-reset · cmd-update · cmd-upgrade · cmd-version · cmd-admin · cmd-migrate · cmd-migrate-firebase · cmd-migrate-supabase · cmd-completion
Features
- Features, Overview
- Feature-Auth
- Feature-Storage
- Feature-Search
- Feature-Functions
- Feature-Email
- Feature-Monitoring
- Feature-Plugins
- Feature-ɳClaw, AI Assistant
- Feature-ɳChat, Messaging
- Feature-ɳTV, Media Player
- Feature-ɳFamily, Family Social
- Feature-ɳCloud, Managed Hosting
- Feature-Memory-Rooms, Knowledge Organization
- Feature-Agent-Dashboard, Agent Metrics
- Feature-Image-Generation, AI Image Generation
Configuration
- Configuration, Overview
- Config-Env-Vars
- Config-Postgres
- Config-Hasura
- Config-Auth
- Config-Nginx
- Config-Optional-Services
- Config-Custom-Services
- Config-System
Plugins (87 + 10 monitoring)
Free (25)
- plugin-backup
- plugin-content-acquisition
- plugin-content-progress
- plugin-cron
- plugin-donorbox
- plugin-feature-flags
- plugin-github
- plugin-github-runner
- plugin-invitations
- plugin-jobs
- plugin-link-preview
- plugin-mdns
- plugin-mlflow
- plugin-monitoring
- plugin-notifications
- plugin-notify
- plugin-paypal
- plugin-search
- plugin-shopify
- plugin-stripe
- plugin-subtitle-manager
- plugin-tokens
- plugin-torrent-manager
- plugin-vpn
- plugin-webhooks
Pro (62)
- plugin-access-controls
- plugin-activity-feed
- plugin-admin-api
- nself-ai-gateway
- nself-ai-cc
- nself-ai-mcp
- plugin-analytics
- plugin-auth
- plugin-backup-pro
- plugin-bots
- plugin-browser
- plugin-calendar
- plugin-cdn
- plugin-chat
- plugin-claw
- plugin-claw-budget
- plugin-claw-news
- plugin-claw-web
- plugin-cloudflare
- plugin-cms
- plugin-compliance
- plugin-cron-pro
- plugin-ddns
- plugin-devices
- plugin-documents
- plugin-donorbox-pro
- plugin-entitlements
- plugin-epg
- plugin-file-processing
- plugin-game-metadata
- plugin-geocoding
- plugin-geolocation
- plugin-google
- plugin-home
- plugin-idme
- plugin-knowledge-base
- plugin-linkedin
- plugin-livekit
- plugin-media-processing
- plugin-meetings
- plugin-moderation
- plugin-mux
- plugin-notify-pro
- plugin-object-storage
- plugin-observability
- plugin-paypal-pro
- plugin-photos
- plugin-podcast
- plugin-post
- plugin-realtime
- plugin-recording
- plugin-retro-gaming
- plugin-rom-discovery
- plugin-shopify-pro
- plugin-social
- plugin-sports
- plugin-stream-gateway
- plugin-streaming
- plugin-stripe-pro
- plugin-support
- plugin-tmdb
- plugin-voice
- plugin-web3
- plugin-workflows
Planned (26)
plugin-auditplugin-blogplugin-checkoutplugin-commerceplugin-drmplugin-exportplugin-flowplugin-importplugin-ldapplugin-mailgunplugin-mediaplugin-oauth-providersplugin-pagesplugin-postmarkplugin-rate-limitplugin-reportsplugin-samlplugin-schedulerplugin-sendgridplugin-ssoplugin-subscriptionplugin-thumbplugin-transcoderplugin-twilioplugin-wafplugin-watermark
Guides
- Guide-Production-Deployment
- Guide-SSL-Setup
- Guide-Multi-Tenancy
- Guide-Security-Hardening
- Guide-Monitoring-Setup
- Guide-Backup-Restore
- Guide-Custom-Services
- Guide-Migration-from-v1
Architecture
Reference
- API-Reference
- reference-error-codes, Error Codes
Licensing
Security
Brand
Operations
- operations/release-cascade, Release Cascade
- operations/self-healing, Self-Healing Schema
- operations/redis-tuning, Redis Pool Tuning
- operations/meilisearch-warmup, MeiliSearch Warm-Up
- operations/jwt-rotation, JWT Key Rotation
- operations/windows-wsl2-setup, Windows / WSL2 Setup
- operations/gemini-oauth-reauth, Gemini OAuth Reauth
Contributing
Admin
- USER-ACTION-QUEUE, Pending Admin Actions