v0.30.0

Dokploy/dokployv0.30.0Aug 14, 2026by github-actions[bot]

AI Summary

This release consolidates Docker management into a unified dashboard, introduces robust external secret management via Vault providers, and integrates DNS management for Cloudflare and AWS Route53. It also enhances security with passkeys and session management.

Key Highlights

  • Unified Docker Dashboard consolidates Containers, Volumes, Images, Events, Disk Usage, and Health diagnostics into a single hub.
  • Network Management UI allows full creation, inspection, and deletion of Docker networks with custom IPAM and MTU settings.
  • Vault Provider Integration enables environment secrets to be fetched from external managers like HashiCorp Vault or AWS Secrets Manager at deploy time.
  • DNS Provider Integration (Cloudflare, AWS Route53) automatically manages domain records.
  • Passkey Support enables passwordless login via biometrics or security keys.

Breaking Changes

  • Isolated Deployment is deprecated: Network attachment per-service now covers the same use case declaratively.
  • Route53 endpoint override removed due to a security fix (SSRF vulnerability).
  • Traefik updated to v3.6.25 (pulling in upstream security patches).

New Features

  • Full Docker Network Management UI with MTU, internal/attachable flags, IPv4/IPv6, and custom IPAM support.
  • Network attachment per-service with the ability to detach from the default `dokploy-network`.
  • DNS Provider Integration for Cloudflare and AWS Route53 to manage domain records automatically.
  • Vault Providers (HashiCorp Vault, Infisical, AWS Secrets Manager, Doppler, Scaleway) for secure environment variable resolution.
  • Concurrent Builds with dedicated queues per server.
  • Unified Docker Dashboard with Volumes File Explorer, Images tab, Events stream, Disk Usage, and Health diagnostics.
  • Project Overview Dashboard summarizing Services, Backups, and Domains.
  • SCIM 2.0 Provisioning for automatic user syncing with Okta and Entra.
  • Session Management page to revoke active user sessions.
  • Passkey Support for passwordless authentication.
  • Default Organization Role setting for new members.
  • Domain Enable/Disable Toggle to temporarily remove routes without deleting configurations.
  • Postgres 100-argument limit fixes for rollback and backup lookups.
  • MySQL/MariaDB Restore fixes to prevent targeting the wrong database.
  • Docker Cleanup improvements to prevent silent hangs.

Full Release Notes

## Features

### Network Management

Docker networks now have a full management UI instead of only being reachable through the CLI. From the **Networks** tab in the Docker dashboard you can create, inspect, and delete bridge or overlay networks per server, with MTU, internal/attachable flags, IPv4/IPv6, and custom IPAM (subnet/gateway/IP range) exposed in the creation form.

<img width="800" alt="14-networks-list" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/14-networks-list.png" />

<img width="800" alt="15-network-create" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/15-network-create.png" />

Networks also attach per-service now. Every application and compose service joins the shared `dokploy-network` by default — you can detach it and attach only the networks that service actually needs, applied on the next deploy. This is also why **Isolated Deployment is deprecated**: it's still available in Compose's advanced settings, but attaching/detaching networks per service covers the same use case declaratively, without breaking on restarts.

<img width="800" alt="16-network-assign-service" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/16-network-assign-service.png" />

### DNS Provider Integration

You can now connect **Cloudflare** or **AWS Route53** and let Dokploy manage DNS records for your domains directly. When you add a domain, Dokploy creates the record for you instead of making you switch tabs and wait for propagation to find out whether you typed it correctly. Apex domains are handled too — `@` resolves to the zone's apex automatically.

<img width="800" alt="04-dns-provider" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/04-dns-provider.png" />

### Vault Providers for Environment Secrets

Environment variables can now be resolved at deploy time from an external secret manager, using a unified reference syntax: `DATABASE_PASSWORD=${{vault.production.db_password}}`. The value is never stored in Dokploy — it's fetched from your provider when the deployment runs, so rotating a secret in the vault takes effect on the next deploy with no changes on the Dokploy side. Supported providers: HashiCorp Vault/OpenBao, Infisical, AWS Secrets Manager, Doppler, and Scaleway Secret Manager.

