From 8105447f94c6ca1c1b400ab89d7393e0d28a8dea Mon Sep 17 00:00:00 2001 From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com> Date: Wed, 18 Mar 2026 11:45:02 +0530 Subject: [PATCH 1/4] feat(ui): added network heading on services page for network related options --- resources/views/livewire/project/service/stack-form.blade.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/views/livewire/project/service/stack-form.blade.php b/resources/views/livewire/project/service/stack-form.blade.php index 8972345bc..ab26e0b71 100644 --- a/resources/views/livewire/project/service/stack-form.blade.php +++ b/resources/views/livewire/project/service/stack-form.blade.php @@ -20,6 +20,9 @@ placeholder="My super WordPress site" /> +
+

Network

+
Date: Wed, 18 Mar 2026 12:00:42 +0530 Subject: [PATCH 2/4] feat(ui): added advanced page on service settings page basically moved advanced section from general page to it's own new page called advanced --- .../service-database/sidebar.blade.php | 2 + .../livewire/project/service/index.blade.php | 271 +++++++++--------- routes/web.php | 1 + 3 files changed, 142 insertions(+), 132 deletions(-) diff --git a/resources/views/components/service-database/sidebar.blade.php b/resources/views/components/service-database/sidebar.blade.php index 9d31fc634..dc9a30552 100644 --- a/resources/views/components/service-database/sidebar.blade.php +++ b/resources/views/components/service-database/sidebar.blade.php @@ -16,6 +16,8 @@ General + Advanced @if ($serviceDatabase?->isBackupSolutionAvailable() || $serviceDatabase?->is_migrated) Backups diff --git a/resources/views/livewire/project/service/index.blade.php b/resources/views/livewire/project/service/index.blade.php index 04d30ae60..50bb8d017 100644 --- a/resources/views/livewire/project/service/index.blade.php +++ b/resources/views/livewire/project/service/index.blade.php @@ -14,7 +14,10 @@ Back - General + General + Advanced
@endif
@@ -23,63 +26,9 @@ {{ data_get_str($service, 'name')->limit(10) }} > {{ data_get_str($serviceApplication, 'name')->limit(10) }} | Coolify -
-
- @if ($serviceApplication->human_name) -

{{ Str::headline($serviceApplication->human_name) }}

- @else -

{{ Str::headline($serviceApplication->name) }}

- @endif - Save - @can('update', $serviceApplication) - - @endcan - @can('delete', $serviceApplication) - - @endcan -
-
- @if ($requiredPort && !$serviceApplication->serviceType()?->contains(str($serviceApplication->image)->before(':'))) - - This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing). -

- Example: http://app.coolify.io:{{ $requiredPort }} -
- @endif - -
- - -
-
- @if (!$serviceApplication->serviceType()?->contains(str($serviceApplication->image)->before(':'))) - @if ($serviceApplication->required_fqdn) - - @else - - @endif - @endif - -
-
-

Advanced

-
+ @if ($currentRoute === 'project.service.index.advanced') +

Advanced

+
@if (str($serviceApplication->image)->contains('pocketbase'))
- + @else +
+
+ @if ($serviceApplication->human_name) +

{{ Str::headline($serviceApplication->human_name) }}

+ @else +

{{ Str::headline($serviceApplication->name) }}

+ @endif + Save + @can('update', $serviceApplication) + + @endcan + @can('delete', $serviceApplication) + + @endcan +
+
+ @if ($requiredPort && !$serviceApplication->serviceType()?->contains(str($serviceApplication->image)->before(':'))) + + This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing). +

+ Example: http://app.coolify.io:{{ $requiredPort }} +
+ @endif - - -
    -
  • Only one service will be accessible at this domain
  • -
  • The routing behavior will be unpredictable
  • -
  • You may experience service disruptions
  • -
  • SSL certificates might not work correctly
  • -
