coolify/database/seeders/ProductionSeeder.php

127 lines
4.5 KiB
PHP
Raw Normal View History

2023-04-14 10:00:42 +02:00
<?php
namespace Database\Seeders;
2023-05-22 12:47:15 +02:00
use App\Data\ServerMetadata;
use App\Enums\ProxyStatus;
use App\Enums\ProxyTypes;
2023-05-02 14:12:15 +02:00
use App\Models\GithubApp;
use App\Models\GitlabApp;
2023-04-27 11:29:02 +02:00
use App\Models\InstanceSettings;
2023-04-14 10:00:42 +02:00
use App\Models\PrivateKey;
use App\Models\Server;
2023-05-24 14:56:41 +02:00
use App\Models\StandaloneDocker;
2023-04-14 10:00:42 +02:00
use Illuminate\Database\Seeder;
2023-06-14 08:51:30 +02:00
use Illuminate\Support\Facades\Process;
2023-04-14 10:00:42 +02:00
use Illuminate\Support\Facades\Storage;
class ProductionSeeder extends Seeder
{
public function run(): void
{
2023-04-27 11:29:02 +02:00
if (InstanceSettings::find(0) == null) {
InstanceSettings::create([
'id' => 0
]);
}
2023-05-08 09:33:10 +02:00
if (GithubApp::find(0) == null) {
GithubApp::create([
'id' => 0,
'name' => 'Public GitHub',
'api_url' => 'https://api.github.com',
'html_url' => 'https://github.com',
'is_public' => true,
'team_id' => 0,
]);
}
if (GitlabApp::find(0) == null) {
GitlabApp::create([
'id' => 0,
'name' => 'Public GitLab',
'api_url' => 'https://gitlab.com/api/v4',
'html_url' => 'https://gitlab.com',
'is_public' => true,
'team_id' => 0,
]);
}
2023-04-27 11:29:02 +02:00
2023-09-01 16:36:41 +02:00
if (config('app.name') !== 'Coolify Cloud') {
2023-08-28 15:03:44 +02:00
// Save SSH Keys for the Coolify Host
$coolify_key_name = "id.root@host.docker.internal";
$coolify_key = Storage::disk('ssh-keys')->get("{$coolify_key_name}");
2023-08-28 15:03:44 +02:00
if ($coolify_key) {
PrivateKey::updateOrCreate(
[
'id' => 0,
'name' => 'localhost\'s key',
'description' => 'The private key for the Coolify host machine (localhost).',
'team_id' => 0,
],
['private_key' => $coolify_key]
);
} else {
echo "No SSH key found for the Coolify host machine (localhost).\n";
echo "Please generate one and save it in /data/coolify/ssh/keys/{$coolify_key_name}\n";
echo "Then try to install again.\n";
exit(1);
}
// Add Coolify host (localhost) as Server if it doesn't exist
if (Server::find(0) == null) {
$server_details = [
2023-04-27 12:25:32 +02:00
'id' => 0,
2023-08-28 15:03:44 +02:00
'name' => "localhost",
'description' => "This is the server where Coolify is running on. Don't delete this!",
'user' => 'root',
'ip' => "host.docker.internal",
2023-04-27 12:25:32 +02:00
'team_id' => 0,
2023-08-28 15:03:44 +02:00
'private_key_id' => 0
];
$server_details['proxy'] = ServerMetadata::from([
'type' => ProxyTypes::TRAEFIK_V2->value,
'status' => ProxyStatus::EXITED->value
]);
$server = Server::create($server_details);
$server->settings->is_reachable = true;
$server->settings->is_usable = true;
$server->settings->save();
} else {
$server = Server::find(0);
$server->settings->is_reachable = true;
$server->settings->is_usable = true;
$server->settings->save();
}
if (StandaloneDocker::find(0) == null) {
StandaloneDocker::create([
'id' => 0,
'name' => 'localhost-coolify',
'network' => 'coolify',
'server_id' => 0,
]);
}
}
2023-04-27 11:29:02 +02:00
2023-06-14 08:51:30 +02:00
try {
$settings = InstanceSettings::get();
2023-06-14 11:54:00 +02:00
if (is_null($settings->public_ipv4)) {
$ipv4 = Process::run('curl -4s https://ifconfig.io')->output();
if ($ipv4) {
$ipv4 = trim($ipv4);
$ipv4 = filter_var($ipv4, FILTER_VALIDATE_IP);
$settings->update(['public_ipv4' => $ipv4]);
}
2023-06-14 08:57:17 +02:00
}
2023-06-14 11:54:00 +02:00
if (is_null($settings->public_ipv6)) {
$ipv6 = Process::run('curl -6s https://ifconfig.io')->output();
if ($ipv6) {
$ipv6 = trim($ipv6);
$ipv6 = filter_var($ipv6, FILTER_VALIDATE_IP);
$settings->update(['public_ipv6' => $ipv6]);
}
2023-06-14 08:51:30 +02:00
}
2023-09-11 17:36:30 +02:00
} catch (\Throwable $e) {
2023-06-14 08:51:30 +02:00
echo "Error: {$e->getMessage()}\n";
}
2023-04-14 10:00:42 +02:00
}
}