diff --git a/app/Actions/Database/StartMariadb.php b/app/Actions/Database/StartMariadb.php
index c6b243381..21fcdb8a5 100644
--- a/app/Actions/Database/StartMariadb.php
+++ b/app/Actions/Database/StartMariadb.php
@@ -23,7 +23,7 @@ class StartMariadb
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
- "echo '####### Starting {$database->name}.'",
+ "echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
@@ -104,7 +104,7 @@ class StartMariadb
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
- $this->commands[] = "echo '####### {$database->name} started.'";
+ $this->commands[] = "echo '{$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
}
diff --git a/app/Actions/Database/StartMongodb.php b/app/Actions/Database/StartMongodb.php
index 9eb884dbe..e0197a7bc 100644
--- a/app/Actions/Database/StartMongodb.php
+++ b/app/Actions/Database/StartMongodb.php
@@ -25,7 +25,7 @@ class StartMongodb
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
- "echo '####### Starting {$database->name}.'",
+ "echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
@@ -120,7 +120,7 @@ class StartMongodb
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
- $this->commands[] = "echo '####### {$database->name} started.'";
+ $this->commands[] = "echo '{$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
}
diff --git a/app/Actions/Database/StartMysql.php b/app/Actions/Database/StartMysql.php
index 761832525..76e8af619 100644
--- a/app/Actions/Database/StartMysql.php
+++ b/app/Actions/Database/StartMysql.php
@@ -23,7 +23,7 @@ class StartMysql
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
- "echo '####### Starting {$database->name}.'",
+ "echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
@@ -104,7 +104,7 @@ class StartMysql
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
- $this->commands[] = "echo '####### {$database->name} started.'";
+ $this->commands[] = "echo '{$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
}
diff --git a/app/Actions/Database/StartPostgresql.php b/app/Actions/Database/StartPostgresql.php
index b88da5e4f..97ae9da0e 100644
--- a/app/Actions/Database/StartPostgresql.php
+++ b/app/Actions/Database/StartPostgresql.php
@@ -23,7 +23,7 @@ class StartPostgresql
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
- "echo '####### Starting {$database->name}.'",
+ "echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
"mkdir -p $this->configuration_dir/docker-entrypoint-initdb.d/"
];
@@ -130,7 +130,7 @@ class StartPostgresql
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
- $this->commands[] = "echo '####### {$database->name} started.'";
+ $this->commands[] = "echo '{$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
}
diff --git a/app/Actions/Database/StartRedis.php b/app/Actions/Database/StartRedis.php
index fab055f20..fcb87b891 100644
--- a/app/Actions/Database/StartRedis.php
+++ b/app/Actions/Database/StartRedis.php
@@ -26,7 +26,7 @@ class StartRedis
$this->configuration_dir = database_configuration_dir() . '/' . $container_name;
$this->commands = [
- "echo '####### Starting {$database->name}.'",
+ "echo 'Starting {$database->name}.'",
"mkdir -p $this->configuration_dir",
];
@@ -114,7 +114,7 @@ class StartRedis
$this->commands[] = "echo 'Pulling {$database->image} image.'";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml pull";
$this->commands[] = "docker compose -f $this->configuration_dir/docker-compose.yml up -d";
- $this->commands[] = "echo '####### {$database->name} started.'";
+ $this->commands[] = "echo '{$database->name} started.'";
return remote_process($this->commands, $database->destination->server);
}
diff --git a/app/Actions/Server/InstallDocker.php b/app/Actions/Server/InstallDocker.php
index a39799d88..01a2f8014 100644
--- a/app/Actions/Server/InstallDocker.php
+++ b/app/Actions/Server/InstallDocker.php
@@ -9,8 +9,12 @@ use App\Models\StandaloneDocker;
class InstallDocker
{
use AsAction;
- public function handle(Server $server, $supported_os_type)
+ public function handle(Server $server)
{
+ $supported_os_type = $server->validateOS();
+ if (!$supported_os_type) {
+ throw new \Exception('Server OS type is not supported for automated installation. Please install Docker manually before continuing: documentation.');
+ }
ray('Installing Docker on server: ' . $server->name . ' (' . $server->ip . ')' . ' with OS: ' . $supported_os_type);
$dockerVersion = '24.0';
$config = base64_encode('{
diff --git a/app/Actions/Service/StartService.php b/app/Actions/Service/StartService.php
index 74bdd81cb..ef473e578 100644
--- a/app/Actions/Service/StartService.php
+++ b/app/Actions/Service/StartService.php
@@ -14,13 +14,13 @@ class StartService
$network = $service->destination->network;
$service->saveComposeConfigs();
$commands[] = "cd " . $service->workdir();
- $commands[] = "echo '####### Saved configuration files to {$service->workdir()}.'";
- $commands[] = "echo '####### Creating Docker network.'";
+ $commands[] = "echo 'Saved configuration files to {$service->workdir()}.'";
+ $commands[] = "echo 'Creating Docker network.'";
$commands[] = "docker network create --attachable '{$service->uuid}' >/dev/null || true";
- $commands[] = "echo '####### Starting service {$service->name} on {$service->server->name}.'";
- $commands[] = "echo '####### Pulling images.'";
+ $commands[] = "echo 'Starting service {$service->name} on {$service->server->name}.'";
+ $commands[] = "echo 'Pulling images.'";
$commands[] = "docker compose pull";
- $commands[] = "echo '####### Starting containers.'";
+ $commands[] = "echo 'Starting containers.'";
$commands[] = "docker compose up -d --remove-orphans --force-recreate";
$commands[] = "docker network connect $service->uuid coolify-proxy || true";
$compose = data_get($service,'docker_compose',[]);
diff --git a/app/Http/Livewire/Boarding/Index.php b/app/Http/Livewire/Boarding/Index.php
index d710b9e6f..7f53708ad 100644
--- a/app/Http/Livewire/Boarding/Index.php
+++ b/app/Http/Livewire/Boarding/Index.php
@@ -188,7 +188,6 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
public function validateServer()
{
try {
- $customErrorMessage = "Server is not reachable:";
config()->set('coolify.mux_enabled', false);
instant_remote_process(['uptime'], $this->createdServer, true);
@@ -198,7 +197,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
]);
} catch (\Throwable $e) {
$this->serverReachable = false;
- return handleError(error: $e, customErrorMessage: $customErrorMessage, livewire: $this);
+ return handleError(error: $e, livewire: $this);
}
try {
@@ -206,7 +205,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
$dockerVersion = checkMinimumDockerEngineVersion($dockerVersion);
if (is_null($dockerVersion)) {
$this->currentState = 'install-docker';
- throw new \Exception('Docker version is not supported or not installed.');
+ throw new \Exception('Docker not found or old version is installed.');
}
$this->createdServer->settings()->update([
'is_usable' => true,
@@ -214,14 +213,20 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
$this->getProxyType();
} catch (\Throwable $e) {
// $this->dockerInstallationStarted = false;
- return handleError(error: $e, customErrorMessage: $customErrorMessage, livewire: $this);
+ return handleError(error: $e, livewire: $this);
}
}
public function installDocker()
{
- $this->dockerInstallationStarted = true;
- $activity = InstallDocker::run($this->createdServer);
- $this->emit('newMonitorActivity', $activity->id);
+ try {
+ $this->dockerInstallationStarted = true;
+ $activity = InstallDocker::run($this->createdServer);
+ $this->emit('installDocker');
+ $this->emit('newMonitorActivity', $activity->id);
+ } catch (\Throwable $e) {
+ $this->dockerInstallationStarted = false;
+ return handleError(error: $e, livewire: $this);
+ }
}
public function dockerInstalledOrSkipped()
{
diff --git a/app/Http/Livewire/Server/Form.php b/app/Http/Livewire/Server/Form.php
index ecf7c80cf..9d39ae4e4 100644
--- a/app/Http/Livewire/Server/Form.php
+++ b/app/Http/Livewire/Server/Form.php
@@ -53,11 +53,11 @@ class Form extends Component
$this->validateServer();
$this->server->settings->save();
}
- public function installDocker($supported_os_type)
+ public function installDocker()
{
$this->emit('installDocker');
$this->dockerInstallationStarted = true;
- $activity = InstallDocker::run($this->server, $supported_os_type);
+ $activity = InstallDocker::run($this->server);
$this->emit('newMonitorActivity', $activity->id);
}
public function checkLocalhostConnection()
@@ -83,21 +83,21 @@ class Form extends Component
}
$supported_os_type = $this->server->validateOS();
if (!$supported_os_type) {
- $install && $this->emit('error', 'Server OS is not supported.
Please use a supported OS.');
+ $install && $this->emit('error', 'Server OS type is not supported for automated installation. Please install Docker manually before continuing: documentation.');
return;
}
$dockerInstalled = $this->server->validateDockerEngine();
if ($dockerInstalled) {
$install && $this->emit('success', 'Docker Engine is installed.
Checking version.');
} else {
- $install && $this->installDocker($supported_os_type);
+ $install && $this->installDocker();
return;
}
$dockerVersion = $this->server->validateDockerEngineVersion();
if ($dockerVersion) {
$install && $this->emit('success', 'Docker Engine version is 23+.');
} else {
- $install && $this->installDocker($supported_os_type);
+ $install && $this->installDocker();
return;
}
} catch (\Throwable $e) {
diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php
index 1953f554d..071c252ff 100644
--- a/bootstrap/helpers/shared.php
+++ b/bootstrap/helpers/shared.php
@@ -106,14 +106,13 @@ function handleError(?Throwable $error = null, ?Livewire\Component $livewire = n
$message = null;
}
if ($customErrorMessage) {
- $error->message = $customErrorMessage . ' ' . $message;
$message = $customErrorMessage . ' ' . $message;
}
if (isset($livewire)) {
return $livewire->emit('error', $message);
}
- throw $error;
+ throw new Exception($message);
}
function get_route_parameters(): array
{
diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php
index 5cd5ce1c5..6f63290ca 100644
--- a/resources/views/layouts/base.blade.php
+++ b/resources/views/layouts/base.blade.php
@@ -1,5 +1,6 @@
+