mirror of
https://github.com/ershisan99/coolify.git
synced 2026-01-04 12:33:47 +00:00
Compare commits
5 Commits
v4.0.0-bet
...
4.0.0-beta
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abdb8074b1 | ||
|
|
157da798dd | ||
|
|
9c5501326e | ||
|
|
3ea462efc9 | ||
|
|
f77df5b732 |
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Actions\Proxy;
|
||||
|
||||
use App\Enums\ProxyStatus;
|
||||
use App\Enums\ProxyTypes;
|
||||
use App\Models\Server;
|
||||
use Illuminate\Support\Str;
|
||||
use Spatie\Activitylog\Models\Activity;
|
||||
@@ -10,6 +12,15 @@ class StartProxy
|
||||
{
|
||||
public function __invoke(Server $server, bool $async = true): Activity|string
|
||||
{
|
||||
$proxyType = data_get($server,'proxy.type');
|
||||
if ($proxyType === 'none') {
|
||||
return 'OK';
|
||||
}
|
||||
if (is_null($proxyType)) {
|
||||
$server->proxy->type = ProxyTypes::TRAEFIK_V2->value;
|
||||
$server->proxy->status = ProxyStatus::EXITED->value;
|
||||
$server->save();
|
||||
}
|
||||
$proxy_path = get_proxy_path();
|
||||
$networks = collect($server->standaloneDockers)->map(function ($docker) {
|
||||
return $docker['network'];
|
||||
@@ -38,12 +49,12 @@ class StartProxy
|
||||
"echo '####### Pulling docker image...'",
|
||||
'docker compose pull',
|
||||
"echo '####### Stopping existing coolify-proxy...'",
|
||||
'docker compose down -v --remove-orphans',
|
||||
"command -v lsof >/dev/null && lsof -nt -i:80 | xargs -r kill -9",
|
||||
"command -v lsof >/dev/null && lsof -nt -i:443 | xargs -r kill -9",
|
||||
"command -v fuser >/dev/null && fuser -k 80/tcp",
|
||||
"command -v fuser >/dev/null && fuser -k 443/tcp",
|
||||
"docker compose down -v --remove-orphans > /dev/null 2>&1 || true",
|
||||
"command -v fuser >/dev/null || command -v lsof >/dev/null || echo '####### Could not kill existing processes listening on port 80 & 443. Please stop the process holding these ports...'",
|
||||
"command -v lsof >/dev/null && lsof -nt -i:80 | xargs -r kill -9 || true",
|
||||
"command -v lsof >/dev/null && lsof -nt -i:443 | xargs -r kill -9 || true",
|
||||
"command -v fuser >/dev/null && fuser -k 80/tcp || true",
|
||||
"command -v fuser >/dev/null && fuser -k 443/tcp || true",
|
||||
"systemctl disable nginx > /dev/null 2>&1 || true",
|
||||
"systemctl disable apache2 > /dev/null 2>&1 || true",
|
||||
"systemctl disable apache > /dev/null 2>&1 || true",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Exceptions;
|
||||
|
||||
use App\Models\InstanceSettings;
|
||||
use App\Models\User;
|
||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
use Sentry\Laravel\Integration;
|
||||
use Sentry\State\Scope;
|
||||
@@ -56,8 +57,8 @@ class Handler extends ExceptionHandler
|
||||
function (Scope $scope) {
|
||||
$scope->setUser(
|
||||
[
|
||||
'id' => config('sentry.server_name'),
|
||||
'email' => auth()->user()->email
|
||||
'email' => auth()->user()->email,
|
||||
'instanceAdmin' => User::find(0)->email
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
|
||||
if (!$this->createdServer) {
|
||||
return $this->emit('error', 'Localhost server is not found. Something went wrong during installation. Please try to reinstall or contact support.');
|
||||
}
|
||||
return $this->validateServer();
|
||||
return $this->validateServer('localhost');
|
||||
} elseif ($type === 'remote') {
|
||||
$this->privateKeys = PrivateKey::ownedByCurrentTeam(['name'])->where('id', '!=', 0)->get();
|
||||
if ($this->privateKeys->count() > 0) {
|
||||
@@ -185,7 +185,7 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
|
||||
|
||||
$this->validateServer();
|
||||
}
|
||||
public function validateServer()
|
||||
public function validateServer(?string $type = null)
|
||||
{
|
||||
try {
|
||||
$customErrorMessage = "Server is not reachable:";
|
||||
@@ -197,24 +197,30 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
|
||||
throw new \Exception('No Docker Engine or older than 23 version installed.');
|
||||
}
|
||||
$customErrorMessage = "Cannot create Server or Private Key. Please try again.";
|
||||
$createdPrivateKey = PrivateKey::create([
|
||||
'name' => $this->privateKeyName,
|
||||
'description' => $this->privateKeyDescription,
|
||||
'private_key' => $this->privateKey,
|
||||
'team_id' => currentTeam()->id
|
||||
]);
|
||||
$server = Server::create([
|
||||
'name' => $this->remoteServerName,
|
||||
'ip' => $this->remoteServerHost,
|
||||
'port' => $this->remoteServerPort,
|
||||
'user' => $this->remoteServerUser,
|
||||
'description' => $this->remoteServerDescription,
|
||||
'private_key_id' => $createdPrivateKey->id,
|
||||
'team_id' => currentTeam()->id,
|
||||
]);
|
||||
$server->settings->is_reachable = true;
|
||||
$server->settings->is_usable = true;
|
||||
$server->settings->save();
|
||||
if ($type !== 'localhost') {
|
||||
$createdPrivateKey = PrivateKey::create([
|
||||
'name' => $this->privateKeyName,
|
||||
'description' => $this->privateKeyDescription,
|
||||
'private_key' => $this->privateKey,
|
||||
'team_id' => currentTeam()->id
|
||||
]);
|
||||
$server = Server::create([
|
||||
'name' => $this->remoteServerName,
|
||||
'ip' => $this->remoteServerHost,
|
||||
'port' => $this->remoteServerPort,
|
||||
'user' => $this->remoteServerUser,
|
||||
'description' => $this->remoteServerDescription,
|
||||
'private_key_id' => $createdPrivateKey->id,
|
||||
'team_id' => currentTeam()->id,
|
||||
]);
|
||||
$server->settings->is_reachable = true;
|
||||
$server->settings->is_usable = true;
|
||||
$server->settings->save();
|
||||
} else {
|
||||
$this->createdServer->settings->update([
|
||||
'is_reachable' => true,
|
||||
]);
|
||||
}
|
||||
$this->getProxyType();
|
||||
} catch (\Throwable $e) {
|
||||
return handleError(error: $e, customErrorMessage: $customErrorMessage, livewire: $this);
|
||||
|
||||
@@ -41,17 +41,15 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
|
||||
}
|
||||
|
||||
private function checkServerConnection() {
|
||||
ray("Checking server connection to {$this->server->ip}");
|
||||
$uptime = instant_remote_process(['uptime'], $this->server, false);
|
||||
if (!is_null($uptime)) {
|
||||
ray('Server is up');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public function handle(): void
|
||||
{
|
||||
try {
|
||||
ray()->clearAll();
|
||||
// ray()->clearAll();
|
||||
$serverUptimeCheckNumber = 0;
|
||||
$serverUptimeCheckNumberMax = 5;
|
||||
while (true) {
|
||||
@@ -216,12 +214,10 @@ class ContainerStatusJob implements ShouldQueue, ShouldBeEncrypted
|
||||
$isPR = Str::startsWith(data_get($value, 'Name'), "/$uuid");
|
||||
$isPR = Str::contains(data_get($value, 'Name'), "-pr-");
|
||||
if ($isPR) {
|
||||
ray('is pr');
|
||||
return false;
|
||||
}
|
||||
return $value;
|
||||
})->first();
|
||||
ray($foundContainer);
|
||||
if ($foundContainer) {
|
||||
$containerStatus = data_get($foundContainer, 'State.Status');
|
||||
$databaseStatus = data_get($application, 'status');
|
||||
|
||||
@@ -7,8 +7,7 @@ return [
|
||||
|
||||
// The release version of your application
|
||||
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
|
||||
'release' => '4.0.0-beta.38',
|
||||
'server_name' => env('APP_ID', 'coolify'),
|
||||
'release' => '4.0.0-beta.40',
|
||||
// When left empty or `null` the Laravel environment will be used
|
||||
'environment' => config('app.env'),
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<?php
|
||||
|
||||
return '4.0.0-beta.38';
|
||||
return '4.0.0-beta.40';
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
<div class="">The destination server / network where your application will be deployed to.</div>
|
||||
<div class="py-4 ">
|
||||
<p>Server: {{ data_get($destination, 'server.name') }}</p>
|
||||
<p>Destination Network: {{ $destination->network }}</p>
|
||||
<p>Destination Network: {{ data_get($destination, 'server.network') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"version": "3.12.36"
|
||||
},
|
||||
"v4": {
|
||||
"version": "4.0.0-beta.38"
|
||||
"version": "4.0.0-beta.40"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user