Zum Inhalt springen

Git-Deploy unter Cloudpanel

  • von

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:

  1. Mit Putty oder über den Terminal als root mit dem Server verbinden
  2. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert