dokploytools
Go CLI to manage multiple Dokploy panels. NAME = panel name; omit it (or use all) to run on every panel.
go build -o dokploytools ./src
ln -sf "$PWD/dokploytools" ~/.local/bin/dpt # short alias: dpt (or: alias dpt=dokploytools)
Global flags: --json (machine-readable rows, exit 1 if any panel errored) and --watch SECS (repeat).
Panels & config
panel add NAME URL (--key KEY | --user EMAIL --pass PASS)
panel list | panel edit NAME [--url U] [--key K] | panel rm NAME | panel encrypt
- Stored in
~/.config/dokploytools/panels.json(0600). SetDOKPLOYTOOLS_PASSPHRASEand keys are AES-GCM encrypted (scrypt) on save;panel encryptseals an existing file. - No file needed:
DOKPLOY_<NAME>_URL+DOKPLOY_<NAME>_KEYdefine panel<name>(never written to disk).
Overview
projects | status [--project P] | servers [--check] | containers [--stats]
deployments NAME PROJ/SVC | monitor | update [--check]
alert [--cpu 90 --mem 90 --disk 90 --cert-days 14 --no-certs --webhook URL --telegram TOKEN@CHATID]
alert exits 1 when the panel is down, a service/server is in error, a metric is over its limit or an HTTPS domain's cert is near expiry — put it in cron.
Services
svc start|stop|deploy|redeploy NAME PROJ/SVC [--env E] [--wait] # NAME=all hits every panel
env NAME PROJ/SVC [set K=V.. | unset K.. | --file F]
One-line compose deploy from a git repo (creates project/environment/compose if missing, updates if present):
dokploytools deploy prod --repo https://github.com/me/app.git --branch main \
--domain app.example.com --service web --port 3000 --set KEY=val --wait
Other flags: --project P (default = repo name), --env production, --name, --compose-path, --env-file F, --ssh-key-id, --server ID, --auto-deploy, --no-deploy, --no-https; --file compose.yml deploys a local compose file instead of a repo.
Backups
backup [NAME] [--dest D] [--keep N] [--download DIR] # panel (web-server) backup
dbbackup create NAME PROJ/SVC [--dest D --schedule "0 2 * * *" --keep 7 --database DB --prefix P --disabled]
dbbackup list NAME [PROJ/SVC] | run NAME PROJ/SVC [--id B] | set NAME BACKUPID [--schedule --keep --enable false] | rm NAME BACKUPID
dbbackup files NAME --dest D --search PREFIX | download NAME --dest D --search PREFIX --download DIR
dbbackup copy all --dest D --search PREFIX --to-endpoint E --to-bucket B --to-access K --to-secret S [--to-prefix P]
backup/dbbackup run also accept --download DIR and the --to-* flags (or DOKPLOYTOOLS_TO_ENDPOINT/BUCKET/ACCESS/SECRET) to mirror the new file into one central bucket under <to-prefix>/<panel>/. Postgres, MySQL, MariaDB, Mongo supported. Restore is not exposed by Dokploy's REST API (it uses a websocket subscription), so it is not implemented.
Domains, certificates, Traefik
domains | domain add NAME PROJ/SVC --host H --port N [--service S] [--cert letsencrypt|none|custom] [--no-https]
domain rm NAME HOST | domain check NAME [HOST] # panel DNS check + live TLS expiry
cert list NAME | cert add NAME CERTNAME --cert fullchain.pem --key privkey.pem [--domain H] [--auto-renew] | cert rm NAME ID|NAME
traefik get NAME main|web|middleware | traefik get NAME --path FILE | traefik ls NAME
traefik set NAME main|web|middleware --from FILE | traefik reload NAME
For a domain whose DNS is not on the server (CDN/other host, so Let's Encrypt HTTP challenge fails): upload its cert with cert add (validated locally: key pair, expiry, --domain coverage), then add the domain with --cert none; Traefik serves the uploaded cert by SNI. traefik set saves the previous config to traefik-<panel>-<file>-<ts>.bak first.
People
users | member invite NAME EMAIL [--role admin] | member rm NAME USERID | member invitations NAME | member uninvite NAME ID
apikey list|create NAME [--days N]|rm NAME ID | orgs
Status
Endpoint paths and bodies follow the Dokploy docs reference. Untested against a live panel; least certain: project.all nesting (handled for environments and legacy layout), user.getMetricsToken / monitoring port + /metrics, user.getContainerMetrics, auth/organization/invite-member (better-auth), login → API key. Use raw NAME GET PATH to probe. go test ./... runs a mock-server deploy test.
CI & releases
.github/workflows/ci.yml: gofmt check,go vet,go test -raceon every push tomainand every PR..github/workflows/release.yml: after CI passes onmain, python-semantic-release reads the conventional commits since the last tag (feat:minor,fix:/perf:patch,feat!:/BREAKING CHANGEmajor), bumps the version, updatesCHANGELOG.md, tags and creates the GitHub release. If a release was made, the same run builds the binaries (version embedded:dokploytools version), attaches them to the release and publishes the PyPI wheels. Commits without a releasable type (docs:,chore:, …) release nothing. Config:semantic-release.toml.
PyPI
Each release also publishes platform wheels (the Go binary + dokploytools/dpt entry points) to PyPI: pipx install dokploytools (or uv tool install dokploytools), then run dpt. Needs the repo secret PYPI_API_TOKEN; versions are plain X.Y.Z (PEP 440). Wheels are built by scripts/build_wheels.py (stdlib only).
Metadata
Release files for dokploytools 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| dokploytools-1.0.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| dokploytools-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| dokploytools-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| dokploytools-1.0.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| dokploytools-1.0.0-py3-none-macosx_10_9_x86_64.whl | Python 3 | none | macOS 10.9+ x86-64 | Details |
Total release size: 16.2 MB
Release files / dokploytools-1.0.0-py3-none-win_amd64.whl
| Download URL | dokploytools-1.0.0-py3-none-win_amd64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1e46a49cced0dc71d7bd20aaa73d957dd25d639cace5eaad51b62dd8ace13e7d
|
|
BLAKE2b-256 checksum How to use checksums |
88441a1c03fe5a2bda22b86486232e9dfed9b3438c206fad392499b5a78ccb5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / dokploytools-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | dokploytools-1.0.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
e1b0db49b61ebba46537990de1e19e507e62457c4318aaf971a74b50df3db170
|
|
BLAKE2b-256 checksum How to use checksums |
d5e85a21d0f3f574eda38522e09ab159e0d80abe810e95317aa3fd6148cc9e54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / dokploytools-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | dokploytools-1.0.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
aede3f8b5895d1c6d3134b4c66214f8cc87477513b2bd7761a6624713d31b446
|
|
BLAKE2b-256 checksum How to use checksums |
afc294e37a0fdf0936bd8c6d293dbcfa3b9eed886e2aa68035ca073b2162338b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / dokploytools-1.0.0-py3-none-macosx_11_0_arm64.whl
| Download URL | dokploytools-1.0.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f6c7a50e1dc6dc5fde49aadce5de0546122ec419a60a38e7aa41d73000313f5c
|
|
BLAKE2b-256 checksum How to use checksums |
e5e060a6f0a048a7fb7fc604a693daaf7ac705e175e384109562f1745c75fbb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency logRelease files / dokploytools-1.0.0-py3-none-macosx_10_9_x86_64.whl
| Download URL | dokploytools-1.0.0-py3-none-macosx_10_9_x86_64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | Python 3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
fa21cca74771283b55a69214dcdb2230551f40acf20a471eb13affaef170fdeb
|
|
BLAKE2b-256 checksum How to use checksums |
00014599f8437b1bd72eb2672b0a7090551ca6d2596d3b3bd0bc4c89a8ff7fca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.
Transparency log