Skip to content

v4.0.0-beta.381

Compare
Choose a tag to compare
@andrasbacsai andrasbacsai released this 17 Jan 08:37
· 103 commits to main since this release
916f8e3

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 of updated_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 the DatabaseBackupJob.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, and updated_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 issues
    • expiresAt +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 and GithubAppPermissionJob.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 to database_backup_retention_amount_locally
  • chore: Use native Livewire functions instead of scripts in some cases.

Issues


New Navigation

new-navigation.mp4

Old Navigation

old-navigation.mp4

New Deployment Logs:

image

Old Deployment Logs:

image

Docker Cleanup Logs:

docker_cleanup_log

Backup Retention:

image

Root user environment variables do not pass validation rules

Root user created successfully

Root user already exists, skipping creation

What's Changed

New Contributors

Full Changelog: v4.0.0-beta.380...v4.0.0-beta.381