<img width="800" alt="05-vault-providers" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/05-vault-providers.png" />

### Concurrent Builds

For the first two years, Dokploy used a single global build queue across every server. Each server now has its own dedicated queue. 

<img width="800" alt="17-concurrent-builds" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/17-concurrent-builds.png" />

### Unified Docker Dashboard

Docker management used to be spread across separate pages. `/dashboard/docker` is now a single hub: Containers, Volumes, Networks, Events, Images, Disk Usage, Health, and Swarm, all under one set of tabs.

<img width="800" alt="01-docker-dashboard" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/01-docker-dashboard.png" />

**Volumes** now has a built-in file explorer, so you can browse volume contents without SSH-ing into the server.

<img width="800" alt="02-volume-explorer" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/02-volume-explorer.png" />

**Images** shows every image on the host with size and age, so you can spot the ones worth pruning before reaching for `docker system prune`.

<img width="800" alt="10-docker-images" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/10-docker-images.png" />

**Events** streams what the Docker daemon reports in real time — container starts/stops, image pulls, network connects — filterable and paginated.

<img width="800" alt="11-docker-events" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/11-docker-events.png" />

**Disk Usage** breaks down images, containers, volumes, and build cache with reclaimable space called out for each.

<img width="800" alt="12-docker-disk-usage" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/12-docker-disk-usage.png" />

**Health** runs a read-only diagnostic over SSH — inotify limits, disk, memory/CPU reservations, per-network IP usage — the same checks we used to walk people through manually when a deploy mysteriously stalled.

<img width="800" alt="13-docker-health" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/13-docker-health.png" />

### Overview Dashboard

Projects now open to an overview page that summarizes Services, Backups, and Domains at a glance, with Deployments moved into its own tab.

<img width="800" alt="03-overview-dashboard" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/03-overview-dashboard.png" />

### SCIM 2.0 Provisioning (Enterprise)

Users and groups now sync automatically from your identity provider, so deprovisioning in Okta or Entra deprovisions in Dokploy. SCIM-provisioned users also link correctly through SSO now, and sign-in errors surface instead of failing silently.

<img width="800" alt="06-scim-provisioning" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/06-scim-provisioning.png" />

### Session Management

A new page lists your active sessions and lets you revoke them individually — useful if you've logged in from a machine you no longer control.

<img width="800" alt="07-session-management" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/07-session-management.png" />

### Passkey Support

You can now sign in without a password using your device's biometrics, security key, or password manager. Add a passkey from Settings → Profile, and it shows up right on the login screen as a "Sign in with Passkey" option alongside email/password and SSO.

<img width="800" alt="18-passkey-support" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/18-passkey-support.png" />

### Default Organization Role

Admins can set a default role that's applied automatically to new members joining an organization, instead of remembering to downgrade every invite after the fact.

<img width="800" alt="08-default-org-role" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/08-default-org-role.png" />

### Domain Enable/Disable Toggle

Domains can now be disabled without deleting them. The route comes out of Traefik but the configuration stays intact, so you can pull a domain temporarily and bring it back without re-entering certificates, paths, and middleware.

<img width="800" alt="09-domain-toggle" src="https://github.com/Dokploy/dokploy/releases/download/v0.30.0/09-domain-toggle.png" />

## Bug Fixes

A few fixes worth calling out on their own:

- **Command injection via compose domain `serviceName`** — a crafted service name could escape into the host shell.
- **SSRF via Route53 endpoint override** — the endpoint override has been removed.
- **Traefik updated from v3.6.7 to v3.6.25**, pulling in upstream security patches.
- **Postgres 100-argument limit** was breaking rollback, schedule, port, and volume backup lookups on instances with enough rows — fixed.
- **Backups** ran the database dump twice per backup and could leave partial uploads behind on failure — now runs once and cleans up after itself.
- **MySQL/MariaDB restores** could target the wrong database because `USE`/`CREATE DATABASE` statements in the dump overrode the selected one — now stripped.
- **Docker cleanup** could hang silently on a false-positive busy-wait match.

