Features
AI Log & Build Error Analysis
Debugging deployments just got a lot easier. Dokploy now includes AI-powered analysis for container logs and build errors directly from the dashboard. When a deployment fails or a container is misbehaving, you can trigger an AI analysis that reads through the logs and gives you a clear summary of what went wrong and how to fix it.
MCP Server & CLI
The https://github.com/Dokploy/mcp exposes 508 tools across 49 categories, allowing any MCP-compatible client to interact with your Dokploy instance. Works with Claude Desktop, Cursor, VS Code, Windsurf, Zed, and more.
The CLI https://github.com/Dokploy/cli provides 449 commands to manage your Dokploy server from the terminal. Install it globally and authenticate with your API key to get started.
Shared Git Providers
Managing git providers across teams has always required each member to configure their own credentials. With v0.29.0, administrators can now share their git providers (GitHub, GitLab, Gitea, Bitbucket) with the entire organization.
Enterprise Features
- Assign Specific Git Providers to specific users
- Enterprise users can now assign specific remote servers to individual team members. This gives administrators granular control over which servers each user can deploy to, improving security and resource isolation across your organization.
Non-Root Multi Server Support
Setting up remote servers previously required connecting as the root user. With this release, Dokploy now supports non-root users with passwordless sudo access for multi-server setups.
New Libsql Database
We've added LibSQL as a new first-class database type in Dokploy. LibSQL is the open-source fork of SQLite designed for server use cases, and now you can deploy and manage it just like any other database in Dokploy.
What's Changed
- feat: enhance web server update process with health checks by @Siumauricio in #4033
- feat: expose drop deployment endpoint in public API by @fdarian in #3923
- feat(ui): Add Vercel-style breadcrumb navigation with project and service switchers by @imran-vz in #3716
- fix: prevent unhandled rejection in trustedOrigins on DB failure by @RchrdHndrcks in #4004
- feat: add project tags for organizing services by @cucumber-sp in #3706
- feat: add libSQL database by @OliverGeneser in #2601
- feat: add automatic Rancher Desktop support for Docker socket detection by @sueffuenfelf in #2681
- feat(servers): enhance server setup and validation for user privileges by @Siumauricio in #4059
- feat: add mattermost notification provider by @hoootan in #2728
- feat(docker): implement container removal functionality by @Siumauricio in #4065
- fix: Remove .sql for mongo backup file name by @MichalMaciejKowal in #2753
- feat(destinations): add additionalFlags field for destination settings by @Siumauricio in #4092
- feat(notification): add volumeBackup parameter to notification creati… by @Siumauricio in #4093
- refactor(traefik): improve config removal logic and error handling by @Siumauricio in #4115
- feat[notifications]: Add Dokploy Backup notification type support by @WalidDevIO in #2907
- feat(git-provider): enhance sharing and permissions management by @Siumauricio in #4135
- fix: sort schedules by name in list query by @dpulpeiro in #4125
- fix(subscriptions): set done=true when deployment/restore completes so the while loop can exit by @mixelburg in #4128
- Update gitea.ts by @impcyber in #4067
- fix(git-provider): use internal URLs for Gitea and GitLab repository … by @Siumauricio in #4136
- fix: typos, grammar, spelling, style & format by @nktnet1 in #4104
- feat(certificates): enhance certificate view by @faytranevozter in #3287
- feat: add support for custom entry point by @KarpachMarko in #2863
- feat: add password manager compatible OTP input component by @leofilmon in #2953
- Feat : Fix backup file naming for Windows 11 compatibility (#2955) by @Harikrishnan1367709 in #2956
- feat: Add web UI file upload to Docker containers (#2920) by @Harikrishnan1367709 in #2959
- feat: add grid/table view toggle for domains page by @quochuydev in #3159
- feat(dashboard): enhance monitoring charts with new Docker disk usage… by @Siumauricio in #4142
- feat: be able to bookmark templates by @Bima42 in #2936
- fix: update regex to allow number at the end of app name by @Bima42 in #3348
- feat: be able to edit certificate by @Bima42 in #3350
- feat(database-credentials): add password update functionality for Mar… by @Siumauricio in #4144
- chore(databases): update mongodb version, to patch latest cve by @stripsior in #3386
- feat: add configurable middlewares for domains by @david-dev-de in #3374
- fix(postgres): add default StopGracePeriod to prevent WAL corruption by @OthmanHaba in #3607
- Feat/application icon upload by @Statsly-org in #3611
- feat(swarm): add container breakdown by node with live metrics by @physikal in #3633
- feat: add credentials-based user provisioning alongside invitation flow by @mhbdev in #3687
- fix: use event.code instead of event.key for keyboard shortcuts by @xob0t in #3748
- feat: classify logs based on HTTP statusCode by @difagume in #3764
- fix: resolve OpenAPI 500 error caused by BigInt serialization by @vcode-sh in #3794
- fix: set FailureAction=rollback for swarm services default UpdateConfig by @jaimehgb in #3810
- fix: Replace tooltip trigger button for help icon (provider compose ui) by @naturedamends in #3902
- feat: add accessedServers permission handling and server access valid… by @Siumauricio in #4156
- feat: add isEnterpriseCloud field and update billing logic by @Siumauricio in #4158
- fix: Broken install instructions by @AlexDev404 in #3937
- feat: show only used disk space in server monitoring chart by @lasseveenliese in #3949
- feat: add RHEL flavors to server setup script by @snitramodranoel in #4037
- fix: validate invitation email matches signup email by @Siumauricio in #4159
- fix: extractImageTag misidentifies registry port as tag by @Siumauricio in #4160
- fix: compose patches overwritten by domain injection by @Siumauricio in #4161
- fix: actions in slack notification by @vincent-tarrit in #4054
- fix: replace deprecated Slack actions with mrkdwn link field by @Siumauricio in #4163
- fix: correct permission checks for compose loadServices and env editing by @Siumauricio in #4164
- fix: surface actual error message in ntfy test connection by @Siumauricio in #4165
- feat: add tooltip to Daily Docker Cleanup toggle by @Siumauricio in #4166
- fix: add authSource and directConnection params to MongoDB connection URLs by @manalkaff in #4112
- fix: start server listener before initialization to prevent healthcheck failures by @Siumauricio in #4167
- fix: allow members to use SSH keys for deployments without full access by @Siumauricio in #4168
- feat: add AI log analysis component and integrate into deployment views by @Siumauricio in #4183
- fix: prevent orphaned containers when deleting compose services by @Siumauricio in #4185
- fix: inject COMPOSE_PROJECT_NAME to prevent orphaned containers on redeploy by @Siumauricio in #4188
- fix: add runtime type guard for cpu.value in monitoring tab by @Siumauricio in #4189
- fix: correct stripPath and addPrefix middleware order by @Siumauricio in #4190
- Feat/billing cloud improvements by @Siumauricio in #4198
- style(dashboard): remove max-width constraint from deployments card by @difagume in #4031
- feat: add containers tab to compose services by @Siumauricio in #4218
- feat: add context menu to service cards by @Siumauricio in #4219
- fix: prevent serverIp from being overwritten on every user registration by @nizepart in #4216
- feat: add view mounts, config, and terminal to container actions by @Siumauricio in #4221
- feat: resend verification email on sign-in and improve template by @Siumauricio in #4239
New Contributors
- @fdarian made their first contribution in #3923
- @RchrdHndrcks made their first contribution in #4004
- @cucumber-sp made their first contribution in #3706
- @OliverGeneser made their first contribution in #2601
- @hoootan made their first contribution in #2728
- @MichalMaciejKowal made their first contribution in #2753
- @impcyber made their first contribution in #4067
- @KarpachMarko made their first contribution in #2863
- @leofilmon made their first contribution in #2953
- @quochuydev made their first contribution in #3159
- @david-dev-de made their first contribution in #3374
- @OthmanHaba made their first contribution in #3607
- @Statsly-org made their first contribution in #3611
- @physikal made their first contribution in #3633
- @xob0t made their first contribution in #3748
- @vcode-sh made their first contribution in #3794
- @jaimehgb made their first contribution in #3810
- @naturedamends made their first contribution in #3902
- @lasseveenliese made their first contribution in #3949
- @snitramodranoel made their first contribution in #4037
- @vincent-tarrit made their first contribution in #4054
- @manalkaff made their first contribution in #4112
- @nizepart made their first contribution in #4216
Full Changelog: v0.28.8...v0.29.0