Aus gegebenen Anlass brauche ich die Möglichkeit unter Cloudpanel automatisch von einem Git-Repository zu deployen. Bedauerlicherweise bringt Cloudpanel hier keine Möglichkeit über das GUI und so müssen wir das anders lösen.
Hier die Anleitung zum Thema:
- Mit Putty oder über den Terminal als root mit dem Server verbinden
- In den Web-User der Seite (CloudPanel erstellt hier normalerweise einen User (sieht man im GUI)
sudo su - webusername 3. Jetzt erstellen wir einen SSH-Schlüssel. (einfach 3x mit Enter bestätigen)
ssh-keygen -t ed25519 -C "cloudpanel-git" 4. Schlüssel anzeigen und kopieren:
cat ~/.ssh/id_ed25519.pub 5. Schlüssel bei Github eintragen
Dazu ins Repository wechseln und unter Settings -> Deploy Keys -> Add deploy key
Als Titel sowas wie „CloudPanel Server“ und dann den kopierten Code von oben einfügen und „Add Key“
6. Jetzt initialisieren wir Git auf dem Server
cd ~/htdocs/unsere-domain.de Wenn der Ornder nicht leer ist, dann sollten wir den Inhalt löschen
rm -rf * Jetzt verbinden wir das Repository
git init
git remote add origin git@github.com:username/gitname.git
git pull origin main Nun wollen wir noch einen automatischen Webhook einrichten und erstellen im Dokumenten-Root eine Datei deploy.php
nano public/deploy.php Folgenden Code nutzen wir:
<?php
$secret = 'geheimes-passwort-oder-so-123'; // Das sollte idealerweise geändert werden
if ($_GET['token'] !== $secret) { die('Kein Zugriff'); }
exec('git pull origin main 2>&1', $output);
echo "<pre>" . implode("\n", $output) . "</pre>";
?> Speichern und bei GitHub unter Settings -> Webhooks -> Add webhook ergänzen. Als Payload-URL geben wir https://unsere-domain.de/deploy.php?token=geheimes-passwort-oder-so-123 ein und wählen Content type application/json.
Ab jetzt sollte eine Änderung umgehend auch auf den Server übertragen werden.