From e4fc3d61d575bdb18ac55a77ef1f3800c1ee57da Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 23 Apr 2025 11:47:14 +0000 Subject: [PATCH 01/17] docs: update changelog --- CHANGELOG.md | 225 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 140 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eae126054..7bf923f23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,52 @@ All notable changes to this project will be documented in this file. ## [unreleased] +### 🚀 Features + +- *(deployment)* Add repository_project_id handling for private GitHub apps and clean up unused Caddy label logic +- *(api)* Enhance OpenAPI specifications with token variable and additional key attributes +- *(docker)* Add HTTP Basic Authentication support and enhance hostname parsing in Docker run conversion +- *(api)* Add HTTP Basic Authentication fields to OpenAPI specifications and enhance PrivateKey model descriptions + ### 🐛 Bug Fixes +- *(backup-edit)* Conditionally enable S3 checkbox based on available validated S3 storage +- *(source)* Update no sources found message for clarity +- *(api)* Correct middleware for service update route to ensure proper permissions +- *(api)* Handle JSON response in service creation and update methods for improved error handling +- Add 201 json code to servers validate api response +- *(docker)* Ensure password hashing only occurs when HTTP Basic Authentication is enabled +- *(docker)* Enhance hostname and GPU option validation in Docker run to compose conversion + +### 🚜 Refactor + +- *(jobs)* Comment out unused Caddy label handling in ApplicationDeploymentJob and simplify proxy path logic in Server model +- *(database)* Simplify database type checks in ServiceDatabase and enhance image validation in Docker helper +- *(shared)* Remove unused ray debugging statement from newParser function +- *(applications)* Remove redundant error response in create_env method +- *(api)* Restructure routes to include versioning and maintain existing feedback endpoint +- *(api)* Remove token variable from OpenAPI specifications for clarity +- *(environment-variables)* Remove protected variable checks from delete methods for cleaner logic +- *(http-basic-auth)* Rename 'http_basic_auth_enable' to 'http_basic_auth_enabled' across application files for consistency +- *(docker)* Remove debug statement and enhance hostname handling in Docker run conversion +- *(server)* Simplify proxy path logic and remove unnecessary conditions + +### 📚 Documentation + +- Update changelog + +## [4.0.0-beta.410] - 2025-04-18 + +### 🚀 Features + +- Add HTTP Basic Authentication +- *(readme)* Add new sponsors Supadata AI and WZ-IT to the README +- *(core)* Enable magic env variables for compose based applications + +### 🐛 Bug Fixes + +- *(application)* Append base directory to git branch URLs for improved path handling +- *(templates)* Correct casing of "denokv" to "denoKV" in service templates JSON - *(navbar)* Update error message link to use route for environment variables navigation - Unsend template - Replace ports with expose @@ -19,14 +63,33 @@ All notable changes to this project will be documented in this file. - Update changelog +### ⚙️ Miscellaneous Tasks + +- *(versions)* Bump coolify version to 4.0.0-beta.410 and update nightly version to 4.0.0-beta.411 in configuration files +- *(templates)* Update plausible and clickhouse images to latest versions and remove mail service + +## [4.0.0-beta.409] - 2025-04-16 + +### 🐛 Bug Fixes + +- *(parser)* Transform associative array labels into key=value format for better compatibility +- *(redis)* Update username and password input handling to clarify database sync requirements +- *(source)* Update connected source display to handle cases with no source connected + +### 🚜 Refactor + +- *(source)* Conditionally display connected source and change source options based on private key presence + +### ⚙️ Miscellaneous Tasks + +- *(versions)* Bump coolify version to 4.0.0-beta.409 in configuration files + ## [4.0.0-beta.408] - 2025-04-14 ### 🚀 Features - *(OpenApi)* Enhance OpenAPI specifications by adding UUID parameters for application, project, and service updates; improve deployment listing with pagination parameters; update command signature for OpenApi generation - *(subscription)* Enhance subscription management with loading states and Stripe status checks -- *(readme)* Add new sponsors Supadata AI and WZ-IT to the README -- *(core)* Enable magic env variables for compose based applications ### 🐛 Bug Fixes @@ -36,11 +99,6 @@ All notable changes to this project will be documented in this file. - *(mongodb)* Also apply custom config when SSL is enabled - *(templates)* Correct casing of denoKV references in service templates and YAML files - *(deployment)* Handle missing destination in deployment process to prevent errors -- *(parser)* Transform associative array labels into key=value format for better compatibility -- *(redis)* Update username and password input handling to clarify database sync requirements -- *(source)* Update connected source display to handle cases with no source connected -- *(application)* Append base directory to git branch URLs for improved path handling -- *(templates)* Correct casing of "denokv" to "denoKV" in service templates JSON ### 💼 Other @@ -52,7 +110,6 @@ All notable changes to this project will be documented in this file. - *(Dockerfile)* Remove service generation command from the build process to streamline Dockerfile and improve build efficiency - *(navbar-delete-team)* Simplify modal confirmation layout and enhance button styling for better user experience - *(Server)* Remove debug logging from isReachableChanged method to clean up code and improve performance -- *(source)* Conditionally display connected source and change source options based on private key presence ### 📚 Documentation @@ -65,9 +122,6 @@ All notable changes to this project will be documented in this file. - *(versions)* Update nightly version to 4.0.0-beta.410 - *(pre-commit)* Remove OpenAPI generation command from pre-commit hook - *(versions)* Update realtime version to 1.0.7 and bump dependencies in package.json -- *(versions)* Bump coolify version to 4.0.0-beta.409 in configuration files -- *(versions)* Bump coolify version to 4.0.0-beta.410 and update nightly version to 4.0.0-beta.411 in configuration files -- *(templates)* Update plausible and clickhouse images to latest versions and remove mail service ## [4.0.0-beta.407] - 2025-04-09 @@ -128,6 +182,7 @@ All notable changes to this project will be documented in this file. ### 🚀 Features - *(api)* Update OpenAPI spec for services (#5448) +- *(proxy)* Enhance proxy handling and port conflict detection ### 🐛 Bug Fixes @@ -140,6 +195,10 @@ All notable changes to this project will be documented in this file. ### 📚 Documentation +- Update changelog +- Update changelog +- Update changelog +- Update changelog - Update changelog - Update changelog - Update changelog @@ -155,15 +214,12 @@ All notable changes to this project will be documented in this file. ### 🚀 Features -- *(proxy)* Enhance proxy handling and port conflict detection - *(lang)* Added Azerbaijani language updated turkish language. (#5497) - *(lang)* Added Portuguese from Brazil language (#5500) - *(lang)* Add Indonesian language translations (#5513) ### 🐛 Bug Fixes -- *(database)* Custom config for MongoDB (#5471) -- *(ui)* Instance Backup settings - *(docs)* Comment out execute for now - *(installation)* Mount the docker config - *(installation)* Path to config file for docker login @@ -173,13 +229,10 @@ All notable changes to this project will be documented in this file. - *(docs)* Contribute service url (#5517) - *(proxy)* Proxy restart does not work on domain - *(ui)* Only show copy button on https +- *(database)* Custom config for MongoDB (#5471) ### 📚 Documentation -- Update changelog -- Update changelog -- Update changelog -- Update changelog - Update changelog - Update changelog - Update changelog @@ -187,10 +240,9 @@ All notable changes to this project will be documented in this file. ### ⚙️ Miscellaneous Tasks -- *(versions)* Bump version to 403 (#5520) -- *(versions)* Update coolify version numbers to 4.0.0-beta.403 and 4.0.0-beta.404 - *(service)* Remove unused code in Bugsink service - *(versions)* Update version to 404 +- *(versions)* Bump version to 403 (#5520) - *(versions)* Bump version to 404 ## [4.0.0-beta.402] - 2025-04-01 @@ -210,6 +262,7 @@ All notable changes to this project will be documented in this file. - *(DeployController)* Cast 'pr' query parameter to integer - *(deploy)* Validate team ID before deployment - *(wakapi)* Typo in env variables and add some useful variables to wakapi.yaml (#5424) +- *(ui)* Instance Backup settings ### 🚜 Refactor @@ -223,6 +276,7 @@ All notable changes to this project will be documented in this file. - *(service)* Add google variables to plausible.yaml (#5429) - *(service)* Update authentik.yaml versions (#5373) - *(core)* Remove redocs +- *(versions)* Update coolify version numbers to 4.0.0-beta.403 and 4.0.0-beta.404 ## [4.0.0-beta.401] - 2025-03-28 @@ -293,14 +347,6 @@ All notable changes to this project will be documented in this file. ### 🚀 Features -- *(github-source)* Enhance GitHub App configuration with manual and private key support -- *(ui)* Improve GitHub repository selection and styling -- *(database)* Implement two-step confirmation for database deletion -- *(assets)* Add new SVG logo for Coolify -- *(install)* Enhance Docker address pool configuration and validation -- *(install)* Improve Docker address pool management and service restart logic -- *(install)* Add missing env variable to install script -- *(LocalFileVolume)* Add binary file detection and update UI logic - *(service)* Neon - *(migration)* Add `ssl_certificates` table and model - *(migration)* Add ssl setting to `standalone_postgresqls` table @@ -342,6 +388,14 @@ All notable changes to this project will be documented in this file. - *(ssl)* Improve Redis and remove modes - Full SSL support for DrangonflyDB - SSL notification +- *(github-source)* Enhance GitHub App configuration with manual and private key support +- *(ui)* Improve GitHub repository selection and styling +- *(database)* Implement two-step confirmation for database deletion +- *(assets)* Add new SVG logo for Coolify +- *(install)* Enhance Docker address pool configuration and validation +- *(install)* Improve Docker address pool management and service restart logic +- *(install)* Add missing env variable to install script +- *(LocalFileVolume)* Add binary file detection and update UI logic - *(templates)* Change glance for v0.7 - *(templates)* Add Freescout service template - *(service)* Add Evolution API template @@ -359,18 +413,6 @@ All notable changes to this project will be documented in this file. - *(api)* Docker compose based apps creationg through api - *(database)* Improve database type detection for Supabase Postgres images -- *(ui)* Correct grammatical error in 404 page -- *(seeder)* Update GitHub app name in GithubAppSeeder -- *(plane)* Update APP_RELEASE to v0.25.2 in environment configuration -- *(domain)* Dispatch refreshStatus event after successful domain update -- *(database)* Correct container name generation for service databases -- *(database)* Limit container name length for database proxy -- *(database)* Handle unsupported database types in StartDatabaseProxy -- *(database)* Simplify container name generation in StartDatabaseProxy -- *(install)* Handle potential errors in Docker address pool configuration -- *(backups)* Retention settings -- *(redis)* Set default redis_username for new instances -- *(core)* Improve instantSave logic and error handling - *(ssl)* Permission of ssl crt and key inside the container - *(ui)* Make sure file mounts do not showing the encrypted values - *(ssl)* Make default ssl mode require not verify-full as it does not need a ca cert @@ -410,6 +452,18 @@ All notable changes to this project will be documented in this file. - *(ssl)* Add `--tls` arg to DrangflyDB - *(notification)* Always send SSL notifications - *(database)* Change default value of enable_ssl to false for multiple tables +- *(ui)* Correct grammatical error in 404 page +- *(seeder)* Update GitHub app name in GithubAppSeeder +- *(plane)* Update APP_RELEASE to v0.25.2 in environment configuration +- *(domain)* Dispatch refreshStatus event after successful domain update +- *(database)* Correct container name generation for service databases +- *(database)* Limit container name length for database proxy +- *(database)* Handle unsupported database types in StartDatabaseProxy +- *(database)* Simplify container name generation in StartDatabaseProxy +- *(install)* Handle potential errors in Docker address pool configuration +- *(backups)* Retention settings +- *(redis)* Set default redis_username for new instances +- *(core)* Improve instantSave logic and error handling - *(general)* Correct link to framework specific documentation - *(core)* Redirect healthcheck route for dockercompose applications - *(api)* Use name from request payload @@ -458,7 +512,6 @@ All notable changes to this project will be documented in this file. ### ⚙️ Miscellaneous Tasks -- *(supabase)* Update Supabase service template and Postgres image version - *(migration)* Remove unused columns - *(ssl)* Improve code in ssl helper - *(migration)* Ssl cert and key should not be nullable @@ -466,6 +519,7 @@ All notable changes to this project will be documented in this file. - Rename ca crt folder to ssl - *(ui)* Improve valid until handling - Improve code quality suggested by code rabbit +- *(supabase)* Update Supabase service template and Postgres image version - *(versions)* Update version numbers for coolify and nightly ## [4.0.0-beta.398] - 2025-03-01 @@ -858,14 +912,6 @@ All notable changes to this project will be documented in this file. ### 🚀 Features -- New ServerReachabilityChanged event -- Use new ServerReachabilityChanged event instead of isDirty -- Add infomaniak oauth -- Add server disk usage check frequency -- Add environment_uuid support and update API documentation -- Add service/resource/project labels -- Add coolify.environment label -- Add database subtype - Able to import full db backups for pg/mysql/mariadb - Restore backup from server file - Docker volume data cloning @@ -901,35 +947,6 @@ All notable changes to this project will be documented in this file. ### 🐛 Bug Fixes -- Fallback for copy button -- Copy the right text -- Maybe fallback is now working -- Only show copy button on secure context -- Render html on error page correctly -- Invalid API response on missing project -- Applications API response code + schema -- Applications API writing to unavailable models -- If an init script is renamed the old version is still on the server -- Oauthseeder -- Compose loading seq -- Resource clone name + volume name generation -- Update Dockerfile entrypoint path to /etc/entrypoint.d -- Debug mode -- Unreachable notifications -- Remove duplicated ServerCheckJob call -- Few fixes and use new ServerReachabilityChanged event -- Use serverStatus not just status -- Oauth seeder -- Service ui structure -- Check port 8080 and fallback to 80 -- Refactor database view -- Always use docker cleanup frequency -- Advanced server UI -- Html css -- Fix domain being override when update application -- Use nixpacks predefined build variables, but still could update the default values from Coolify -- Use local monaco-editor instead of Cloudflare -- N8n timezone - Compose envs - Scheduled tasks and backups are executed by server timezone. - Show backup timezone on the UI @@ -1029,7 +1046,6 @@ All notable changes to this project will be documented in this file. ### 🚜 Refactor -- Rename `coolify.environment` to `coolify.environmentName` - Rename parameter in DatabaseBackupJob for clarity - Improve checkbox component accessibility and styling - Remove unused tags method from ApplicationDeploymentJob @@ -1045,9 +1061,6 @@ All notable changes to this project will be documented in this file. ### ⚙️ Miscellaneous Tasks -- Regenerate API spec, removing notification fields -- Remove ray debugging -- Version ++ - Improve Penpot healthchecks - Switch up readonly lables to make more sense - Remove unused computed fields @@ -1071,11 +1084,44 @@ All notable changes to this project will be documented in this file. ### 🚀 Features +- New ServerReachabilityChanged event +- Use new ServerReachabilityChanged event instead of isDirty +- Add infomaniak oauth +- Add server disk usage check frequency +- Add environment_uuid support and update API documentation +- Add service/resource/project labels +- Add coolify.environment label +- Add database subtype - Migrate to new encryption options - New encryption options ### 🐛 Bug Fixes +- Render html on error page correctly +- Invalid API response on missing project +- Applications API response code + schema +- Applications API writing to unavailable models +- If an init script is renamed the old version is still on the server +- Oauthseeder +- Compose loading seq +- Resource clone name + volume name generation +- Update Dockerfile entrypoint path to /etc/entrypoint.d +- Debug mode +- Unreachable notifications +- Remove duplicated ServerCheckJob call +- Few fixes and use new ServerReachabilityChanged event +- Use serverStatus not just status +- Oauth seeder +- Service ui structure +- Check port 8080 and fallback to 80 +- Refactor database view +- Always use docker cleanup frequency +- Advanced server UI +- Html css +- Fix domain being override when update application +- Use nixpacks predefined build variables, but still could update the default values from Coolify +- Use local monaco-editor instead of Cloudflare +- N8n timezone - Smtp encryption - Bind() to 0.0.0.0:80 failed - Oauth seeder @@ -1085,11 +1131,15 @@ All notable changes to this project will be documented in this file. - Error message - Update healthcheck and port configurations to use port 8080 -## [4.0.0-beta.379] - 2024-12-13 +### 🚜 Refactor -### 🐛 Bug Fixes +- Rename `coolify.environment` to `coolify.environmentName` -- Saving oauth +### ⚙️ Miscellaneous Tasks + +- Regenerate API spec, removing notification fields +- Remove ray debugging +- Version ++ ## [4.0.0-beta.378] - 2024-12-13 @@ -1098,6 +1148,11 @@ All notable changes to this project will be documented in this file. - Monaco editor light and dark mode switching - Service status indicator + oauth saving - Socialite for azure and authentik +- Saving oauth +- Fallback for copy button +- Copy the right text +- Maybe fallback is now working +- Only show copy button on secure context ## [4.0.0-beta.377] - 2024-12-13 From fdcbade1632a42ce476281b828a48c8c0cb978e4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 23 Apr 2025 11:48:49 +0000 Subject: [PATCH 02/17] docs: update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf923f23..34035e307 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,11 @@ All notable changes to this project will be documented in this file. ### 📚 Documentation - Update changelog +- Update changelog + +### ⚙️ Miscellaneous Tasks + +- *(versions)* Update coolify version to 4.0.0-beta.411 and nightly version to 4.0.0-beta.412 in configuration files ## [4.0.0-beta.410] - 2025-04-18 From 6a7c8ff00d6611338470c297836bc1e6d0e90b96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 23 Apr 2025 12:19:07 +0000 Subject: [PATCH 03/17] docs: update changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34035e307..b9a33115c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. ## [unreleased] +### ⚙️ Miscellaneous Tasks + +- *(versions)* Update coolify version to 4.0.0-beta.412 and nightly version to 4.0.0-beta.413 in configuration files + +## [4.0.0-beta.411] - 2025-04-23 + ### 🚀 Features - *(deployment)* Add repository_project_id handling for private GitHub apps and clean up unused Caddy label logic @@ -36,6 +42,7 @@ All notable changes to this project will be documented in this file. ### 📚 Documentation +- Update changelog - Update changelog - Update changelog From bc52042ac55cf1d4a9aadc208c334940b0af36b2 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Thu, 24 Apr 2025 10:24:28 +0200 Subject: [PATCH 04/17] chore(workflows): adjust workflow for announcement --- .github/workflows/coolify-staging-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/coolify-staging-build.yml b/.github/workflows/coolify-staging-build.yml index ff6b553df..17f4cba8b 100644 --- a/.github/workflows/coolify-staging-build.yml +++ b/.github/workflows/coolify-staging-build.yml @@ -2,7 +2,10 @@ name: Staging Build on: push: - branches-ignore: ["main", "v3"] + branches-ignore: + - main + - v3 + - '**v5.x**' paths-ignore: - .github/workflows/coolify-helper.yml - .github/workflows/coolify-helper-next.yml From ff9c31d4da898705ba2b5d6a5ec899f1d97c6bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=8F=94=EF=B8=8F=20Peak?= <122374094+peaklabs-dev@users.noreply.github.com> Date: Thu, 24 Apr 2025 20:48:54 +0200 Subject: [PATCH 05/17] Chore: Adjust Workflows for v5 (#5689) * chore(workflows): remove unsued workflow * chore(workflows): rename branches in workflows * fix(license): update copyright year * chore(workflows): update branches to ignore in staging build workflow * chore(workflows): update branch references in issue processing and changelog generation --------- Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> --- .github/workflows/browser-tests.yml | 65 ------------------- ...e-remove-labels-and-assignees-on-close.yml | 4 +- .github/workflows/coolify-helper.yml | 2 +- .../workflows/coolify-production-build.yml | 2 +- .github/workflows/coolify-realtime.yml | 2 +- .github/workflows/coolify-staging-build.yml | 4 +- .github/workflows/generate-changelog.yml | 4 +- LICENSE | 2 +- 8 files changed, 10 insertions(+), 75 deletions(-) delete mode 100644 .github/workflows/browser-tests.yml diff --git a/.github/workflows/browser-tests.yml b/.github/workflows/browser-tests.yml deleted file mode 100644 index b06c9e97c..000000000 --- a/.github/workflows/browser-tests.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Dusk -on: - push: - branches: [ "not-existing" ] -jobs: - dusk: - runs-on: ubuntu-latest - - services: - redis: - image: redis - env: - REDIS_HOST: localhost - REDIS_PORT: 6379 - ports: - - 6379:6379 - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - - uses: actions/checkout@v4 - - name: Set up PostgreSQL - run: | - sudo systemctl start postgresql - sudo -u postgres psql -c "CREATE DATABASE coolify;" - sudo -u postgres psql -c "CREATE USER coolify WITH PASSWORD 'password';" - sudo -u postgres psql -c "ALTER ROLE coolify SET client_encoding TO 'utf8';" - sudo -u postgres psql -c "ALTER ROLE coolify SET default_transaction_isolation TO 'read committed';" - sudo -u postgres psql -c "ALTER ROLE coolify SET timezone TO 'UTC';" - sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE coolify TO coolify;" - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.2' - - name: Copy .env - run: cp .env.dusk.ci .env - - name: Install Dependencies - run: composer install --no-progress --prefer-dist --optimize-autoloader - - name: Generate key - run: php artisan key:generate - - name: Install Chrome binaries - run: php artisan dusk:chrome-driver --detect - - name: Start Chrome Driver - run: ./vendor/laravel/dusk/bin/chromedriver-linux --port=4444 & - - name: Build assets - run: npm install && npm run build - - name: Run Laravel Server - run: php artisan serve --no-reload & - - name: Execute tests - run: php artisan dusk - - name: Upload Screenshots - if: failure() - uses: actions/upload-artifact@v4 - with: - name: screenshots - path: tests/Browser/screenshots - - name: Upload Console Logs - if: failure() - uses: actions/upload-artifact@v4 - with: - name: console - path: tests/Browser/console diff --git a/.github/workflows/chore-remove-labels-and-assignees-on-close.yml b/.github/workflows/chore-remove-labels-and-assignees-on-close.yml index a3c299b5e..194984ddc 100644 --- a/.github/workflows/chore-remove-labels-and-assignees-on-close.yml +++ b/.github/workflows/chore-remove-labels-and-assignees-on-close.yml @@ -21,7 +21,7 @@ jobs: async function processIssue(issueNumber, isFromPR = false, prBaseBranch = null) { try { - if (isFromPR && prBaseBranch !== 'main') { + if (isFromPR && prBaseBranch !== 'v4.x') { return; } @@ -70,7 +70,7 @@ jobs: if (context.eventName === 'pull_request' || context.eventName === 'pull_request_target') { const pr = context.payload.pull_request; await processIssue(pr.number); - if (pr.merged && pr.base.ref === 'main' && pr.body) { + if (pr.merged && pr.base.ref === 'v4.x' && pr.body) { const issueReferences = pr.body.match(/#(\d+)/g); if (issueReferences) { for (const reference of issueReferences) { diff --git a/.github/workflows/coolify-helper.yml b/.github/workflows/coolify-helper.yml index 78c888a01..56c3eaa17 100644 --- a/.github/workflows/coolify-helper.yml +++ b/.github/workflows/coolify-helper.yml @@ -2,7 +2,7 @@ name: Coolify Helper Image on: push: - branches: [ "main" ] + branches: [ "v4.x" ] paths: - .github/workflows/coolify-helper.yml - docker/coolify-helper/Dockerfile diff --git a/.github/workflows/coolify-production-build.yml b/.github/workflows/coolify-production-build.yml index ad0878205..cd1f002b8 100644 --- a/.github/workflows/coolify-production-build.yml +++ b/.github/workflows/coolify-production-build.yml @@ -2,7 +2,7 @@ name: Production Build (v4) on: push: - branches: ["main"] + branches: ["v4.x"] paths-ignore: - .github/workflows/coolify-helper.yml - .github/workflows/coolify-helper-next.yml diff --git a/.github/workflows/coolify-realtime.yml b/.github/workflows/coolify-realtime.yml index d3af14144..d00621cc2 100644 --- a/.github/workflows/coolify-realtime.yml +++ b/.github/workflows/coolify-realtime.yml @@ -2,7 +2,7 @@ name: Coolify Realtime on: push: - branches: [ "main" ] + branches: [ "v4.x" ] paths: - .github/workflows/coolify-realtime.yml - docker/coolify-realtime/Dockerfile diff --git a/.github/workflows/coolify-staging-build.yml b/.github/workflows/coolify-staging-build.yml index 17f4cba8b..09b1e9421 100644 --- a/.github/workflows/coolify-staging-build.yml +++ b/.github/workflows/coolify-staging-build.yml @@ -3,8 +3,8 @@ name: Staging Build on: push: branches-ignore: - - main - - v3 + - v4.x + - v3.x - '**v5.x**' paths-ignore: - .github/workflows/coolify-helper.yml diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index ee5af6b3d..935a88721 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -2,7 +2,7 @@ name: Generate Changelog on: push: - branches: [ main ] + branches: [ v4.x ] workflow_dispatch: permissions: @@ -33,4 +33,4 @@ jobs: git config user.email 'github-actions[bot]@users.noreply.github.com' git add CHANGELOG.md git commit -m "docs: update changelog" - git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git main + git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git v4.x diff --git a/LICENSE b/LICENSE index 86c87eba2..e3cc59461 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] [Andras Bacsai] + Copyright [2025] [Andras Bacsai] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 0c0bdbf2fe21875e8804f2e23e2a3c2295187dba Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Mon, 28 Apr 2025 10:45:02 +0200 Subject: [PATCH 06/17] v4.0.0-beta.413 (#5711) * feat(README): add InterviewPal sponsorship link and corresponding SVG icon * chore(versions): update coolify version to 4.0.0-beta.413 and nightly version to 4.0.0-beta.414 in configuration files * fix(terminal): enhance WebSocket client verification with authorized IPs in terminal server * chore(versions): update realtime version to 1.0.8 in versions.json * chore(versions): update realtime version to 1.0.8 in versions.json --- README.md | 2 + config/constants.php | 4 +- docker/coolify-realtime/terminal-server.js | 72 ++++++++++++++++++---- other/nightly/versions.json | 6 +- public/svgs/interviewpal.svg | 1 + routes/web.php | 11 ++++ versions.json | 6 +- 7 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 public/svgs/interviewpal.svg diff --git a/README.md b/README.md index 6e245aa22..5f583df75 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,8 @@ Thank you so much! Arvensis Systems Niklas Lausch Cap-go +InterviewPal + ...and many more at [GitHub Sponsors](https://github.com/sponsors/coollabsio) diff --git a/config/constants.php b/config/constants.php index f05bc7d8e..a849ae93e 100644 --- a/config/constants.php +++ b/config/constants.php @@ -2,9 +2,9 @@ return [ 'coolify' => [ - 'version' => '4.0.0-beta.412', + 'version' => '4.0.0-beta.413', 'helper_version' => '1.0.8', - 'realtime_version' => '1.0.7', + 'realtime_version' => '1.0.8', 'self_hosted' => env('SELF_HOSTED', true), 'autoupdate' => env('AUTOUPDATE'), 'base_config_path' => env('BASE_CONFIG_PATH', '/data/coolify'), diff --git a/docker/coolify-realtime/terminal-server.js b/docker/coolify-realtime/terminal-server.js index 6649f866c..61dd29453 100755 --- a/docker/coolify-realtime/terminal-server.js +++ b/docker/coolify-realtime/terminal-server.js @@ -3,7 +3,9 @@ import http from 'http'; import pty from 'node-pty'; import axios from 'axios'; import cookie from 'cookie'; -import 'dotenv/config' +import 'dotenv/config'; + +const userSessions = new Map(); const server = http.createServer((req, res) => { if (req.url === '/ready') { @@ -15,16 +17,20 @@ const server = http.createServer((req, res) => { } }); -const verifyClient = async (info, callback) => { - const cookies = cookie.parse(info.req.headers.cookie || ''); - // const origin = new URL(info.origin); - // const protocol = origin.protocol; +const getSessionCookie = (req) => { + const cookies = cookie.parse(req.headers.cookie || ''); const xsrfToken = cookies['XSRF-TOKEN']; - - // Generate session cookie name based on APP_NAME const appName = process.env.APP_NAME || 'laravel'; const sessionCookieName = `${appName.replace(/[^a-zA-Z0-9]/g, '_').toLowerCase()}_session`; - const laravelSession = cookies[sessionCookieName]; + return { + sessionCookieName, + xsrfToken: xsrfToken, + laravelSession: cookies[sessionCookieName] + } +} + +const verifyClient = async (info, callback) => { + const { xsrfToken, laravelSession, sessionCookieName } = getSessionCookie(info.req); // Verify presence of required tokens if (!laravelSession || !xsrfToken) { @@ -54,11 +60,24 @@ const verifyClient = async (info, callback) => { const wss = new WebSocketServer({ server, path: '/terminal/ws', verifyClient: verifyClient }); -const userSessions = new Map(); -wss.on('connection', (ws) => { +wss.on('connection', async (ws, req) => { const userId = generateUserId(); - const userSession = { ws, userId, ptyProcess: null, isActive: false }; + const userSession = { ws, userId, ptyProcess: null, isActive: false, authorizedIPs: [] }; + const { xsrfToken, laravelSession, sessionCookieName } = getSessionCookie(req); + + // Verify presence of required tokens + if (!laravelSession || !xsrfToken) { + ws.close(401, 'Unauthorized: Missing required tokens'); + return; + } + const response = await axios.post(`http://coolify:8080/terminal/auth/ips`, null, { + headers: { + 'Cookie': `${sessionCookieName}=${laravelSession}`, + 'X-XSRF-TOKEN': xsrfToken + }, + }); + userSession.authorizedIPs = response.data.ipAddresses || []; userSessions.set(userId, userSession); ws.on('message', (message) => { @@ -125,6 +144,20 @@ async function handleCommand(ws, command, userId) { const timeout = extractTimeout(commandString); const sshArgs = extractSshArgs(commandString); const hereDocContent = extractHereDocContent(commandString); + + // Extract target host from SSH command + const targetHost = extractTargetHost(sshArgs); + if (!targetHost) { + ws.send('Invalid SSH command: No target host found'); + return; + } + + // Validate target host against authorized IPs + if (!userSession.authorizedIPs.includes(targetHost)) { + ws.send(`Unauthorized: Target host ${targetHost} not in authorized list`); + return; + } + const options = { name: 'xterm-color', cols: 80, @@ -152,7 +185,6 @@ async function handleCommand(ws, command, userId) { console.error(`Process exited with code ${exitCode} and signal ${signal}`); ws.send('pty-exited'); userSession.isActive = false; - }); if (timeout) { @@ -162,6 +194,22 @@ async function handleCommand(ws, command, userId) { } } +function extractTargetHost(sshArgs) { + // Find the argument that matches the pattern user@host + const userAtHost = sshArgs.find(arg => { + // Skip paths that contain 'storage/app/ssh/keys/' + if (arg.includes('storage/app/ssh/keys/')) { + return false; + } + return /^[^@]+@[^@]+$/.test(arg); + }); + if (!userAtHost) return null; + + // Extract host from user@host + const host = userAtHost.split('@')[1]; + return host; +} + async function handleError(err, userId) { console.error('WebSocket error:', err); await killPtyProcess(userId); diff --git a/other/nightly/versions.json b/other/nightly/versions.json index c3f4ba912..6dc9e7a02 100644 --- a/other/nightly/versions.json +++ b/other/nightly/versions.json @@ -1,16 +1,16 @@ { "coolify": { "v4": { - "version": "4.0.0-beta.412" + "version": "4.0.0-beta.413" }, "nightly": { - "version": "4.0.0-beta.413" + "version": "4.0.0-beta.414" }, "helper": { "version": "1.0.8" }, "realtime": { - "version": "1.0.7" + "version": "1.0.8" }, "sentinel": { "version": "0.0.15" diff --git a/public/svgs/interviewpal.svg b/public/svgs/interviewpal.svg new file mode 100644 index 000000000..f0dc3731a --- /dev/null +++ b/public/svgs/interviewpal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 3edfec910..3ddd77361 100644 --- a/routes/web.php +++ b/routes/web.php @@ -149,6 +149,17 @@ Route::middleware(['auth', 'verified'])->group(function () { return response()->json(['authenticated' => false], 401); })->name('terminal.auth'); + Route::post('/terminal/auth/ips', function () { + if (auth()->check()) { + $team = auth()->user()->currentTeam(); + $ipAddresses = $team->servers()->pluck('ip')->toArray(); + + return response()->json(['ipAddresses' => $ipAddresses], 200); + } + + return response()->json(['ipAddresses' => []], 401); + })->name('terminal.auth.ips'); + Route::prefix('invitations')->group(function () { Route::get('/{uuid}', [Controller::class, 'acceptInvitation'])->name('team.invitation.accept'); Route::get('/{uuid}/revoke', [Controller::class, 'revoke_invitation'])->name('team.invitation.revoke'); diff --git a/versions.json b/versions.json index c3f4ba912..6dc9e7a02 100644 --- a/versions.json +++ b/versions.json @@ -1,16 +1,16 @@ { "coolify": { "v4": { - "version": "4.0.0-beta.412" + "version": "4.0.0-beta.413" }, "nightly": { - "version": "4.0.0-beta.413" + "version": "4.0.0-beta.414" }, "helper": { "version": "1.0.8" }, "realtime": { - "version": "1.0.7" + "version": "1.0.8" }, "sentinel": { "version": "0.0.15" From cbfd6ebc5775652ab10c7bb232cbd0625dd65d86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 28 Apr 2025 08:45:59 +0000 Subject: [PATCH 07/17] docs: update changelog --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9a33115c..3aa485d5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. ## [unreleased] +### 💼 Other + +- Adjust Workflows for v5 (#5689) + +### 📚 Documentation + +- Update changelog + +### ⚙️ Miscellaneous Tasks + +- *(workflows)* Adjust workflow for announcement + +## [4.0.0-beta.412] - 2025-04-23 + ### ⚙️ Miscellaneous Tasks - *(versions)* Update coolify version to 4.0.0-beta.412 and nightly version to 4.0.0-beta.413 in configuration files From c28f67055f7a946c1d6bd86a2e99a4c306519d72 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Mon, 28 Apr 2025 20:48:13 +0200 Subject: [PATCH 08/17] v4.0.0-beta.414 (#5718) * feat(README): add InterviewPal sponsorship link and corresponding SVG icon * chore(versions): update coolify version to 4.0.0-beta.413 and nightly version to 4.0.0-beta.414 in configuration files * fix(terminal): enhance WebSocket client verification with authorized IPs in terminal server * chore(versions): update realtime version to 1.0.8 in versions.json * chore(versions): update realtime version to 1.0.8 in versions.json * chore(docker): update soketi image version to 1.0.8 in production configuration files * chore(versions): update coolify version to 4.0.0-beta.414 and nightly version to 4.0.0-beta.415 in configuration files * fix(ApplicationDeploymentJob): ensure source is an object before checking GitHub app properties --- app/Jobs/ApplicationDeploymentJob.php | 2 +- config/constants.php | 2 +- docker-compose.prod.yml | 2 +- other/nightly/docker-compose.prod.yml | 2 +- other/nightly/versions.json | 4 ++-- versions.json | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index c29093ce0..7c34271a7 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -1377,7 +1377,7 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue private function check_git_if_build_needed() { - if ($this->source->getMorphClass() === \App\Models\GithubApp::class && $this->source->is_public === false) { + if (is_object($this->source) && $this->source->getMorphClass() === \App\Models\GithubApp::class && $this->source->is_public === false) { $repository = githubApi($this->source, "repos/{$this->customRepository}"); $data = data_get($repository, 'data'); if (isset($data->id)) { diff --git a/config/constants.php b/config/constants.php index a849ae93e..018971370 100644 --- a/config/constants.php +++ b/config/constants.php @@ -2,7 +2,7 @@ return [ 'coolify' => [ - 'version' => '4.0.0-beta.413', + 'version' => '4.0.0-beta.414', 'helper_version' => '1.0.8', 'realtime_version' => '1.0.8', 'self_hosted' => env('SELF_HOSTED', true), diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 35fea6403..965fca276 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -61,7 +61,7 @@ services: retries: 10 timeout: 2s soketi: - image: '${REGISTRY_URL:-ghcr.io}/coollabsio/coolify-realtime:1.0.6' + image: '${REGISTRY_URL:-ghcr.io}/coollabsio/coolify-realtime:1.0.8' ports: - "${SOKETI_PORT:-6001}:6001" - "6002:6002" diff --git a/other/nightly/docker-compose.prod.yml b/other/nightly/docker-compose.prod.yml index 35fea6403..fa30677ad 100644 --- a/other/nightly/docker-compose.prod.yml +++ b/other/nightly/docker-compose.prod.yml @@ -61,7 +61,7 @@ services: retries: 10 timeout: 2s soketi: - image: '${REGISTRY_URL:-ghcr.io}/coollabsio/coolify-realtime:1.0.6' + image: '${REGISTRY_URL:-ghcr.io}/coollabsio/coolify-realtime:1.0.8' ports: - "${SOKETI_PORT:-6001}:6001" - "6002:6002" diff --git a/other/nightly/versions.json b/other/nightly/versions.json index 6dc9e7a02..aabcec3d8 100644 --- a/other/nightly/versions.json +++ b/other/nightly/versions.json @@ -1,10 +1,10 @@ { "coolify": { "v4": { - "version": "4.0.0-beta.413" + "version": "4.0.0-beta.414" }, "nightly": { - "version": "4.0.0-beta.414" + "version": "4.0.0-beta.415" }, "helper": { "version": "1.0.8" diff --git a/versions.json b/versions.json index 6dc9e7a02..aabcec3d8 100644 --- a/versions.json +++ b/versions.json @@ -1,10 +1,10 @@ { "coolify": { "v4": { - "version": "4.0.0-beta.413" + "version": "4.0.0-beta.414" }, "nightly": { - "version": "4.0.0-beta.414" + "version": "4.0.0-beta.415" }, "helper": { "version": "1.0.8" From 43e965010fd77b971cf9c2b81ce642355558b1d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 28 Apr 2025 18:48:36 +0000 Subject: [PATCH 09/17] docs: update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3aa485d5e..ccdeb93f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [unreleased] +## [4.0.0-beta.413] - 2025-04-28 ### 💼 Other @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. ### 📚 Documentation +- Update changelog - Update changelog ### ⚙️ Miscellaneous Tasks From 1227448e53e52aeb0c18c1b14797c23723682dff Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Tue, 29 Apr 2025 10:54:30 +0200 Subject: [PATCH 10/17] v4.0.0-beta.415 (#5722) * feat(README): add InterviewPal sponsorship link and corresponding SVG icon * chore(versions): update coolify version to 4.0.0-beta.413 and nightly version to 4.0.0-beta.414 in configuration files * fix(terminal): enhance WebSocket client verification with authorized IPs in terminal server * chore(versions): update realtime version to 1.0.8 in versions.json * chore(versions): update realtime version to 1.0.8 in versions.json * chore(docker): update soketi image version to 1.0.8 in production configuration files * chore(versions): update coolify version to 4.0.0-beta.414 and nightly version to 4.0.0-beta.415 in configuration files * fix(ApplicationDeploymentJob): ensure source is an object before checking GitHub app properties * fix(ui): Disable livewire navigate feature (causing spam of setInterval()) * fix(ui): Remove required attribute from image input in service application view * fix(ui): Change application image validation to be nullable in service application view * fix(Server): Correct proxy path formatting for Traefik proxy type --- app/Livewire/Dashboard.php | 2 +- app/Livewire/Project/Application/Heading.php | 4 +- app/Livewire/Project/Index.php | 2 +- .../Service/ServiceApplicationView.php | 2 +- app/Models/Server.php | 2 +- config/constants.php | 2 +- other/nightly/versions.json | 4 +- resources/views/components/navbar.blade.php | 32 +++---- .../components/notification/navbar.blade.php | 7 +- .../resources/breadcrumbs.blade.php | 2 - .../components/security/navbar.blade.php | 4 +- .../views/components/server/navbar.blade.php | 6 +- .../components/server/sidebar-proxy.blade.php | 6 +- .../views/components/server/sidebar.blade.php | 16 ++-- .../components/settings/navbar.blade.php | 6 +- .../views/components/team/navbar.blade.php | 7 +- resources/views/livewire/dashboard.blade.php | 26 +++-- .../livewire/destination/index.blade.php | 4 +- .../application/configuration.blade.php | 57 +++++------ .../application/deployment/index.blade.php | 95 +++++++++++-------- .../project/application/heading.blade.php | 8 +- .../project/database/configuration.blade.php | 32 +++---- .../project/database/heading.blade.php | 7 +- .../database/scheduled-backups.blade.php | 3 +- .../project/environment-edit.blade.php | 4 +- .../views/livewire/project/index.blade.php | 9 +- .../livewire/project/resource/index.blade.php | 43 +++------ .../project/service/configuration.blade.php | 42 ++++---- .../livewire/project/service/index.blade.php | 7 +- .../livewire/project/service/navbar.blade.php | 6 +- .../service-application-view.blade.php | 2 +- .../livewire/project/shared/metrics.blade.php | 2 +- .../shared/scheduled-task/all.blade.php | 4 +- .../views/livewire/project/show.blade.php | 2 - .../security/private-key/index.blade.php | 23 ++--- .../views/livewire/server/index.blade.php | 2 +- .../environment/index.blade.php | 6 +- .../livewire/shared-variables/index.blade.php | 6 +- .../shared-variables/project/index.blade.php | 1 - .../livewire/source/github/change.blade.php | 2 +- .../views/livewire/storage/index.blade.php | 2 +- .../views/livewire/tags/deployments.blade.php | 2 +- resources/views/livewire/tags/show.blade.php | 8 +- resources/views/source/all.blade.php | 4 +- versions.json | 4 +- 45 files changed, 238 insertions(+), 279 deletions(-) diff --git a/app/Livewire/Dashboard.php b/app/Livewire/Dashboard.php index d89f2b970..edbdd25fe 100644 --- a/app/Livewire/Dashboard.php +++ b/app/Livewire/Dashboard.php @@ -51,7 +51,7 @@ class Dashboard extends Component public function navigateToProject($projectUuid) { - return $this->redirect(collect($this->projects)->firstWhere('uuid', $projectUuid)->navigateTo(), true); + return $this->redirect(collect($this->projects)->firstWhere('uuid', $projectUuid)->navigateTo(), navigate: false); } public function render() diff --git a/app/Livewire/Project/Application/Heading.php b/app/Livewire/Project/Application/Heading.php index 475d2dfa8..5b0ae12ef 100644 --- a/app/Livewire/Project/Application/Heading.php +++ b/app/Livewire/Project/Application/Heading.php @@ -100,7 +100,7 @@ class Heading extends Component 'application_uuid' => $this->parameters['application_uuid'], 'deployment_uuid' => $this->deploymentUuid, 'environment_uuid' => $this->parameters['environment_uuid'], - ], navigate: true); + ], navigate: false); } protected function setDeploymentUuid() @@ -147,7 +147,7 @@ class Heading extends Component 'application_uuid' => $this->parameters['application_uuid'], 'deployment_uuid' => $this->deploymentUuid, 'environment_uuid' => $this->parameters['environment_uuid'], - ], navigate: true); + ], navigate: false); } public function render() diff --git a/app/Livewire/Project/Index.php b/app/Livewire/Project/Index.php index 8bf511a66..5347d74f0 100644 --- a/app/Livewire/Project/Index.php +++ b/app/Livewire/Project/Index.php @@ -35,6 +35,6 @@ class Index extends Component { $project = collect($this->projects)->firstWhere('uuid', $projectUuid); - return $this->redirect($project->navigateTo(), true); + return $this->redirect($project->navigateTo(), navigate: false); } } diff --git a/app/Livewire/Project/Service/ServiceApplicationView.php b/app/Livewire/Project/Service/ServiceApplicationView.php index 8324ee645..f1d08ee13 100644 --- a/app/Livewire/Project/Service/ServiceApplicationView.php +++ b/app/Livewire/Project/Service/ServiceApplicationView.php @@ -23,7 +23,7 @@ class ServiceApplicationView extends Component 'application.human_name' => 'nullable', 'application.description' => 'nullable', 'application.fqdn' => 'nullable', - 'application.image' => 'required', + 'application.image' => 'string|nullable', 'application.exclude_from_status' => 'required|boolean', 'application.required_fqdn' => 'required|boolean', 'application.is_log_drain_enabled' => 'nullable|boolean', diff --git a/app/Models/Server.php b/app/Models/Server.php index 89f6ad218..fb9be5de7 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -488,7 +488,7 @@ $schema://$host { $proxy_path = "$base_path/proxy"; if ($proxyType === ProxyTypes::TRAEFIK->value) { - $proxy_path = '/'; + $proxy_path = $proxy_path.'/'; } elseif ($proxyType === ProxyTypes::CADDY->value) { $proxy_path = $proxy_path.'/caddy'; } elseif ($proxyType === ProxyTypes::NGINX->value) { diff --git a/config/constants.php b/config/constants.php index 018971370..1479ae201 100644 --- a/config/constants.php +++ b/config/constants.php @@ -2,7 +2,7 @@ return [ 'coolify' => [ - 'version' => '4.0.0-beta.414', + 'version' => '4.0.0-beta.415', 'helper_version' => '1.0.8', 'realtime_version' => '1.0.8', 'self_hosted' => env('SELF_HOSTED', true), diff --git a/other/nightly/versions.json b/other/nightly/versions.json index aabcec3d8..fc4d28de4 100644 --- a/other/nightly/versions.json +++ b/other/nightly/versions.json @@ -1,10 +1,10 @@ { "coolify": { "v4": { - "version": "4.0.0-beta.414" + "version": "4.0.0-beta.415" }, "nightly": { - "version": "4.0.0-beta.415" + "version": "4.0.0-beta.416" }, "helper": { "version": "1.0.8" diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 4148a61d3..9a75200b1 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -123,7 +123,7 @@