This is in addition to the security batch shipped in **v0.29.13** (~16 command-injection and cross-org IDOR fixes) and **v0.29.14** (20 backported fixes) — if you're upgrading straight from v0.29.0 or skipped those patch releases, v0.30.0 covers all of it.

## What's Changed
* fix(ui): add cursor pointer style for buttons by @SteadEXE in https://github.com/Dokploy/dokploy/pull/4890
* fix: prevent environment form from resetting while editing by @veksen in https://github.com/Dokploy/dokploy/pull/4626
* Feat/add network management by @Siumauricio in https://github.com/Dokploy/dokploy/pull/3774
* fix(ui): make interactive icons inside badges clickable again by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4929
* chore: remove leftover Redis infrastructure code by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4930
* fix: avoid postgres 100-argument limit in findRollbackById by @dmtrTm in https://github.com/Dokploy/dokploy/pull/4924
* fix: avoid postgres 100-argument limit in schedule, volume backup and port queries by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4931
* feat(icon): enhance icon management for services by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4932
* fix(domains): don't render CDN info message as an error in DNS tooltip by @AbiRaditya in https://github.com/Dokploy/dokploy/pull/4911
* fix(ui): persist trigger type selection in GitHub provider forms by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4937
* fix(ui): resolve unclickable watch path removal button  by @imrja8 in https://github.com/Dokploy/dokploy/pull/4782
* fix(ui): prevent collapsed avatar clipping by @azizbecha in https://github.com/Dokploy/dokploy/pull/4948
* fix(ui): scope deployment delete loading by @azizbecha in https://github.com/Dokploy/dokploy/pull/4947
* fix(ui): keep dropdown menus open on window blur by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4953
* fix(ui): show real status code on error page by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4954
* fix(preview-deployment): refetch github provider before authenticating by @CyrilBIENNE in https://github.com/Dokploy/dokploy/pull/4933
* fix(schedule): return deployment metadata from runManually and fail early on missing container by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4955
* feat(auth): add passkey support by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4957
* fix(application): remove preview deployments when deleting an application by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4959
* fix: invalidate railpack build cache when env changes by @rnkp755 in https://github.com/Dokploy/dokploy/pull/4557
* feat(networks): add MTU option to network creation by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4960
* fix: resolve environment variables on application rollback by @dmtrTm in https://github.com/Dokploy/dokploy/pull/4923
* fix(requests): guard RequestHost before filtering to avoid crash on malformed logs by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4966
* fix(ui): widen restore backup dialog to match other backup dialogs by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4971
* feat: add baseUrl to github provider to support github enterprise urls by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4944
* fix(webhook): include added and removed files in watchPaths validation by @rifatdinc in https://github.com/Dokploy/dokploy/pull/4772
* feat(ci): add hotfix cherry-pick and release workflows by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4977
* Hotfix v0.29.14: backport 20 bug fixes by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4978
* fix(domain): allow single-label hostnames without a TLD by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4972
* fix(ci): push hotfix cherry-picks with PAT to satisfy branch rules by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4982
* fix(ci): create release tags on the pushed commit instead of default branch by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4983
* fix: preserve special characters in Compose-generated .env values by @narcisonunez in https://github.com/Dokploy/dokploy/pull/4962
* fix(ci): pin pnpm and strip v prefix in sync-version job by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4984
* fix: add unzip to arch server set up by @daniel-abramov in https://github.com/Dokploy/dokploy/pull/4176
* fix: preserve server schedule failures through tee pipeline by @Gabrielgvl in https://github.com/Dokploy/dokploy/pull/4122
* fix: use lazy initializer for useState with function calls by @karyanayandi in https://github.com/Dokploy/dokploy/pull/3867
* fix(ui): expose isStaticSpa toggle for nixpacks + publish directory by @elisiumm in https://github.com/Dokploy/dokploy/pull/4994
* fix(logs): don't classify explicit non-error key/values as error by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4824
* fix(logs): respect log level explicitly declared by structured loggers by @fcsouza in https://github.com/Dokploy/dokploy/pull/4624
* fix: Block I/O and Network I/O monitoring charts not populating by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4998
* fix: pin Traefik routing to the isolated network on isolated deployments by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5004
* fix: allow docker compose command chaining by @ews-pgasser in https://github.com/Dokploy/dokploy/pull/4997
* fix: invalid docker host while using docker desktop by @rpoetrap in https://github.com/Dokploy/dokploy/pull/4171
* fix: add createEnvFile toggle to Compose, mirroring Application by @narcisonunez in https://github.com/Dokploy/dokploy/pull/5008
* fix: warn on postgres image change when the implied data directory mismatches the mounted volume by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5005
* fix: allow Option/Alt composed characters in terminals on macOS by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5017
* fix: compose preview not reflecting patches by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5018
* fix(ui): update favicon dynamically based on app theme by @GuillaumeLecomte1 in https://github.com/Dokploy/dokploy/pull/4225
* fix: disable recharts animation on monitoring charts by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5019
* fix: show stack containers running on worker nodes by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5024
* fix: run database dump once per backup and clean up partial uploads on failure by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5025
* feat: unified Docker dashboard with volumes section and file explorer by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5027
* feat: third-party vault providers for environment secrets (HashiCorp Vault/OpenBao, Infisical, AWS, Doppler, Azure) by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5037
* fix: exclude node_modules/.next from biome scanner, bump to 2.5.7 by @alsmadi99 in https://github.com/Dokploy/dokploy/pull/5035
* fix(notifications): send server threshold alerts through email, resend, gotify and ntfy by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4969
* fix(restore): drop USE/CREATE DATABASE statements so mysql/mariadb restores target the selected database by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4967
* fix(ci): generate OpenAPI spec from the release commit in sync-version by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4985
* fix(notifications): use real server name in remote threshold alerts by @PixelPerfector in https://github.com/Dokploy/dokploy/pull/4791
* fix(security): command injection via compose domain serviceName (host escape) by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4872
* fix(editor): consistent YAML auto-indent on newline by @Siumauricio in https://github.com/Dokploy/dokploy/pull/4828
* MariaDB svg color updated: in Dark theme its not visible properly by @techdawnarea in https://github.com/Dokploy/dokploy/pull/4820
* feat: upgrade to TypeScript 7 and Next.js 16.3 by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5040
* refactor: move cluster nodes into Docker dashboard as a Swarm sub-tab by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5041
* feat(organization): default role for new members by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5042
* feat(domains): add toggle to enable/disable domains by @gentslava in https://github.com/Dokploy/dokploy/pull/4697
* fix(security): update Traefik from v3.6.7 to v3.6.25 by @andershermansen in https://github.com/Dokploy/dokploy/pull/4584
* feat(vault): add Scaleway Secret Manager provider by @Quentin-Gillet in https://github.com/Dokploy/dokploy/pull/5046
* fix: invalid replacement placeholder in redirect form by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5050
* fix: docker cleanup hangs silently on false-positive busy-wait match by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5051
* feat: make organization selector larger and searchable by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5052
* fix: don't cancel schedule deployments running outside the panel process on restart by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5053
* fix: deploy monitoring as a swarm service instead of a standalone container by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5055
* ci: update pull request actions for node 24 by @agentHits in https://github.com/Dokploy/dokploy/pull/4773
* chore: enforce 3-day minimum release age for dependencies (supply-chain hardening) by @vikyw89 in https://github.com/Dokploy/dokploy/pull/4679
* feat: add DNS provider integration (Cloudflare, AWS Route53) by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5057
* fix: remove Route53 endpoint override (SSRF) and fix CI build by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5058
* feat: add Docker events tab to docker dashboard by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5059
* fix: disable minimumReleaseAge, it broke the Docker build on unrelated AWS SDK deps by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5060
* feat: add Images and Disk Usage tabs to docker dashboard by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5061
* fix(compose): preserve raw remote mounts by @yusoofsh in https://github.com/Dokploy/dokploy/pull/4795
* fix: add sourceType to apiCreateCompose and apiCreateApplication by @elijahdev0 in https://github.com/Dokploy/dokploy/pull/4710
* fix: tooltip incorrectly lists volumes among Daily Cleanup targets by @teoobarca in https://github.com/Dokploy/dokploy/pull/4328
* FIX: replicaSets default to false after updating mongo due to default by @linkthai in https://github.com/Dokploy/dokploy/pull/4543
* fix: add clipboard addon to docker container terminal by @Souvik-Cyclic in https://github.com/Dokploy/dokploy/pull/5066
* fix: lock sidebar-inset scroll while a modal is open by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5069
* feat: add session management page (list active sessions + revoke) by @daniloneto in https://github.com/Dokploy/dokploy/pull/4841
* fix(auth): link SCIM-provisioned users through SSO and surface sign-in errors by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5071
* fix: open deployments tab when opening a service from the deployments list by @TpmyCT in https://github.com/Dokploy/dokploy/pull/4583
* fix(ui): prevent layout shift in log counter using tabular-nums by @difagume in https://github.com/Dokploy/dokploy/pull/4317
* fix(gitlab): handle missing expires_in in OAuth token response by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5075
* feat: add Docker Health diagnostics tab by @narcisonunez in https://github.com/Dokploy/dokploy/pull/5072
* feat: add Overview dashboard (Services, Backups & Domains tabs) by @narcisonunez in https://github.com/Dokploy/dokploy/pull/5076
* feat: enable Google Tag Manager on cloud version only by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5083
* feat: track cloud sign_up event in dataLayer by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5084
* feat: interactive feature showcase on the signup panel by @Siumauricio in https://github.com/Dokploy/dokploy/pull/5085
* 🚀 Release v0.30.0 by @github-actions[bot] in https://github.com/Dokploy/dokploy/pull/4979

