Skip to main content

Python-based CLI tool for managing dynamic dns with Digital Ocean.

Project description

digital-ocean-dynamic-dns

pre-commit enabled Ruff CI status badge

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:

  1. I own the domain nivin.tech
  2. DigitalOcean is my authoritative name server provider for the nivin.tech domain.
  3. 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.tech to 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):

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 environmentstestpypi 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:

  1. Create the testpypi and pypi environments (repo Settings → Environments), each with a deployment branch/tag policy restricted to v* tags.
  2. Add a pending Trusted Publisher on test.pypi.org and pypi.org, each pointing at owner nivintw, repo ddns, workflow publish.yml, and the matching environment (testpypi / pypi).

Until both publishers exist, uv publish fails loudly rather than silently skipping.

License

MIT — and REUSE-compliant.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

digital_ocean_dynamic_dns-1.3.10.tar.gz (113.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

digital_ocean_dynamic_dns-1.3.10-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

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

Hashes for digital_ocean_dynamic_dns-1.3.10.tar.gz
Algorithm Hash digest
SHA256 d4696ce79b7169979f7dcee8c212ab1c67783db98c0f88e02d1b4c65c8fe7a78
MD5 73a641f23e12b1b87f3cae3c8ffd0d5f
BLAKE2b-256 8eda202d2aae2fd900ea65c3170a924a8f08b7e29a081c6eba7767594f7f361e

See more details on using hashes here.

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

Hashes for digital_ocean_dynamic_dns-1.3.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4cfff714cbb32aa55b9d70bcebd7debad0014b03a06a6d4a498f327f936f1116
MD5 7fadf1306fdd71caa946454c50f4b87b
BLAKE2b-256 f7bda09704341c08a88740c29f574204829f29b0744da9cc82bf4d8ad5b7f075

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page