v4.0.0-beta.381
andrasbacsai
released this
17 Jan 08:37
·
103 commits
to main
since this release
Changes
- feat/fix: Able to import full DB backups for PG/MySQL/MariaDB
- feat: Ability to set the initial root user (instance admin user) of Coolify in the
.env
file via environment variables (Read More):ROOT_USERNAME=
ROOT_USER_EMAIL=
ROOT_USER_PASSWORD=
- feat: Registration is automatically disabled if you set up a root user via the
.env
file - feat: Logic, error handling, and clean log output for each scenario of setting a root user in the
.env
file - feat: Move Docker cleanup settings to their own tab
- feat: Added Docker cleanup executions UI with very detailed cleanup log and message. This will help with debugging storage problems.
- feat: Restore backup from server file
- feat: Add Infomaniak OAuth
- feat: Added a disk usage check frequency setting
- feat: Log Horizon worker name to app deployment jobs.
- feat: Add
is_coolify_host
to the server API responses. - feat: Some new labels on all containers:
coolify.resourceName
,coolify.serviceName
,coolify.projectName
,coolify.environmentName
- feat: New URL structure for better performance and fewer DB queries
- feat: Docker volume data can optionally be cloned alongside the resource (so it is a true full clone of the resource, everything is exactly the same (except the name ofc)) --> Disabled it for now, see reasons: #4777 (comment).
- feat: Backup Retention Options (whichever limit is reached first will trigger the cleanup):
- Number of backups to keep -> A number of backups to keep
- Days to keep backups -> A number of days to keep backups
- Maximum storage (GB) -> A number of GB or decimal of maximum allowed storage for this backup job
- feat: Configure commands for production
- feat: Configure modals for better error handling
- feat: Added Purify for better HTML sanitization
- feat: Add backup retention days, backup amount, and max allowed storage to S3
- feat: Add backup retention days and max allowed storage to locally stored backups
- feat: When deleting a backup schedule, you can now select to delete all backups from S3 as well
- feat: When deleting a single backup, you can now select to delete the backup from S3 as well
- feat: New backup retention UI.
- feat: Multi-delete on S3 and locally stored backups -> Now multiple backup files and backup executions are deleted together in parallel for improved performance and faster executions of deletion...
- Security fix: After initial installation, the Registration page is exposed with the registration form. This is usually not an issue as one installs and registers within seconds/minutes after the URL becomes publicly accessible. However, if you leave the registration page too long without registering a user, a malicious actor can potentially register and compromise your system.
- fix: Use
finished_at
instead ofupdated_at
for the end time so that the time calculations are correct - fix: Set
finished_at
as immutable so it cannot be changed later - fix: Use
wire:navigate
whenever possible to make everything feel like a single-page application, and overall navigating Coolify now feels soooooo much smoother. - fix: Only call
removeOldBackups
function in theDatabaseBackupJob.php
if the backup is completed and successful; this caused problems before - fix: Delete backup folder and parent folder if folders are empty when deleting local backups to clean up unused folders
- fix: Do not remove executions from DB until both S3 and local backups have been deleted and successfully processed; otherwise, backups will never be deleted from S3.
- fix: All routes now use
/environment/{environment_uuid}
instead of the environment name.
This helps because we can now use any character in environment names instead of being limited to URL-safe characters. Also, all other URLs are constructed with the uuid way, so we should do it consistently everywhere.
- fix: Nixpacks predefined variables are now used as build-args and could be overwritten from the defined env variables in Coolify.
- fix: Use local monaco-editor to remove reliance on Cloudflare CDN and improve performance (that's why we have +56K changed lines).
- fix: Use local dropzonejs
- fix: Always use Docker cleanup frequency no matter if threshold or force cleanup is enabled
- fix: Disable copy button if the context is not secure (http)
- fix: Cloning resource name + volume names
- fix: When having multiple Postgres init scripts, saving a change to one init script would delete all other init scripts.
- fix: Changing the file name of an existing init script would create a new init script instead of renaming the file.
- fix: Deleting an init script does not remove it from the server.
- fix: Remove
custom-postgres.conf
if input is empty or null as the file is not needed on the server anymore - fix: Some UI fixes
- fix: API - Projects & Applications endpoints
- fix: Modal closing logic
- fix: Increase default PHP memory limit
- fix: Penpot health checks
- fix: NocoDB health check
- fix: Supabase template
- fix: Trigger with external DB
- fix: Make DB public for Supabase
- fix: CSRF bug for Label Studio
- fix: Better cloud jobs handling
- fix: Add lower timeout (ssh, docker) to jobs which are checking the servers, because it could cause problems if a high number of jobs are running.
- fix: Instance-wide GitHub apps are not available on other teams other than the source team
- fix:
Undefined variable $fs_path
error on file mounts for databases - fix:
SQLSTATE[42703]: Undefined column: 7 ERROR: column "additional_servers_count" of relation "applications" does not exist
- fix: Exclude computed count properties (
additional_servers_count
,additional_networks_count
) loaded by global scope to prevent errors - fix: Remove auto-generated properties (
id
,created_at
, andupdated_at
) from replicate as that caused issues - fix: Cloning a service to a separate server. To be able to clone a service to a new server, we need to set the server_id to the DB as well; otherwise, it will be cloned on the same server.
- fix: Volume naming after cloning
- fix: Project/environment-level cloning and also fixed resource-level cloning (same fixes described below for both)
- fix: Application cloning:
- fix: Disable auto-generation of URLs and labels if read-only labels is false.
- fix: Labels were not auto-generated for CloneMe (project/environment-level cloning) if read-only labels is true; now they are generated again
- fix: Some settings get lost when cloning Applications because we need to clone the row in the
application_settings
table as well - fix: Clone file and directory mounts
- fix: Clone tags
- fix: Clone scheduled tasks
- fix: Clone preview deployment settings
- fix: Databases cloning:
- fix: Clone tags
- fix: Clone volumes
- fix: Clone file and directory mounts
- fix: Clone backup schedules
- fix: Services cloning:
- fix: Clone environment variables
- fix: Clone tags
- fix: Clone scheduled task
- fix: Clone volumes
- fix: Clone file and directory mounts
- fix: Clone backup schedules for service databases
- fix: For read-only labels, a read-only Monaco editor is displayed
- fix: Render HTML on 500 error pages correctly
- fix: GitHub JWT token timing issue (more information about this issue here probot/probot#1426).
issuedAt -1min
-> this is to avoid token not yet valid issuesexpiresAt +8min
-> this is to make sure the token is not valid longer than 10 min (to avoid the issue described in the linked issue) as tokens have to have a lifespan of less than 10min, this should help with time differences of less than about 1min (most cases) - as the total valid time is 9min (with the -1min) -> for any case of over 50s time out of sync (System vs GitHub API time) it will throw an error.- fix:
Expiration time' claim ('exp') must be a numeric value
- refactor: Dates and UI design of Backup executions, Scheduled Tasks executions, and Deployments executions tabs
- redesigned the deployment executions tab
- show full commit message with an expand button on the deployment executions tab
- show only the first 7 characters of the commit hash, like on GitHub - makes the UI cleaner
- move date transformation to a shared function
- move duration calculation to a shared function
- dates are now always displayed with their timezone next to them
- remove dependency on
dayjs
(improves performance) - redesigned status badges with colors to make it easier to see the current status
- redesigned execution log boxes so that they all have a similar look and feel and contain similar information
- added start and end times for backups, scheduled tasks, deployments, and Docker cleanup executions
- calculate the duration for backups, scheduled tasks, deployments, and Docker cleanup executions and added it to the UI
- remove duplicate and unused code
- refactor: Rename functions to make code more clear
- refactor: Use camelCase consistently
- refactor: Consolidate code
- refactor: Better error handling in
github.php
andGithubAppPermissionJob.php
- refactor: Move things to separate functions
- refactor: Improve password security by not allowing compromised passwords
- refactor: Refactored the UI and DB to make it easier to use - 0 now means unlimited retention (so a value is now required for retention).
- refactor: Simplified some code
- refactor: Refactored some duplicated code
- refactor: Refactored code to be more centralized in one location
- chore: Remove unused authentik stuff
- chore: Refactored environment variable relationships
- chore: Refactored a lot of DB queries to improve performance
- chore: Upgraded all dependencies
- chore: Switched up read-only labels checkbox to make more sense -> Read-only labels are now the default and mean that they are read-only (not editable), and Coolify will autogenerate the labels. If you uncheck read-only, you can edit them, and Coolify will not autogenerate any labels.
- chore: Renamed
number_of_backups_locally
todatabase_backup_retention_amount_locally
- chore: Use native Livewire functions instead of scripts in some cases.
Issues
- fix #2461
- fix #3273
- fix #4420
- fix #4582
- fix #4603
- fix #4658
- fix #3760
- fix #3919
- fix #3297
- fix #2861
- fix #3050
- fix #4682
- fix #4416
- fix #2643
- fix #4668
- fix #3571
- fix #4050
- fix #4073
- fix #4592
- fix #4572
- fix #4713
- fix #4725
- fix #4782
- fix #4615
- fix #4702
- fix #3313
- adds: #4368
- improves #4775
New Navigation
new-navigation.mp4
Old Navigation
old-navigation.mp4
New Deployment Logs:
Old Deployment Logs:
Docker Cleanup Logs:
Backup Retention:
Root user environment variables do not pass validation rules
Root user created successfully
Root user already exists, skipping creation
What's Changed
- Fix typo in fileflows.yaml by @Skeyelab in #4566
- Added missing Discord Env for Outline one click service template by @ShadowArcanist in #4588
- feat: add infomaniak oauth by @zaosoula in #4556
- feat: add infomaniak oauth by @peaklabs-dev in #4602
- Fix: bind() to 0.0.0.0:80 failed by @peaklabs-dev in #4608
- Fix: Environment route now uses uuid by @peaklabs-dev in #4364
- Fix: Docker Cleanup schedule by @peaklabs-dev in #4610
- Fix: Unreachable Notifications by @peaklabs-dev in #4586
- Fix: Multiple Init script fixes and some other Postgres fixes by @peaklabs-dev in #3950
- Fix: API - Projects & Applications endpoints issues by @SierraJC in #4571
- fix: fix domain being override when update application by @arceushui in #4596
- feat: add some new labels to every container by @Julien-R44 in #4324
- Add Cockpit CMS service / template by @aheinze in #4576
- add OPENAI_API_KEY variable in supabase.yaml by @volfadar in #4625
- chore: remove unnecessary package by @danie-ramdhani in #4636
- update penpot template healthchecks by @OliverSpeir in #4745
- Update health check endpoint of Nocodb service by @pranavxc in #4736
- Improve modal closing logic for intentional user interaction by @biostaz in #4739
- Improves: GitHub handling and AppServiceProvider #4751 by @peaklabs-dev in #4753
- fix: hostname -I not supported on Arch Linux by @nktnet1 in #4642
- Dependencie upgrade by @peaklabs-dev in #4783
- update supabase template by @djsisson in #4654
- teable service by @Syiana in #4727
- Fix Redis Not defined issue in Trigger.dev Ext db template. by @amjed-ali-k in #4700
- fix make public in supabase by @djsisson in #4785
- Fixing the CSRF bug for labelstudio versions 1.14.0 and higher by @bsamadi in #4711
- chore(deps): bump nesbot/carbon from 3.8.2 to 3.8.4 by @dependabot in #4798
- fix: edge case where backup executions could be null by @peaklabs-dev in #4767
- Hotfix by @andrasbacsai in #4799
- fix: instance wide GitHub apps by @peaklabs-dev in #4814
- fix/feat: Improves Cloning by @peaklabs-dev in #4777
- Feat: Improve backup retention (for database backups) by @peaklabs-dev in #4818
- Add nodebb service by @privlol in #4624
- Add calibre-web service by @frenicohansen in #4639
- Add actual-budget and rallly service by @frenicohansen in #4640
- feat: template for Gotenberg, a Docker-powered stateless API for PDF files by @nktnet1 in #4759
- fix: gotenberg template healthcheck by @nktnet1 in #4833
- Feat: Improve navigation performance by @peaklabs-dev in #4796
- Added template for joomla with MariaDB by @basigabri in #4841
- Update openblocks to lowcoder by @howardshand in #4831
- Add logo for lowcoder by @howardshand in #4832
- Improves: GitHub handling, AppServiceProvider and 500 error message rendering by @peaklabs-dev in #4754
- feat: Docker cleanup execution UI and some UI improvements by @peaklabs-dev in #4842
- chore(deps): bump nesbot/carbon from 3.8.2 to 3.8.4 by @dependabot in #4848
- feat: Ability to create root user via environment variables by @peaklabs-dev in #4847
- v4.0.0-beta.381 by @andrasbacsai in #4598
New Contributors
- @ShadowArcanist made their first contribution in #4588
- @arceushui made their first contribution in #4596
- @Julien-R44 made their first contribution in #4324
- @aheinze made their first contribution in #4576
- @volfadar made their first contribution in #4625
- @danie-ramdhani made their first contribution in #4636
- @OliverSpeir made their first contribution in #4745
- @pranavxc made their first contribution in #4736
- @biostaz made their first contribution in #4739
- @nktnet1 made their first contribution in #4642
- @amjed-ali-k made their first contribution in #4700
- @bsamadi made their first contribution in #4711
- @privlol made their first contribution in #4624
- @frenicohansen made their first contribution in #4639
- @basigabri made their first contribution in #4841
- @howardshand made their first contribution in #4831
Full Changelog: v4.0.0-beta.380...v4.0.0-beta.381