Documentation

Polfence docs

Polfence speaks the standard dyndns2 remote-access protocol. If your client can update Dyn, No-IP or DuckDNS, it can update Polfence.

Quick start

  1. Create an account and add a hostname.
  2. Copy the update URL (it includes your token) from the hostname page.
  3. Paste it into your router's DDNS settings, or run it from any always-on device.

The update API

Send an HTTP GET (or POST) to:

GET https://update.polfence.net/nic/update?hostname=<FQDN>&myip=<IP>&token=<TOKEN>

Plain http:// works too — the update endpoint never redirects, so routers and embedded clients without modern TLS can still update.

Parameters:

ParameterMeaning
hostnameThe FQDN to update, e.g. myhome.polfence.net. Comma-separate to update several at once.
myipThe IPv4 and/or IPv6 to set (comma-separated). Omit to use the address the request comes from.
tokenYour per-host update secret. Alternatively send it as the HTTP Basic password.

The response is plain text, one line per hostname:

ResponseMeaning
good <ip>The record was updated to the given IP.
nochg <ip>The IP was already current — nothing changed.
nohostNo such hostname, or it isn't yours.
badauthMissing or wrong update token.
notfqdnThe hostname was malformed or no usable IP was supplied.
abuseThe hostname is paused or blocked.

Authentication is either the token query parameter or HTTP Basic auth, where the password is your update token. The username is recorded but not checked, so any value works.

Automatic IP detection

Leave out myip and Polfence uses the source address of the request — ideal when the updating device is the one whose IP you want to publish. To set a specific address (or both families), pass them explicitly:

# IPv4 + IPv6 in one call
curl "https://update.polfence.net/nic/update?hostname=myhome.polfence.net\
&myip=203.0.113.10,2001:db8::10&token=YOUR_TOKEN"

Router setup (dyndns2)

In your router's Dynamic DNS section, pick a Custom / dyndns2 provider and map the fields:

FieldValue
Serverupdate.polfence.net
Update path/nic/update?hostname=<domain>
Hostnamemyhome.polfence.net
Usernameyour account email
Passwordyour update token

ddclient

Run ddclient on any Linux/macOS box that's always on:

# /etc/ddclient.conf
protocol=dyndns2
use=web, web=checkip.amazonaws.com
server=update.polfence.net
ssl=yes
login=you@example.com
password=YOUR_TOKEN
myhome.polfence.net

Let's Encrypt & wildcard certificates (ACME DNS-01)

Every hostname can publish TXT records, so you can issue real certificates — including wildcards like *.myhome.polfence.net — via the ACME DNS-01 challenge. Manage records on the hostname page, or let your ACME client publish them itself through our lego-compatible endpoint (httpreq provider, authenticated with the hostname's update token):

export HTTPREQ_ENDPOINT=https://www.polfence.com/api/acme
export HTTPREQ_USERNAME=polfence
export HTTPREQ_PASSWORD=YOUR_TOKEN

lego --email you@example.com --dns httpreq \
  -d 'myhome.polfence.net' -d '*.myhome.polfence.net' run

The same works from Traefik (certificatesresolvers.…​.acme.dnschallenge.provider=httpreq) and anything else built on lego. Enable Wildcard records on the hostname to also resolve every subdomain to your IP.

Ready to try it?

Your first three hostnames are free and resolve immediately.

Create a hostname
Documentation · Polfence