Erste Schritte

GitLab CI/CD

Alternative zu Schritt 1 der Installation. Die Pipeline in .gitlab-ci.yml überträgt den Quellcode per rsync und installiert die PHP-Abhängigkeiten.

Sie legt weder Datenbank noch Geheimnisse an. Diese Werte gehören nicht ins Repository und werden wegen .rsync-exclude auch nicht übertragen.

Einmalig vor dem ersten Lauf

  1. Datenbank und Datenbankbenutzer beim Hoster anlegen.

  2. Das Zielverzeichnis für den Deployment-Benutzer zugänglich machen; es darf leer sein.

  3. Im Zielverzeichnis eine produktive .env anlegen. Mindestens:

    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://files.example.org
    APP_KEY=base64:<zufaelliger-32-byte-schluessel>
    DB_CONNECTION=mysql
    DB_HOST=<datenbank-host>
    DB_PORT=3306
    DB_DATABASE=<datenbankname>
    DB_USERNAME=<datenbankbenutzer>
    DB_PASSWORD=<datenbankpasswort>
    FILESHARE_ENCRYPTION_KEY=<base64-32-byte-schluessel>
    
  4. Die CI-Variablen setzen (Settings → CI/CD → Variables):

    Variable Inhalt
    SERVER_USER Benutzer auf dem Zielserver
    SERVER_IP Host oder IP des Zielservers
    SERVER_PATH Zielverzeichnis, etwa /var/www/fileshare
    SERVER_PORT SSH-Port
    SSH_PRIVATE_KEY Typ Variable, maskiert, Base64-kodierter privater Schlüssel
    SSH_KNOWN_HOSTS Typ File, Ausgabe von ssh-keyscan -p <port> <host>

    Den Host-Key vorab lokal ermitteln und prüfen, nie erst in der Pipeline per ssh-keyscan beziehen.

Was die Pipeline tut

Sie fragt die Anwendung selbst, ob am Ziel schon eingerichtet ist (php artisan fileshare:installed, Exit-Code 0 oder 1). Eine vorhandene .env sagt nichts darüber, ob je migriert wurde.

Zustand des Ziels Was passiert
eingerichtet Wartungsmodus, Dateien übertragen, composer install, migrieren, Caches schreiben, Queue neu starten, Wartungsmodus beenden
frisch Dateien übertragen, composer installkeine Migration, kein Cache. Der Job endet mit einer Handlungsaufforderung und wird als Warnung (orange) angezeigt

Der frische Fall ist bewusst keine Fehlermeldung: Die Übertragung hat funktioniert, es fehlt nur die Einrichtung. Danach einmal php artisan fileshare:install auf dem Server oder /install im Browser; jedes weitere Deployment läuft den vollständigen Weg.

Vor dem Übertragen prüft die Pipeline, ob das Zielverzeichnis beschreibbar ist und ob php (mindestens 8.3) und composer im PATH liegen.

APP_KEY und FILESHARE_ENCRYPTION_KEY nach dem ersten Produktiveinsatz nicht neu erzeugen — siehe Konfiguration.

Quelle dieser Seite: docs/installation/pipeline.md im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die Markdown-Datei, nicht in diese Seite.