Installation mit Docker
Dies ist die maßgebliche Installationsanleitung. Sie führt dich von einer Maschine mit Docker zu einer laufenden KolleK-Instanz mit deinem ersten erstellten Konto. Rechne mit ungefähr fünfzehn Minuten für das Ganze.
Die Datei docker/README.md im Repository dokumentiert denselben Ablauf aus Sicht des Betreibers und wird synchron zum Code gehalten. Falls diese Seite und diese Datei sich jemals widersprechen, vertraue docker/README.md.
Bevor du beginnst
Du brauchst:
- Eine Maschine mit Docker Engine 24 oder neuer und dem Compose-Plugin (
docker compose). - Eine Kopie des KolleK-Repositorys, geklont oder heruntergeladen.
- Zehn Minuten Aufmerksamkeit für die Umgebungsdatei. Dort passieren die Fehler, die wirklich zählen.
Mehr nicht. Der Stack bringt seine eigene MySQL-Datenbank mit, und Sessions, Cache und die Warteschlange werden über die Datenbank abgewickelt, es gibt also keinen Redis zu installieren.
Installation
Kopiere im Repository-Root die Docker-Umgebungsvorlage:
cp .env.docker.example .env
Diese Datei steuert den gesamten Stack. Du bearbeitest sie in den nächsten beiden Schritten.
Generiere einen Schlüssel und kopiere die Ausgabe:
docker compose run --rm app php artisan key:generate --show
Füge den ausgegebenen Wert in .env als APP_KEY ein. Dieser Schlüssel verschlüsselt deine Daten im Ruhezustand. Lege ihn jetzt fest und ändere ihn später nie mehr. Ein geänderter Schlüssel macht jedes verschlüsselte Feld und jede Session dauerhaft unlesbar. Lies Der Anwendungsschlüssel und Verschlüsselung, bevor du weitermachst, falls du das noch nicht getan hast.
Ändere in .env DB_PASSWORD und DB_ROOT_PASSWORD von ihren Platzhalterwerten und setze APP_URL auf die Adresse, die deine Benutzer aufrufen werden. Der Standardwert ist http://localhost:8000, was für einen ersten Versuch auf deiner eigenen Maschine passt.
Baue und starte alles:
docker compose up -d --build
Der erste Build dauert ein paar Minuten. Wenn er fertig ist, wendet der Web-Container automatisch die Datenbankmigrationen an, und die Instanz ist unter deiner APP_URL erreichbar.
Öffne die URL in einem Browser und nutze die Registrierungsseite, um dich anzumelden. Dadurch werden dein persönlicher Benutzer und dein erstes Konto angelegt, genau wie in Dein Konto erstellen beschrieben.
::screenshot{label="Registrierungsseite einer frisch installierten Instanz"}
Wenn du das instanzweite Administrationspanel nutzen möchtest, gewähre deinem Benutzer das Flag:
docker compose exec app php artisan kollek:make-instance-administrator you@example.com
Was das gibt und was nicht, erfährst du unter Instanzadministrator-Zugriff gewähren.
Was tatsächlich läuft
Der Compose-Stack startet vier Container. Drei davon führen dasselbe KolleK-Image in unterschiedlichen Rollen aus, gesteuert über die Umgebungsvariable CONTAINER_ROLE:
- app stellt die Webanwendung über nginx und PHP bereit. Es ist der einzige Container, der Datenbankmigrationen ausführt, und das tut er beim Start.
- queue verarbeitet Hintergrundaufgaben (E-Mail, Zustellungen, Protokollierung) aus den Warteschlangen
high,defaultundlow. - scheduler löst die täglichen Wartungsaufgaben aus, die in Geplante Wartungsaufgaben beschrieben sind.
Der vierte Container ist mysql mit MySQL 8.4.
Deine Daten liegen in zwei benannten Docker-Volumes, unabhängig von den Containern: db-data für die Datenbank und storage-data für hochgeladene Fotos und Dokumente. Container können jederzeit neu gebaut und ersetzt werden, die Volumes bleiben bestehen.
Alle drei Anwendungscontainer müssen dieselbe .env verwenden, vor allem denselben APP_KEY. Die Compose-Datei richtet das bereits so ein. Behalte das bei, wenn du das Setup anpasst.
Wenn du Migrationen lieber selbst ausführen möchtest
Standardmäßig migriert der Web-Container die Datenbank bei jedem Start, was Updates weitgehend automatisch macht. Wenn du manuelle Kontrolle möchtest, setze RUN_MIGRATIONS=false in .env und führe Migrationen dann bei Bedarf selbst aus:
docker compose exec app php artisan migrate --force
Wie es weitergeht
- Gehe Deine Instanz konfigurieren durch, um zu verstehen, was
.envsonst noch steuert. - Bring E-Mails zum Laufen in E-Mail-Zustellung einrichten. Bis dahin landen Einladungen und Anmeldelinks in einer Log-Datei statt in einem Postfach.
- Richte Backups ein, bevor du echte Daten einspielst.