Skip to main content

UniFi Network provider for octoDNS

An octoDNS provider for managing local DNS on UniFi Network controllers.

Installation

Command line

pip install octodns-unifi

requirements.txt/setup.py

Pinning specific versions or SHAs is recommended to avoid unplanned upgrades.

Versions

# Start with the latest versions and don't just copy what's here
octodns==1.16.0
octodns-unifi==1.1.3

SHAs

# Start with the latest/specific versions and don't just copy what's here
-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns
-e git+https://git@github.com/netshad0w/octodns-unifi.git@9da63f00309d76bfa94001c0cfdc0c594a647b97#egg=octodns_unifi

Configuration

Requires UniFi Network 10.1+, the integration API (v1), and an API key.

providers:
  unifi:
    class: octodns_unifi.UnifiProvider
    # Controller hostname or IP (local access)
    host: unifi.example.com
    # API key from UniFi controller settings
    api_key: env/UNIFI_API_KEY
    # Site name (defaults to 'default')
    site: default
    # SSL verification (defaults to true). Set to false to disable it, or
    # point it at a CA bundle (e.g. /etc/ssl/internal-ca.crt) to trust a
    # self-signed/internal certificate without turning verification off.
    verify_ssl: true
    # Console ID for cloud access via api.ui.com (see below)
    # console_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX:123456"
    # TTL in seconds (defaults to 300)
    default_ttl: 300
    # Explicit zone list, useful for multi-label TLDs (co.uk, com.au)
    # When omitted, zones are guessed from the last two labels of each
    # record (e.g. host.example.com -> example.com)
    # zones:
    #   - example.com.
    #   - internal.example.

Cloud access

You can manage DNS through the Ubiquiti cloud API instead of connecting directly to the controller. Set console_id to your console's ID, which you can grab from the URL at unifi.ui.com (https://unifi.ui.com/consoles/<console_id>/...).

host is still required but gets ignored when console_id is set.

providers:
  unifi:
    class: octodns_unifi.UnifiProvider
    host: unused
    api_key: env/UNIFI_API_KEY
    site: default
    console_id: env/UNIFI_CONSOLE_ID

Support Information

Records

Record Support
A ✅
AAAA ✅
ALIAS ❌
CAA ❌
CNAME ✅
DNAME ❌
DS ❌
HTTPS ❌
LOC ❌
MX ✅
NAPTR ❌
NS ❌
PTR ❌
SPF ❌
SRV ✅
SSHFP ❌
SVCB ❌
TLSA ❌
TXT ✅
URI ❌
URLFWD ❌

Limitations

Custom TTL values only work for A, AAAA, and CNAME records. For MX, TXT, and SRV, the controller manages the TTL and any octodns value is ignored.

Zone auto-detection infers zones from the last two labels of each domain (e.g. example.com). If you use multi-label TLDs like co.uk or com.au, set zones explicitly in the provider config.

Dynamic

UnifiProvider does not support dynamic records.

Development

See the /script/ directory for some tools to help with the development process. They generally follow the Script to rule them all pattern. Most useful is ./script/bootstrap which will create a venv and install both the runtime and development related requirements. It will also hook up a pre-commit hook that covers most of what's run by CI.

Metadata

Release files for octodns-unifi 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for octodns-unifi 1.2.0
File Size Uploaded
octodns_unifi-1.2.0.tar.gz 15.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for octodns-unifi 1.2.0
File Interpreter ABI Platform
octodns_unifi-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.1 kB

Release files / octodns_unifi-1.2.0.tar.gz

Download URL octodns_unifi-1.2.0.tar.gz
Size 15.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6e332a49209126c41be2b29808dbc0fbfe51f0d1979e2495db5271f2ee8ec429
BLAKE2b-256 checksum
How to use checksums
ac8bb6a554ffa8c579528d55a863d77ff18137f35f53caf45c0b6b9e0c46c59e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / octodns_unifi-1.2.0-py3-none-any.whl

Download URL octodns_unifi-1.2.0-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
029d8ef8adaea572f795920f21877a516904fb228f73257065340f732d3e0619
BLAKE2b-256 checksum
How to use checksums
f9955aae98c2634a864654037a5443568f61b8821343a1b6a3d44499dac27849
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page