From 5400fd7ad58e14cd61251c652ab4d7c06b4f3c95 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Fri, 22 May 2026 17:30:24 +0200 Subject: [PATCH] KI-AGENT: Seafile Nebenpfade auf Hauptdomain routen --- README.md | 4 ++-- docker-compose.selfhost.yml | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5d367cb..dbb3a76 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ cp .env.example .env ``` Ersetze anschließend alle Platzhalter und passe mindestens `DOMAIN`, `CONTACT_EMAIL`, Datenbank-, Secret-, SMTP- und S3-Werte an. -Seafile läuft im Standard-Stack unter derselben Domain auf `/files`, zum Beispiel `https://app.example.com/files`. +Seafile läuft im Standard-Stack unter derselben Domain auf `/files`, zum Beispiel `https://app.example.com/files`. Die für Seafile nötigen technischen Nebenpfade wie `/media`, `/seafhttp` und `/seafdav` werden auf derselben Domain mitgeroutet. Alternativ kannst du die Konfiguration geführt erzeugen lassen: @@ -276,7 +276,7 @@ Die `FEDEO_BOOTSTRAP_*`-Werte sind für den ersten Start gedacht. Wenn `FEDEO_BO Die Selfhost-Konfiguration wird im Betriebsverzeichnis als `docker-compose.yml` abgelegt. Sie startet MinIO standardmäßig mit. Wenn du stattdessen AWS S3, Hetzner Object Storage, Backblaze B2 S3 oder einen anderen externen S3-Dienst nutzen willst, kannst du die Services `minio` und `createbuckets` entfernen und nur die entsprechenden S3-Umgebungsvariablen auf den externen Anbieter zeigen lassen. -Der Stack enthält zusätzlich Seafile CE als vorbereitetes File-Backend. Seafile läuft unter `https://DOMAIN/files`, nutzt MariaDB und Redis intern und ist damit ohne zusätzliche Subdomain erreichbar. FEDEO nutzt aktuell weiter S3 als Standard; `FEDEO_FILE_BACKEND=s3` bleibt deshalb gesetzt, bis das Backend die Seafile-Integration vollständig unterstützt. +Der Stack enthält zusätzlich Seafile CE als vorbereitetes File-Backend. Seafile läuft unter `https://DOMAIN/files`, nutzt MariaDB und Redis intern und ist damit ohne zusätzliche Subdomain erreichbar. Die technischen Seafile-Pfade `/media`, `/seafhttp` und `/seafdav` bleiben auf derselben Domain und werden vom Reverse Proxy an Seafile geleitet. FEDEO nutzt aktuell weiter S3 als Standard; `FEDEO_FILE_BACKEND=s3` bleibt deshalb gesetzt, bis das Backend die Seafile-Integration vollständig unterstützt. Der Matrix-Stack ist im Selfhost-Compose direkt enthalten. Er umfasst Synapse, eine eigene PostgreSQL-Datenbank für Synapse, Redis, `.well-known/matrix`, coturn, LiveKit, den LiveKit-JWT-Service und Element Web. Das einfache Selfhost-Setup nutzt nur `DOMAIN`: Synapse läuft unter `https://DOMAIN/_matrix`, Matrix-Well-Known unter `https://DOMAIN/.well-known/matrix`, LiveKit unter `https://DOMAIN/livekit/sfu`, der JWT-Service unter `https://DOMAIN/livekit/jwt` und Element Web unter `https://DOMAIN/element`. diff --git a/docker-compose.selfhost.yml b/docker-compose.selfhost.yml index e71b729..daf3a5e 100644 --- a/docker-compose.selfhost.yml +++ b/docker-compose.selfhost.yml @@ -166,10 +166,19 @@ services: start_period: 30s labels: - traefik.enable=true - - traefik.http.routers.fedeo-seafile.rule=Host(`${DOMAIN}`) && PathPrefix(`/files`) + - "traefik.http.middlewares.fedeo-seafile-accounts.redirectregex.regex=^https?://([^/]+)/accounts/(.*)" + - "traefik.http.middlewares.fedeo-seafile-accounts.redirectregex.replacement=https://$${1}/files/accounts/$${2}" + - traefik.http.middlewares.fedeo-seafile-accounts.redirectregex.permanent=false + - "traefik.http.routers.fedeo-seafile.rule=Host(`${DOMAIN}`) && (PathPrefix(`/files`) || PathPrefix(`/media`) || PathPrefix(`/seafhttp`) || PathPrefix(`/seafdav`))" - traefik.http.routers.fedeo-seafile.entrypoints=websecure - traefik.http.routers.fedeo-seafile.tls.certresolver=letsencrypt - traefik.http.routers.fedeo-seafile.priority=100 + - traefik.http.routers.fedeo-seafile-accounts.rule=Host(`${DOMAIN}`) && PathPrefix(`/accounts`) + - traefik.http.routers.fedeo-seafile-accounts.entrypoints=websecure + - traefik.http.routers.fedeo-seafile-accounts.tls.certresolver=letsencrypt + - traefik.http.routers.fedeo-seafile-accounts.middlewares=fedeo-seafile-accounts + - traefik.http.routers.fedeo-seafile-accounts.priority=110 + - traefik.http.routers.fedeo-seafile-accounts.service=noop@internal - traefik.http.services.fedeo-seafile.loadbalancer.server.port=80 - traefik.docker.network=fedeo_web networks: