- Docker networks now have a full management UI with create, inspect, and delete operations for bridge or overlay networks per server, including MTU, internal/attachable flags, IPv4/IPv6, and custom IPAM configuration
- Applications and compose services can now attach or detach specific Docker networks per service, with changes applied on the next deploy
- DNS provider integration for Cloudflare and AWS Route53 to manage DNS records directly from Dokploy
- Vault providers for environment secrets to resolve variables at deploy time from HashiCorp Vault, OpenBao, Infisical, AWS Secrets Manager, Doppler, and Scaleway Secret Manager
- Concurrent builds with dedicated build queues per server instead of a single global queue
- Unified Docker Dashboard consolidating Containers, Volumes, Networks, Events, Images, Disk Usage, Health, and Swarm under one set of tabs
- Built-in file explorer for Volumes to browse volume contents without SSH access
- Images tab showing every image on the host with size and age information
- Events tab streaming Docker daemon activity in real time with filtering and pagination
- Disk Usage tab breaking down images, containers, volumes, and build cache with reclaimable space
- Health tab running read-only diagnostics over SSH including inotify limits, disk, memory/CPU reservations, and per-network IP usage
- Project overview page summarizing Services, Backups, and Domains at a glance
- SCIM 2.0 provisioning for enterprise to automatically sync users and groups from identity providers
- Session management page to list active sessions and revoke them individually
- Passkey support for signing in using device biometrics, security keys, or password managers
- Isolated Deployment is deprecated in favor of attaching or detaching networks per service
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.
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.
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.
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.
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.
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.
Volumes now has a built-in file explorer, so you can browse volume contents without SSH-ing into the server.
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.
Events streams what the Docker daemon reports in real time — container starts/stops, image pulls, network connects — filterable and paginated.
Disk Usage breaks down images, containers, volumes, and build cache with reclaimable space called out for each.
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.
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.
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.
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.
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.
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.
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.
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 DATABASEstatements 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