PUBLIC_URL umgestellt. FILES_HOST ist leer, der Dienst achtet also gar nicht
auf den Hostnamen, und in NPM stehen beide auf DEMSELBEN Host -- die drei
^~-Bloecke gelten damit fuer beide. Nachgemessen: unter beiden Namen health 200
und dasselbe Bild, bytegleich.
Nachgezogen:
7 Stellen in den Ressourcen d4rk_phone/config.lua (2)
d4rk_photostudio/config.upload.lua
d4rk_photostudio/config.upload.example.lua (2)
d4rk_photostudio/settings.json (2)
2 Watchdog-Eintraege im Bot inklusive Anzeigename
16 Stellen in Doku/Werkzeugen README, docs/API.md, Home.md,
npm-advanced.conf, proxy-pruefen.ps1,
uebernehmen.ps1, .env.example
Die Freigabe-Links zeigen von selbst auf den neuen Namen -- sie werden aus
PUBLIC_URL gebaut und stehen nirgends gespeichert. Die alten funktionieren
weiter.
DIE ROADMAP BEHAELT DEN ALTEN NAMEN, an sechzehn Stellen und mit Absicht: dort
steht die Geschichte, warum er ueberhaupt "fivemanage" hiess. Sie zu ersetzen
machte aus einer Begruendung Unsinn.
ZWEI DINGE, DIE DABEI AUFFIELEN.
Cloudflare stand vor dem neuen Namen und brach die WebP-Auslieferung: der
Cache-Schluessel kennt Accept nicht, also bekam ein Aufrufer OHNE
"Accept: image/webp" die WebP-Fassung aus dem Zwischenspeicher -- unsere
eigenen Bytes unter einem .png-Namen. Nach dem Umstellen auf DNS-only gemessen
und in Ordnung: ohne Accept image/png 12295 B, mit Accept image/webp 2270 B,
Server: openresty, vary: Accept, dreimal hintereinander stabil.
Und der Lua-Syntaxtest schlug bei d4rk_phone/config.lua fehl -- an Zeile 93,
`customModel = \`prop_player_phone_02\``. Das ist kein Schaden, sondern eine
CfxLua-Erweiterung: Backticks sind dort ein joaat-Hash und in Standard-Lua 5.4
ein Syntaxfehler. 85 davon stecken in der Datei. luac -p taugt fuer
CfxLua-Dateien also nicht; geprueft wurde stattdessen, dass genau die zwei
URL-Zeilen anders sind.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# d4rk_media
|
|
|
|
Eigener Medien-Dienst für alle FiveM-Ressourcen: Dateien annehmen, ablegen,
|
|
ausliefern, in einem Dashboard verwalten.
|
|
|
|
**Läuft unter** https://media.d4rkst3r.de — Dashboard und API an der
|
|
Wurzel, Dateien unter `/f/`.
|
|
|
|
---
|
|
|
|
## Wo was steht
|
|
|
|
| | |
|
|
|---|---|
|
|
| **[API](API)** | Endpunkte, Kopfzeilen, Fehlermeldungen, Grenzen — und was beim Anbinden schiefgeht |
|
|
| `ROADMAP.md` im Repo | Zuschnitt, Stand, Reihenfolge, offene Entscheidungen |
|
|
| `CLAUDE.md` im Repo | die Arbeitsweise: prüfen statt raten |
|
|
|
|
Das Warum einer Änderung steht in der Commit-Nachricht, nicht nur im Diff.
|
|
|
|
---
|
|
|
|
## Der Zuschnitt in vier Sätzen
|
|
|
|
**Ein Container.** SQLite statt PostgreSQL, Dateien auf einer Platte statt
|
|
MinIO. Das ist nicht die kleine Lösung, sondern die, die man nicht pflegt.
|
|
|
|
**Der Pfad ist der Schlüssel.** `vehicles/adder.webp` bleibt
|
|
`vehicles/adder.webp`, damit die Vorlage im Handy `{model}.webp` lauten kann.
|
|
Die Adressen stehen nirgends in der Datenbank — sie werden bei jeder Antwort
|
|
neu gebaut.
|
|
|
|
**Jeder Knopf gibt Rückmeldung, auch der erfolgreiche.** Das ist der Fehler, an
|
|
dem der Fivemanage-Anlauf gescheitert ist: ein Knopf ohne Antwort sieht aus wie
|
|
ein kaputter Knopf, und das Ergebnis waren neunzehn gleichnamige
|
|
Organisationen.
|
|
|
|
**Nicht nachgebaut wird das Logging.** Dafür schleppt Fivemanage ClickHouse
|
|
mit, und genau da ist der Wartungsaufwand echt.
|
|
|
|
---
|
|
|
|
## Was der Dienst kann
|
|
|
|
- **Hochladen** über die Skript-API (Token) oder aus dem Dashboard (Sitzung) —
|
|
Bilder, Videos, Ton, PDF
|
|
- **Ausliefern** mit ETag, Bereichsanfragen und Vorschaubildern
|
|
- **Galerie** mit Ordnerbaum, Suche, Filter nach Medienart, Sortierung,
|
|
Mehrfachauswahl, Verschieben und Löschen
|
|
- **Verlauf**: wer hat wann was abgelegt, ersetzt, verschoben oder gelöscht
|
|
- **Anmeldung** über Discord (Rolle auf dem Server) oder Passwort
|
|
- **Sicherung** täglich, geprüft, in die Nextcloud
|
|
|
|
---
|
|
|
|
## Wenn etwas nicht geht
|
|
|
|
1. **Ein Bild ändert sich nicht.** Der Proxy hielt Bilder früher 30 Minuten
|
|
fest. Behoben — siehe [API](API), Abschnitt *Zwischenspeicher des Proxys*.
|
|
2. **Die Anmeldung sagt 200, aber man ist nicht angemeldet.** `NODE_ENV=production`
|
|
setzt das Cookie auf `Secure`; über eine nackte `http`-Adresse verwirft der
|
|
Browser es still. Über den Proxy mit TLS gibt es das Problem nicht.
|
|
3. **Ein Upload gibt 400 mit „ist als Pfadteil nicht erlaubt".** Jeder Teil
|
|
eines Pfades muss mit einem Buchstaben oder einer Ziffer beginnen. Ein
|
|
führender Unterstrich fällt durch.
|
|
4. **Ein Fehler ohne Text.** Sollte es nicht mehr geben: der Dienst hat eine
|
|
Auffanglinie, die auch bei unerwarteten Fehlern einen Satz mitgibt.
|