## New Contributors
* @veksen made their first contribution in https://github.com/Dokploy/dokploy/pull/4626
* @narcisonunez made their first contribution in https://github.com/Dokploy/dokploy/pull/4929
* @dmtrTm made their first contribution in https://github.com/Dokploy/dokploy/pull/4924
* @AbiRaditya made their first contribution in https://github.com/Dokploy/dokploy/pull/4911
* @CyrilBIENNE made their first contribution in https://github.com/Dokploy/dokploy/pull/4933
* @rnkp755 made their first contribution in https://github.com/Dokploy/dokploy/pull/4557
* @rifatdinc made their first contribution in https://github.com/Dokploy/dokploy/pull/4772
* @daniel-abramov made their first contribution in https://github.com/Dokploy/dokploy/pull/4176
* @Gabrielgvl made their first contribution in https://github.com/Dokploy/dokploy/pull/4122
* @elisiumm made their first contribution in https://github.com/Dokploy/dokploy/pull/4994
* @fcsouza made their first contribution in https://github.com/Dokploy/dokploy/pull/4624
* @ews-pgasser made their first contribution in https://github.com/Dokploy/dokploy/pull/4997
* @rpoetrap made their first contribution in https://github.com/Dokploy/dokploy/pull/4171
* @PixelPerfector made their first contribution in https://github.com/Dokploy/dokploy/pull/4791
* @techdawnarea made their first contribution in https://github.com/Dokploy/dokploy/pull/4820
* @andershermansen made their first contribution in https://github.com/Dokploy/dokploy/pull/4584
* @Quentin-Gillet made their first contribution in https://github.com/Dokploy/dokploy/pull/5046
* @teoobarca made their first contribution in https://github.com/Dokploy/dokploy/pull/4328
* @linkthai made their first contribution in https://github.com/Dokploy/dokploy/pull/4543
* @Souvik-Cyclic made their first contribution in https://github.com/Dokploy/dokploy/pull/5066
* @daniloneto made their first contribution in https://github.com/Dokploy/dokploy/pull/4841
* @TpmyCT made their first contribution in https://github.com/Dokploy/dokploy/pull/4583

**Full Changelog**: https://github.com/Dokploy/dokploy/compare/v0.29.13...v0.30.0