chore: Update SSH key generation in install.sh script

This commit is contained in:
Andras Bacsai
2024-09-20 11:04:26 +02:00
parent f1881d5c35
commit be8573c828
3 changed files with 78 additions and 60 deletions

View File

@@ -8,18 +8,18 @@ class PopulateSshKeysAndClearMuxDirectory extends Migration
{
public function up()
{
Storage::disk('ssh-keys')->deleteDirectory('');
Storage::disk('ssh-keys')->makeDirectory('');
// Storage::disk('ssh-keys')->deleteDirectory('');
// Storage::disk('ssh-keys')->makeDirectory('');
Storage::disk('ssh-mux')->deleteDirectory('');
Storage::disk('ssh-mux')->makeDirectory('');
PrivateKey::chunk(100, function ($keys) {
foreach ($keys as $key) {
$key->storeInFileSystem();
if ($key->id === 0) {
Storage::disk('ssh-keys')->put('id.root@host.docker.internal', $key->private_key);
}
}
});
// Storage::disk('ssh-mux')->deleteDirectory('');
// Storage::disk('ssh-mux')->makeDirectory('');
// PrivateKey::chunk(100, function ($keys) {
// foreach ($keys as $key) {
// $key->storeInFileSystem();
// if ($key->id === 0) {
// Storage::disk('ssh-keys')->put('id.root@host.docker.internal', $key->private_key);
// }
// }
// });
}
}

View File

@@ -64,27 +64,67 @@ class ProductionSeeder extends Seeder
'team_id' => 0,
]);
}
// Add Coolify host (localhost) as Server if it doesn't exist
if (Server::find(0) == null) {
$server_details = [
'id' => 0,
'name' => 'localhost',
'description' => "This is the server where Coolify is running on. Don't delete this!",
'user' => 'root',
'ip' => 'host.docker.internal',
'team_id' => 0,
'private_key_id' => 0,
];
$server_details['proxy'] = ServerMetadata::from([
'type' => ProxyTypes::TRAEFIK->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,
]);
}
if (! isCloud() && config('coolify.is_windows_docker_desktop') == false) {
echo "Checking localhost key.\n";
$coolify_key_name = '@host.docker.internal';
$ssh_keys_directory = Storage::disk('ssh-keys')->files();
$coolify_key = collect($ssh_keys_directory)->firstWhere(fn ($item) => str($item)->contains($coolify_key_name));
$found = PrivateKey::find(0);
if ($found) {
echo 'Private Key found in database.';
} else {
$coolify_key_name = 'id.root@host.docker.internal';
$coolify_key = Storage::disk('ssh-keys')->get("{$coolify_key_name}");
if ($coolify_key) {
PrivateKey::create(
[
'id' => 0,
'team_id' => 0,
'name' => 'localhost\'s key',
'description' => 'The private key for the Coolify host machine (localhost).',
'private_key' => $coolify_key,
]
);
echo "SSH key found for the Coolify host machine (localhost).\n";
Storage::disk('ssh-keys')->delete($coolify_key);
}
} else {
if ($coolify_key) {
$coolify_key = Storage::disk('ssh-keys')->get($coolify_key);
$user = str($coolify_key)->before('@')->after('id.');
PrivateKey::create([
'id' => 0,
'team_id' => 0,
'name' => 'localhost\'s key',
'description' => 'The private key for the Coolify host machine (localhost).',
'private_key' => $coolify_key,
]);
$server->update(['user' => $user]);
echo "SSH key found for the Coolify host machine (localhost).\n";
Storage::disk('ssh-keys')->delete($coolify_key);
} else {
PrivateKey::create(
[
@@ -101,39 +141,6 @@ class ProductionSeeder extends Seeder
}
}
// Add Coolify host (localhost) as Server if it doesn't exist
if (Server::find(0) == null) {
$server_details = [
'id' => 0,
'name' => 'localhost',
'description' => "This is the server where Coolify is running on. Don't delete this!",
'user' => 'root',
'ip' => 'host.docker.internal',
'team_id' => 0,
'private_key_id' => 0,
];
$server_details['proxy'] = ServerMetadata::from([
'type' => ProxyTypes::TRAEFIK->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,
]);
}
}
if (config('coolify.is_windows_docker_desktop')) {
PrivateKey::updateOrCreate(