feat: ein Name statt zwei, und PUBLIC_URL ist nur noch der Ursprung

fivecdn.d4rkst3r.de und fivemanage.d4rkst3r.de fallen weg -- wir betreiben
kein Fivemanage, also tragen unsere Adressen auch nicht dessen Namen.
Dashboard und API liegen an der Wurzel, die Dateien unter /f/.

Der Ein-Namen-Betrieb war bis jetzt nicht ausdrueckbar. Der Kommentar in
config.ts versprach "leer lassen, wenn alles unter einem Namen laufen
soll", aber optional() faellt bei leerem Wert auf den Host aus PUBLIC_URL
zurueck -- und dann gilt JEDE Anfrage als Anfrage an den Dateiwirt: kein
Dashboard, keine API, /health gibt 404 und die Anmeldung 405 "hier gibt
es nur Dateien". Nichts ist kaputt, und niemand kommt darauf. Deshalb ist
der Ein-Namen-Betrieb jetzt der Standard und der zweite Name die Ansage.

PUBLIC_URL ist nur noch der Ursprung; das /f haengt der Dienst selbst an.
Wer es mitschriebe, bekaeme Adressen mit /f/f/, und das faellt erst auf,
wenn das erste Bild fehlt. Praefix und Route haengen jetzt an derselben
Stelle (config.filePrefix), damit die zurueckgegebene Adresse und die
Route, die sie ausliefert, nicht auseinanderlaufen koennen.

Beide Betriebsarten durchgemessen: mit einem Namen kommt
.../f/vehicles/adder.png zurueck und liefert die Datei; mit gesetztem
FILES_HOST kommt sie ohne Praefix, liegt unter dem Dateihost, ist am
Dashboard-Namen zusaetzlich unter /f/ erreichbar, und unter dem Dateihost
gibt es weiterhin keine API. Welche Betriebsart laeuft, sagt der Dienst
in der zweiten Startzeile.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 15:58:20 +02:00
co-authored by Claude Opus 5
parent e173c3bf7b
commit 5edbe6c45f
5 changed files with 129 additions and 59 deletions
+6 -2
View File
@@ -127,5 +127,9 @@ export async function fileExists(path: string): Promise<boolean> {
}
}
/** Die oeffentliche Adresse einer Datei. */
export const publicUrlFor = (path: string) => `${config.publicUrl}/${path}`
/** Die oeffentliche Adresse einer Datei.
*
* filePrefix ist bei zwei Namen leer und bei einem "/f" — so kommt hier
* dieselbe Adresse heraus, unter der die Datei auch tatsaechlich liegt. */
export const publicUrlFor = (path: string) =>
`${config.publicUrl}${config.filePrefix}/${path}`