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 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ 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 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ Back - General + General + Advanced
@endif
@@ -23,63 +26,9 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ {{ 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 @@ class="w-auto dark:bg-coolgray-200 dark:hover:bg-coolgray-300"> @if ($currentRoute === 'project.service.database.import') + @elseif ($currentRoute === 'project.service.index.advanced') +

Advanced

+
+ + +
@else
@@ -242,16 +259,6 @@ class="w-auto dark:bg-coolgray-200 dark:hover:bg-coolgray-300"> @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::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 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ
@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 @@ public function applications(Request $request) 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 @@ public function create_public_application(Request $request) 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 @@ public function create_private_gh_app_application(Request $request) 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 @@ public function delete_by_uuid(Request $request) 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 @@ public function services(Request $request) 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 @@ public function delete_by_uuid(Request $request) 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 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ 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 @@ class="{{ request()->routeIs('project.service.configuration') ? 'menu-item-activ @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