Today’s release introduces shallow git cloning for improved git cloning performance. It also includes the ability to set a timeout on backup jobs so that massive databases are backed up properly. Additionally, this release brings CPU and RAM usage improvements backported from v5. Also it fixes a long-outstanding issue where the magic ENV variables FQDN and URL were switched up.
This release also includes several critical bug and security fixes. It is recommended that you update as soon as possible.
Changes
- feat(git): Allow shallow cloning by default (
depth=1
), which improves the git cloning process speed by a LOT. - feat(ACL): (Not activated yet) Members from now on should not able to change stuffs around Coolify. They can only view things as it should be from day 1.
- feat(backups): added the ability to set a backup job
timeout
in seconds. This was needed as large backups can take much longer to complete, so users should be able to set thetimeout
themselves - feat(backups): Able to delete local backups if S3 is enabled, so it preserve space on the server.
- feat(nixpacks): enable support for bun 1.2
- feat(queues): improve Horizon config to reduce CPU and RAM usage
maxTime
andmaxJobs
ensure that each worker is stopped (and immediately started again bys6-overlay
, as they are long-running) after either 400 jobs or 1 hour has passed. This helps free up accumulated Memory and CPU. Previously, we were not restarting workers at all, which caused some to consume far more CPU and Memory than they should have (memory
was already limited though). Users mentioned that rebooting the server fixed this issue #2110 (comment), which makes sense because rebooting restarts the workers as a side effect of Docker restarting thecoolify
container. Now this is no longer needed and is handled automatically.sleep
-> when a worker is idle, it now waits 3 seconds before polling again, which helps reduce small CPU spikes.balance
is now set tofalse
by default. This allows us to strictly prioritizehigh
queued jobs overdefault
queued jobs. Previously, we usedauto
which simply assigned workers to the queue with the most jobs (bysize
-autoScalingStrategy
). Which by default in most cases will be thedefault
queue which is not ideal as thendefault
jobs will be process beforehigh
jobs.balance
set tofalse
also reduces idle running workers form 2 workers to 1 worker- After a lot of testing and I think most users run Coolify on a 2-core server. We should reduce the default maxProcesses` to 4, as having more workers than 2x the number of CPU cores does not help and only causes higher CPU load during job runs.
- feat(api): add API endpoints for managing environments
- feat(changelog): add changelog to the coolify UI
- feat(changelog): implement automated changelog fetching from GitHub
- feat(changelog): add read tracking and unread count to changelog
- feat(scheduling): introduce ScheduledJobManager and ServerResourceManager for enhanced job scheduling and resource management
- feat(backup): add disable local backup option
- feat(deployment): add pull request filtering and pagination to deployment and backup execution components
- feat(email): implement email change request and verification process
- feat(service): enable password protection for the Wireguard service
- feat(horizon): update queue configuration to use environment variable for dynamic queue management
- feat(ui): add frequency filter option for manual execution of scheduled jobs
- feat(templates): add a
category
to all services, for the docs service filter - feat(code): Add Mr. Jean-Claude markdown file.
- feat(previews): implement soft delete and cleanup for ApplicationPreview, enhancing resource management in DeleteResourceJob
- feat(lang): add Polish language & improve
forgot_password
translation - fix(backups): backup execution can be stuck in
In Progress
- fix(backups): If the backup job fails because the
timeout
is hit there will now be an error shown in the UI. - fix(backups): Backups sometimes fail when the database is larger than 40GB
- fix(storage): ensure that stopping a database or any other container with volumes, when the server setting
Delete Unused Volumes
is enabled, does not cause the database or container to lose its volume data - fix(compose): FQDN and URL variables are no longer switched up for new services and applications
- fix(services): switch FQDN and URL variables in all services
- fix(docker): docker cleanup always running on deletion instead of using the deletion modal settings
- fix(database): custom postgres config with SSL enabled would not be used
- fix(docker): ENVs in volume names are not working working
- fix(git): use exact refspec in ls-remote to avoid matching similarly named branches
- fix(proxy): filter host network from default proxy
- fix(application): streamline environment variable updates for Docker
- fix(proxy): remove hardcoded port 80/443 checks
- fix(docker): Ensure server cleanup settings are only used for manual and scheduled cleanups
- fix(previews): refine preview domain generation for Docker Compose applications, ensuring correct method usage based on build pack type
- fix(previews): enhance domain generation logic for application previews, ensuring unique domains are created when none are set
- fix(application): clear Docker Compose specific data when switching to a different deploy type
- fix(policy): update delete method to check for admin status in S3StoragePolicy
- fix(api): made services patch endpoint attributes optional
- fix(container): sort containers alphabetically by name in the terminal selector
- fix(webhooks): exclude
webhook
routes from CSRF protection to avoid gettin 403 forbidden errors - fix(installer): public IPv4 link does not work
- fix(service): update healthcheck of penpot backend container
- fix(service): Budibase secret keys
- fix(service): wg-easy host should be FQDN and not URL
- fix(service): documenso signees always pending
- fix(api): duplicated logs in application endpoint
- fix(errors): update error pages to provide navigation options
- fix(ui): add various UI improvements like input autofocus...
- fix(ui): Delete button width on small screens
- fix(ui): handle null values in postgres metrics
- fix(ui): search box overlaps the sidebar navigation on table sized screens
- fix(ui): typo on proxy request handler tooltip
- fix(ui): add flex-wrap to prevent overflow on small screens
- refactor(docker): improve the Docker cleanup action by adding two new arguments
deleteUnusedVolumes
anddeleteUnusedNetworks
, so that volumes and networks are deleted only when explicitly requested - refactor(links): replace inline SVGs with reusable external link component
- refactor(previews): move preview domain generation logic to ApplicationPreview model for better encapsulation and consistency across webhook handlers
- chore(deps): update all dependencies to the latest version
- chore(deletion): rename
isDeleteOperation
todeleteConnectedNetworks
- chore(cleanup): remove unused GitLab view files
- chore: clarify usage of custom redis configuration
- chore(service): update Langfuse template to v3
- chore(service): update Nitropage template with new registry and new
DATABASE_URL
- chore(service): update Authentik template
- chore(service): change affine images
- chore(service): improve evolution-api environment variables
- chore(service): add
NOT_SECURED
env to Postiz
Security fixes
- Update external dependencies to the latest versions to fix multiple vulnerabilities.
New Services
- feat(service): add pi-hole template
- feat(service): add GitHub Action runner template
- feat(service): add OpenPanel template
- feat(service): add drizzle-gateway template
- feat(service): add librechat template
- feat(service): add pterodactyl template
- feat(service): add Matrix template
- feat(service): add Bluesky PDS template
- feat(service): add elasticsearch template
- feat(service): add TriliumNext template
- feat(service): add wings template
- feat(service): add sequin template
- feat(service): add Homebox template
- feat(service): add Gowa template
- feat(services): add Chroma template
Issues
- fix #6186
- fix #6152
- fix #3325
- fix #2687
- fix #6155
- fix #5668
- fix #5417
- fix #6175
- fix #6163
- fix #6305
- fix #6316
- fix #6234
- fix #6304
- fix #6230
- fix #5757
- fix #5150
- fix #6266
- improves #2110
What's Changed
- fix(ui): typo on proxy request handler tooltip by @ari-party in #6192
- fix(backups): large database backups are not working by @peaklabs-dev in #6217
- fix(service): Budibase secret keys by @alnutile in #6205
- chore(service): update Nitropage template by @katywings in #6181
- feat(service): enable password protection for the Wireguard UI by @nicanordlc in #6028
- fix(ui): search box overlaps the sidebar navigation by @notnotrachit in #6176
- fix(webhooks): exclude webhook routes from CSRF protection by @RadovanPelka in #6200
- feat(queues): improve Horizon config to reduce CPU and RAM usage by @peaklabs-dev in #6212
- feat(service): add Gowa service by @xoriuz in #6164
- feat(service): add TriliumNext service by @CrazyTim71 in #5970
- feat(service): add Matrix service by @nicanordlc in #6029
- feat(service): add GitHub Action runner service by @Skeyelab in #6209
- fix(ui): Delete button width on small screens by @h4570 in #6308
- fix(ui): add flex-wrap to prevent overflow on small screens by @h4570 in #6307
- feat(lang): add Polish language & improve forgot_password translation by @h4570 in #6306
- chore(service): update Authentik template by @Datenschmutz in #6264
- feat(service): add sequin template by @GauthierPLM in #6105
- feat(service): add pi-hole template by @OG-Jons in #6020
- fix(docker): volumes get delete when stopping a service if
Delete Unused Volumes
is activated by @peaklabs-dev in #6317 - feat(services): add Chroma service by @castelo-software in #6201
- chore(service): add
NOT_SECURED
env to Postiz by @mandrade2 in #6243 - chore(service): improve evolution-api environment variables by @vitusan in #6283
- chore(service): update Langfuse template to v3 by @Slawikus in #6301
- fix(proxy): remove hardcoded port 80/443 checks by @Cinzya in #6275
- feat(service): add OpenPanel template by @gurvancampion in #5310
- fix(service): update healthcheck of penpot backend container by @GauthierPLM in #6272
- feat(service): add librechat template by @GauthierPLM in #5654
- feat(service): add Homebox service by @howardshand in #6116
- fix(api): duplicated logs in application endpoint by @Jacxk in #6292
- chore: clarify usage of custom redis configuration by @aaryan359 in #6321
- fix(service): documenso signees always pending by @nicanordlc in #6334
- fix(database): custom postgres configs with SSL by @peaklabs-dev in #6352
- feat(service): add pterodactyl & wings services by @CallMeVerity in #5537
- feat(service): add Bluesky PDS template by @scanash00 in #6302
- BUGFIX: Update
ls-remote
logic to pull correct branch by @nahtnam in #6367 - Fix volume target, use the last part by @Trung-DV in #6318
- fix(api): made services patch endpoint attributes optional by @Jacxk in #6315
- fix(templates): added a general category tag for the docs service filter by @justserdar in #6385
- fix(ui): handle null values in postgres metrics by @Pritam-Git01 in #6388
- fix(proxy): filter host network from default proxy by @adiologydev in #6383
- chore(service): change affine images by @razorbackdb in #6366
- feat(service): add elasticsearch template by @Slawikus in #6300
- Add Claude Code GitHub Workflow by @andrasbacsai in #6434
- v4.0.0-beta.420.7 by @andrasbacsai in #6171
New Contributors
- @nicanordlc made their first contribution in #6028
- @notnotrachit made their first contribution in #6176
- @RadovanPelka made their first contribution in #6200
- @xoriuz made their first contribution in #6164
- @h4570 made their first contribution in #6308
- @GauthierPLM made their first contribution in #6105
- @castelo-software made their first contribution in #6201
- @mandrade2 made their first contribution in #6243
- @vitusan made their first contribution in #6283
- @Slawikus made their first contribution in #6301
- @Cinzya made their first contribution in #6275
- @gurvancampion made their first contribution in #5310
- @Jacxk made their first contribution in #6292
- @aaryan359 made their first contribution in #6321
- @CallMeVerity made their first contribution in #5537
- @scanash00 made their first contribution in #6302
- @nahtnam made their first contribution in #6367
- @Trung-DV made their first contribution in #6318
- @justserdar made their first contribution in #6385
- @Pritam-Git01 made their first contribution in #6388
- @razorbackdb made their first contribution in #6366
Full Changelog: v4.0.0-beta.420.6...v4.0.0-beta.420.7