Betrieb
Konfiguration (.env)
Nach jeder Änderung an der .env:
php artisan config:cache && php artisan queue:restart
Ohne das wirkt keine Änderung — der Config-Cache ignoriert die .env vollständig.
Zwei
.env-Syntaxregeln, die stumm zuschlagen. Ein#in einem nicht quotierten Wert schneidet ihn ab — ausGe#heimwirdGe, ohne Fehlermeldung. Ein Leerzeichen in einem nicht quotierten Wert ist ein Parse-Fehler, nach dem die Anwendung gar nicht mehr startet. Passwörter, Schlüssel und alles mit Sonderzeichen deshalb immer in doppelte Anführungszeichen setzen. Nachsehen statt annehmen:php artisan tinker --execute="var_dump(env('MAIL_PASSWORD'));"
Grundlagen
| Schlüssel | Bedeutung |
|---|---|
APP_ENV |
Im Betrieb production |
APP_DEBUG |
Im Betrieb false. true zeigt bei Fehlern interne Pfade und Konfigurationswerte |
APP_KEY |
Wird von key:generate gesetzt. Verlust macht verschlüsselte Sitzungen und das gespeicherte Mail-Passwort unlesbar |
APP_URL |
Vollständige öffentliche Adresse mit https://. Steht in allen Links in Mails |
APP_TIMEZONE |
Zeitzone für Anzeige und gespeicherte Zeitstempel. Standard Europe/Berlin. Nur vor dem ersten Produktivdatensatz ändern — siehe unten |
APP_NAME |
Nur Präfix für Cache-, Session- und Queue-Schlüssel — nicht der angezeigte Name |
FILESHARE_NAME |
Ausgangswert des angezeigten Namens; überschreibbar in Einstellungen → Allgemein |
DB_* |
Datenbank-Zugang |
SESSION_DRIVER |
database (Standard) |
SESSION_SECURE_COOKIE |
Auf einer Installation mit HTTPS true. Ohne diesen Schalter kann das Session-Cookie im Klartext übertragen werden |
SESSION_SAME_SITE |
lax (Standard) |
QUEUE_CONNECTION |
database und ein Worker. sync nur für Testinstallationen |
MAIL_* |
Nur Ausgangswerte. Sobald unter Einstellungen → E-Mail ein Zugang gepflegt ist, hat dieser Vorrang |
Fileshare-eigene Schlüssel
| Schlüssel | Standard | Bedeutung |
|---|---|---|
FILESHARE_MAX_UPLOAD_KB |
20971520 (20 GB) |
Obergrenze pro Datei in Kilobyte — das Limit der Anwendung, nicht von PHP. Der gechunkte Upload umgeht upload_max_filesize und post_max_size, diese Grenze aber nicht |
FILESHARE_ENCRYPTION_KEY |
— | Schlüssel für die Verschlüsselung gespeicherter Dateien. Ohne ihn ist die Funktion nicht verfügbar |
FILESHARE_ENCRYPT_UPLOADS |
false |
Belegt die Upload-Option „verschlüsselt ablegen" vor |
FILESHARE_DOWNLOAD_METHOD |
auto |
Ausgangswert; in Einstellungen → Auslieferung überschreibbar |
FILESHARE_X_ACCEL_INTERNAL |
/__protected/ |
Interne nginx-Location für die beschleunigte Auslieferung |
FILESHARE_EXTERNAL_FILE_EXPIRES_DAYS |
7 |
Gültigkeit von Dateien, die Fremde über einen Upload-Link ablegen |
FILESHARE_UPLOADER_IP_RETENTION_DAYS |
30 |
Aufbewahrung der IP-Adresse fremder Uploader |
FILESHARE_EXPIRED_RETENTION_DAYS |
3 |
Karenz, bis ein abgelaufener Link samt Datei gelöscht wird. 0 = beim nächsten Lauf, -1 = nie |
FILESHARE_DOWNLOAD_LOG_RETENTION_DAYS |
90 |
Aufbewahrung der Download-Protokolle. -1 = nie löschen |
FILESHARE_SEND_LOG_RETENTION_DAYS |
90 |
Aufbewahrung des Versandprotokolls. -1 = nie löschen. Sinnvollerweise derselbe Wert wie die Zeile darüber — sonst zeigt die Zeitleiste Abrufe ohne den zugehörigen Versand |
FILESHARE_UPDATE_CHECK |
true |
Einmal täglich beim Öffnen der Systemdaten nachsehen, ob es eine neuere Fassung gibt. false in abgeschotteten Netzen — die Abfrage verrät dem Anbieter, dass es diese Installation gibt |
FILESHARE_UPDATE_SOURCE |
GitLab-API des Projekts | Woher die Release-Liste kommt. Nur ändern, wenn du eine eigene Fassung pflegst |
Der Verschlüsselungsschlüssel
php -r "echo base64_encode(random_bytes(32)).PHP_EOL;"
Dieser Schlüssel ist nicht ersetzbar. Ist er verloren, sind alle verschlüsselt gespeicherten Dateien unlesbar — es gibt keinen Nebenweg. Sichere ihn getrennt von der Datenbank und getrennt vom Dateispeicher. Ein Backup, das Schlüssel und Daten am selben Ort hält, hebt den Zweck der Verschlüsselung auf.
APP_KEY und FILESHARE_ENCRYPTION_KEY nach dem ersten Produktiveinsatz nicht neu
erzeugen.
Zeitzone
Standard ist Europe/Berlin. Alle Zeitangaben dieser Anwendung sind für Menschen gedacht:
das Ablaufdatum auf der Download-Seite, das „gültig bis" in der Mail an den Empfänger, die
Zeitstempel in Übersicht und Systembericht. Eine Uhrzeit, die im Sommer zwei Stunden
danebenliegt, ist für den Empfänger falsch.
Für Installationen in anderen Zonen: APP_TIMEZONE=Europe/Vienna (oder Europe/Zurich
und so weiter).
Diese Entscheidung gehört an den Anfang. Zeitstempel werden in dieser Zone geschrieben und gelesen. Wird die Zone später gewechselt, verschieben sich die bereits gespeicherten Werte in ihrer Deutung: Ein Link, der „bis 23:59" gilt, gilt plötzlich bis 22:59 oder 00:59. Bei einer laufenden Installation ist das kein Konfigurations-, sondern ein Datenthema.
Quelle dieser Seite:
docs/betrieb/konfiguration.md
im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die
Markdown-Datei, nicht in diese Seite.