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.11.tar.gz (116.1 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.11-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file digital_ocean_dynamic_dns-1.3.11.tar.gz.

File metadata

  • Download URL: digital_ocean_dynamic_dns-1.3.11.tar.gz
  • Upload date:
  • Size: 116.1 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.11.tar.gz
Algorithm Hash digest
SHA256 5a9e9653ca4efa577ac3e52b175c15f207ceaba00fc875cfb5af7e136de9ebbf
MD5 30d873f12880499fd1504629f85b4407
BLAKE2b-256 cfc2b2e6e4bf0d653a7ec56b0015190bfded5d289c5e155e1f283af25b90ae2a

See more details on using hashes here.

File details

Details for the file digital_ocean_dynamic_dns-1.3.11-py3-none-any.whl.

File metadata

  • Download URL: digital_ocean_dynamic_dns-1.3.11-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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 f425a3f890da58a0f9380598ac911742f2b347b2481730cae6ce5c3012394e2c
MD5 3642eb2a12427549fe12bd8d0c7d225b
BLAKE2b-256 cb4e20354e9e19fd3fbbf6931c4653037865e2df3d461e66d0e4b9aad6a50f4f

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