-
-
+
+ + +
+
+ @if (!$serviceApplication->serviceType()?->contains(str($serviceApplication->image)->before(':'))) + @if ($serviceApplication->required_fqdn) + + @else + + @endif + @endif + +
+
+
- @if ($showPortWarningModal) -
- +
+ @endif @endif @elseif ($resourceType === 'database') @@ -178,6 +184,17 @@ @if ($currentRoute === 'project.service.database.import') + @elseif ($currentRoute === 'project.service.index.advanced') +

Advanced

+
+ + +
@else
@@ -242,16 +259,6 @@ @endif
-

Advanced

-
- - -
@endif @endif diff --git a/routes/web.php b/routes/web.php index 26863aa17..7ccfb709a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -262,6 +262,7 @@ Route::middleware(['auth', 'verified'])->group(function () { Route::get('/terminal', ExecuteContainerCommand::class)->name('project.service.command')->middleware('can.access.terminal'); Route::get('/{stack_service_uuid}/backups', ServiceDatabaseBackups::class)->name('project.service.database.backups'); Route::get('/{stack_service_uuid}/import', ServiceIndex::class)->name('project.service.database.import')->middleware('can.update.resource'); + Route::get('/{stack_service_uuid}/advanced', ServiceIndex::class)->name('project.service.index.advanced'); Route::get('/{stack_service_uuid}', ServiceIndex::class)->name('project.service.index'); Route::get('/tasks/{task_uuid}', ScheduledTaskShow::class)->name('project.service.scheduled-tasks'); }); From 49ffbb9429bb7f0d2788f8f11a4834b4fb56fc1d Mon Sep 17 00:00:00 2001 From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com> Date: Wed, 18 Mar 2026 12:09:52 +0530 Subject: [PATCH 3/4] fix(ui): changed required port callout from warning to info it's basically an info for the end user about the port requirement, in the past we had some users confused by it like their domain works fine even without port number while the service port is 80 --- resources/views/livewire/project/service/edit-domain.blade.php | 2 +- resources/views/livewire/project/service/index.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/livewire/project/service/edit-domain.blade.php b/resources/views/livewire/project/service/edit-domain.blade.php index 0691146f6..c04718df7 100644 --- a/resources/views/livewire/project/service/edit-domain.blade.php +++ b/resources/views/livewire/project/service/edit-domain.blade.php @@ -1,7 +1,7 @@
@if($requiredPort) - + This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing).

Example: http://app.coolify.io:{{ $requiredPort }} diff --git a/resources/views/livewire/project/service/index.blade.php b/resources/views/livewire/project/service/index.blade.php index 50bb8d017..a7e06bdad 100644 --- a/resources/views/livewire/project/service/index.blade.php +++ b/resources/views/livewire/project/service/index.blade.php @@ -74,7 +74,7 @@
@if ($requiredPort && !$serviceApplication->serviceType()?->contains(str($serviceApplication->image)->before(':'))) - + This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing).

