Skip to main content

Manage your DevNomads services from the command line

Project description

dncli

Manage your DevNomads services from the command line: inspect your services, manage DNS zones and records, and move zones over from other providers - from a shell or a script.

The command is dncli - named to avoid clashing with the macOS dnctl traffic-shaper at /usr/sbin/dnctl. Install it from PyPI as devnomads-cli.

Install

pip install devnomads-cli

For a global, isolated install (recommended on workstations), use uv or pipx instead - same result, no interference with system packages:

uv tool install devnomads-cli   # or: pipx install devnomads-cli

Enable shell completion (bash, zsh, fish, PowerShell):

dncli --install-completion

Getting started

Create an API key in the DevNomads portal under Profiel -> API Sleutels, then store it:

dncli configure

The key is written to ~/.config/dncli/credentials, readable only by you. From here every command works:

dncli services list
dncli domains list
dncli containers show <id>

Every DevNomads product has its own command group - apps, buckets, containers, databases, domains, emails, forwards, proxies, servers, sites and more. Explore with dncli --help and dncli <group> --help.

Commands accept any unambiguous prefix: dncli e l is dncli emails list. An ambiguous prefix lists the candidates.

Managing DNS

dncli dns zones list
dncli dns zones show example.com
dncli dns records list example.com
dncli dns records set example.com www A 192.0.2.1 --ttl 3600
dncli dns records delete example.com www A

Moving a zone from another provider

dncli dns transfer copies a zone from your current DNS provider into DevNomads. It reads the records at the source (never writes there), shows you the changes, and applies them after confirmation:

dncli configure --provider transip       # store source credentials
dncli dns transfer --from transip --zone example.com --dry-run
dncli dns transfer --from transip --zone example.com

Supported source providers: TransIP and AuroraDNS. The zone must already exist at DevNomads; register or transfer the domain in the portal first.

Multiple accounts

Store each account as a named profile and select it per command or per shell:

dncli configure --profile acme
dncli services list --profile acme
export DN_PROFILE=acme

Scripting

Output is a human-readable table on a terminal and JSON when piped, so pipelines get parseable output without any flags; --output json|table forces either. Data goes to stdout, everything else (warnings, prompts, status messages) to stderr, so dncli ... | jq . is always safe.

In CI and pipelines, skip the credentials file and pass the key via the environment:

export DN_API_KEY=...        # beats any stored profile
dncli services list | jq -r '.[].entity'

Certificates

dncli issues Let's Encrypt certificates over DNS-01 and HTTP-01:

dncli cert issue example.com -d www.example.com -d "*.example.com"

The first argument is the primary domain (the certificate CN); add extra names (SANs) by repeating --san/-d. The certificate is written to ~/.config/dncli/certs/<domain>/ as cert.pem, fullchain.pem, chain.pem, and privkey.pem (0600); override the location with --out.

Keys are ECDSA P-384 by default. Pick another with --key-type (ecdsa256, ecdsa384, ecdsa521, rsa2048, rsa4096).

A dehydrated-compatible DNS-01 hook ships as dncli-dns-hook:

# dehydrated/config
CHALLENGETYPE="dns-01"
HOOK="dncli-dns-hook"

License

MIT.

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

devnomads_cli-0.4.1.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

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

devnomads_cli-0.4.1-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file devnomads_cli-0.4.1.tar.gz.

File metadata

  • Download URL: devnomads_cli-0.4.1.tar.gz
  • Upload date:
  • Size: 36.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.4","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devnomads_cli-0.4.1.tar.gz
Algorithm Hash digest
SHA256 de93622acf036f018af6f6ad16223cb83a1f33840cdd0fa91d1c5f51c5cf50fc
MD5 bae9e9ebf55f75ce46f33bc9ee23f928
BLAKE2b-256 ae0060b5161ae40f0557a9e1d7600599301da77a102897bc661c12d474954cd3

See more details on using hashes here.

File details

Details for the file devnomads_cli-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: devnomads_cli-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.4","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devnomads_cli-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b607d3f7c7e9443bdfbb24c7c062fea9d32240fecdea36762bd9b79c04636cf2
MD5 b12ab1f08be24e2628c770b5b7d39c04
BLAKE2b-256 cd76705e086b4b870f9de0d67c875bd959ff0e8cc94e905b0b858c8082373d62

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