Python-based CLI tool for managing dynamic dns with Digital Ocean.
Project description
digital-ocean-dynamic-dns
Dynamic DNS python tool for Digital Ocean
This project offers a way to manage dynamic DNS, with specific support for DigitalOcean authoritative DNS servers.
Example:
- I own the domain
nivin.tech - DigitalOcean is my authoritative name server provider for the
nivin.techdomain. - I use this package (installed as a command line utility and deployed on a device on my home network) to update the DNS records for
nivin.techto point at my home gateway, which is assigned a dynamic IP address by my internet service provider (ISP).
Documentation
Full docs — installation, first-run setup, the complete command reference, and
troubleshooting — live under docs/. These are repo-relative links: they
render correctly on GitHub, but not from PyPI's rendered long description (this README) —
see nivintw/ddns#38 to switch to absolute links
once this content actually exists on main (converting now would 404 until this very PR
merges):
- Getting Started — install, configure, onboard your first domain
- Commands — every
do_ddnssubcommand and flag - Concepts — the domain/subdomain/manage/catalog vocabulary
- Configuration — env vars, file locations, platform limits
- Troubleshooting — common errors and fixes
- Roadmap — known limitations and planned work
This project carries the shared quality baseline: prek hooks (git hygiene, gitleaks,
typos, rumdl, SPDX/REUSE headers, ruff, ty) that run
identically locally and in CI. Conventional Commits are enforced at commit-msg time
(.cz.toml); releases on main are managed by release-please (a Release PR →
vX.Y.Z tag + GitHub Release on merge).
Installation
See Getting Started for install instructions (pipx or uv).
Publishing to PyPI
Every GitHub Release triggers a publish workflow (.github/workflows/publish.yml) that
builds once, publishes to TestPyPI first (install + import the built wheel as a smoke
test), then — gated on that — publishes to PyPI.
Auth is OIDC Trusted Publishing (no long-lived secret), bound to two GitHub
deployment environments — testpypi and pypi — each restricted to v* tag
deployments. This only actually publishes once the one-time setup below is complete —
until then, the workflow runs and fails at the TestPyPI step.
One-time setup before the first release:
- Create the
testpypiandpypienvironments (repo Settings → Environments), each with a deployment branch/tag policy restricted tov*tags. - Add a pending Trusted Publisher on test.pypi.org
and pypi.org, each pointing at owner
nivintw, repoddns, workflowpublish.yml, and the matching environment (testpypi/pypi).
Until both publishers exist, uv publish fails loudly rather than silently skipping.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file digital_ocean_dynamic_dns-1.3.10.tar.gz.
File metadata
- Download URL: digital_ocean_dynamic_dns-1.3.10.tar.gz
- Upload date:
- Size: 113.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4696ce79b7169979f7dcee8c212ab1c67783db98c0f88e02d1b4c65c8fe7a78
|
|
| MD5 |
73a641f23e12b1b87f3cae3c8ffd0d5f
|
|
| BLAKE2b-256 |
8eda202d2aae2fd900ea65c3170a924a8f08b7e29a081c6eba7767594f7f361e
|
File details
Details for the file digital_ocean_dynamic_dns-1.3.10-py3-none-any.whl.
File metadata
- Download URL: digital_ocean_dynamic_dns-1.3.10-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cfff714cbb32aa55b9d70bcebd7debad0014b03a06a6d4a498f327f936f1116
|
|
| MD5 |
7fadf1306fdd71caa946454c50f4b87b
|
|
| BLAKE2b-256 |
f7bda09704341c08a88740c29f574204829f29b0744da9cc82bf4d8ad5b7f075
|