Example: http://app.coolify.io:{{ $requiredPort }} From 820f699853cfc93306156d120c22d23cddd104c5 Mon Sep 17 00:00:00 2001 From: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com> Date: Wed, 18 Mar 2026 12:53:24 +0530 Subject: [PATCH 4/4] fix(ui): updated example domains on helper text to be https instead of http we were setting a bad example by showing http because user will enter their domain in http and wonder why they cannot access their site over https, also user don't know how to use multiple domains with port numbers so covered it on this change as well --- app/Http/Controllers/Api/ApplicationsController.php | 8 ++++---- app/Http/Controllers/Api/ServicesController.php | 4 ++-- .../views/livewire/project/application/general.blade.php | 4 ++-- .../views/livewire/project/service/edit-domain.blade.php | 4 ++-- resources/views/livewire/project/service/index.blade.php | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Api/ApplicationsController.php b/app/Http/Controllers/Api/ApplicationsController.php index 6188651a1..e3e06dd26 100644 --- a/app/Http/Controllers/Api/ApplicationsController.php +++ b/app/Http/Controllers/Api/ApplicationsController.php @@ -214,7 +214,7 @@ class ApplicationsController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io")'], + 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io")'], ], ), ], @@ -379,7 +379,7 @@ class ApplicationsController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io")'], + 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io")'], ], ), ], @@ -544,7 +544,7 @@ class ApplicationsController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io")'], + 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io")'], ], ), ], @@ -2378,7 +2378,7 @@ class ApplicationsController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io")'], + 'domain' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io")'], ], ), ], diff --git a/app/Http/Controllers/Api/ServicesController.php b/app/Http/Controllers/Api/ServicesController.php index 32097443e..107eea9a6 100644 --- a/app/Http/Controllers/Api/ServicesController.php +++ b/app/Http/Controllers/Api/ServicesController.php @@ -217,7 +217,7 @@ class ServicesController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'url' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io").'], + 'url' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io").'], ], ), ], @@ -839,7 +839,7 @@ class ServicesController extends Controller type: 'object', properties: [ 'name' => ['type' => 'string', 'description' => 'The service name as defined in docker-compose.'], - 'url' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "http://app.coolify.io,https://app2.coolify.io").'], + 'url' => ['type' => 'string', 'description' => 'Comma-separated list of URLs (e.g. "https://app.coolify.io,https://app2.coolify.io").'], ], ), ], diff --git a/resources/views/livewire/project/application/general.blade.php b/resources/views/livewire/project/application/general.blade.php index aada339cc..22a1d29b2 100644 --- a/resources/views/livewire/project/application/general.blade.php +++ b/resources/views/livewire/project/application/general.blade.php @@ -54,7 +54,7 @@ @if (!isDatabaseImage(data_get($service, 'image')))
@@ -106,7 +106,7 @@ x-bind:disabled="!canUpdate" /> @else @can('update', $application) Generate Domain diff --git a/resources/views/livewire/project/service/edit-domain.blade.php b/resources/views/livewire/project/service/edit-domain.blade.php index c04718df7..375dc9728 100644 --- a/resources/views/livewire/project/service/edit-domain.blade.php +++ b/resources/views/livewire/project/service/edit-domain.blade.php @@ -4,13 +4,13 @@ This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing).

- Example: http://app.coolify.io:{{ $requiredPort }} + Example: https://app.coolify.io:{{ $requiredPort }},https://www.app.coolify.io:{{ $requiredPort }}
@endif + helper="You can specify one domain with path or more with comma. You can specify a port to bind the domain to.

Example
- https://app.coolify.io,https://cloud.coolify.io/dashboard
- https://app.coolify.io/api/v3
- https://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. ">
Save diff --git a/resources/views/livewire/project/service/index.blade.php b/resources/views/livewire/project/service/index.blade.php index a7e06bdad..7cb61935f 100644 --- a/resources/views/livewire/project/service/index.blade.php +++ b/resources/views/livewire/project/service/index.blade.php @@ -77,7 +77,7 @@ This service requires port {{ $requiredPort }} to function correctly. All domains must include this port number (or any other port if you know what you're doing).

- Example: http://app.coolify.io:{{ $requiredPort }} + Example: https://app.coolify.io:{{ $requiredPort }},https://www.app.coolify.io:{{ $requiredPort }}
@endif @@ -92,11 +92,11 @@ @if ($serviceApplication->required_fqdn) + helper="You can specify one domain with path or more with comma. You can specify a port to bind the domain to.

Example
- https://app.coolify.io,https://cloud.coolify.io/dashboard
- https://app.coolify.io/api/v3
- https://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. "> @else + helper="You can specify one domain with path or more with comma. You can specify a port to bind the domain to.

Example
- https://app.coolify.io,https://cloud.coolify.io/dashboard
- https://app.coolify.io/api/v3
- https://app.coolify.io:3000 -> app.coolify.io will point to port 3000 inside the container. "> @endif @endif