2025-01-31 11:23:00 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Database\Seeders;
|
|
|
|
|
|
|
|
|
|
use App\Helpers\SslHelper;
|
|
|
|
|
use App\Models\Server;
|
|
|
|
|
use Illuminate\Database\Seeder;
|
|
|
|
|
|
|
|
|
|
class CaSslCertSeeder extends Seeder
|
|
|
|
|
{
|
|
|
|
|
public function run()
|
|
|
|
|
{
|
|
|
|
|
Server::chunk(200, function ($servers) {
|
|
|
|
|
foreach ($servers as $server) {
|
2025-10-09 15:00:05 +00:00
|
|
|
$existingCaCert = $server->sslCertificates()->where('is_ca_certificate', true)->first();
|
2025-01-31 11:23:00 +00:00
|
|
|
|
2025-02-07 17:28:58 +00:00
|
|
|
if (! $existingCaCert) {
|
2025-02-04 15:57:40 +00:00
|
|
|
$caCert = SslHelper::generateSslCertificate(
|
2025-01-31 11:23:00 +00:00
|
|
|
commonName: 'Coolify CA Certificate',
|
|
|
|
|
serverId: $server->id,
|
2025-02-03 20:42:28 +00:00
|
|
|
isCaCertificate: true,
|
2025-02-19 17:04:58 +00:00
|
|
|
validityDays: 10 * 365
|
2025-01-31 11:23:00 +00:00
|
|
|
);
|
2025-02-04 15:57:40 +00:00
|
|
|
} else {
|
2025-02-07 17:28:58 +00:00
|
|
|
$caCert = $existingCaCert;
|
2025-02-04 15:57:40 +00:00
|
|
|
}
|
|
|
|
|
$caCertPath = config('constants.coolify.base_config_path').'/ssl/';
|
2025-01-31 11:23:00 +00:00
|
|
|
|
2026-02-25 11:00:24 +00:00
|
|
|
$base64Cert = base64_encode($caCert->ssl_certificate);
|
|
|
|
|
|
2025-02-04 15:57:40 +00:00
|
|
|
$commands = collect([
|
|
|
|
|
"mkdir -p $caCertPath",
|
|
|
|
|
"chown -R 9999:root $caCertPath",
|
|
|
|
|
"chmod -R 700 $caCertPath",
|
2025-02-07 17:28:58 +00:00
|
|
|
"rm -rf $caCertPath/coolify-ca.crt",
|
2026-02-25 11:00:24 +00:00
|
|
|
"echo '{$base64Cert}' | base64 -d | tee $caCertPath/coolify-ca.crt > /dev/null",
|
2025-02-04 15:57:40 +00:00
|
|
|
"chmod 644 $caCertPath/coolify-ca.crt",
|
|
|
|
|
]);
|
2025-01-31 11:23:00 +00:00
|
|
|
|
2025-02-04 15:57:40 +00:00
|
|
|
remote_process($commands, $server);
|
2025-01-31 11:23:00 +00:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|