From 69874742f8d88d5769c771ef1547aa6b0a852539 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Fri, 22 May 2026 17:11:39 +0200 Subject: [PATCH] KI-AGENT: Seafile unter Hauptdomain bereitstellen --- .env.example | 8 ++++---- README.md | 9 +++++---- docker-compose.selfhost.yml | 8 +++++--- scripts/selfhost-setup.sh | 6 +++--- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 1931ba0..2b5e310 100644 --- a/.env.example +++ b/.env.example @@ -42,11 +42,11 @@ S3_BUCKET=fedeo # genutzt werden. FEDEO_FILE_BACKEND=s3 -# Seafile CE läuft bewusst auf einer eigenen Subdomain, damit Desktop-Clients, -# SeaDrive und WebDAV ohne Pfad-Sonderfälle funktionieren. -SEAFILE_SERVER_HOSTNAME=files.app.example.com +# Seafile CE läuft im Standard-Stack unter der Hauptdomain auf /files. +SEAFILE_SERVER_HOSTNAME=app.example.com SEAFILE_SERVER_PROTOCOL=https -SEAFILE_BASE_URL=https://files.app.example.com +SEAFILE_SITE_ROOT=/files/ +SEAFILE_BASE_URL=https://app.example.com/files SEAFILE_INTERNAL_URL=http://seafile:80 SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest SEAFILE_DB_IMAGE=mariadb:10.11 diff --git a/README.md b/README.md index 065b36e..5d367cb 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. -Wenn Seafile genutzt werden soll, muss zusätzlich `SEAFILE_SERVER_HOSTNAME` als eigene Subdomain auf den Server zeigen, zum Beispiel `files.app.example.com`. +Seafile läuft im Standard-Stack unter derselben Domain auf `/files`, zum Beispiel `https://app.example.com/files`. Alternativ kannst du die Konfiguration geführt erzeugen lassen: @@ -208,9 +208,10 @@ S3_SECRET_KEY=change-this-minio-password S3_BUCKET=fedeo FEDEO_FILE_BACKEND=s3 -SEAFILE_SERVER_HOSTNAME=files.app.example.com +SEAFILE_SERVER_HOSTNAME=app.example.com SEAFILE_SERVER_PROTOCOL=https -SEAFILE_BASE_URL=https://files.app.example.com +SEAFILE_SITE_ROOT=/files/ +SEAFILE_BASE_URL=https://app.example.com/files SEAFILE_INTERNAL_URL=http://seafile:80 SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest SEAFILE_DB_IMAGE=mariadb:10.11 @@ -275,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 `SEAFILE_SERVER_HOSTNAME`, nutzt MariaDB und Redis intern und ist für Desktop-Sync, SeaDrive und WebDAV bewusst auf eine eigene Subdomain ausgelegt. 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. 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 13214f1..4499355 100644 --- a/docker-compose.selfhost.yml +++ b/docker-compose.selfhost.yml @@ -142,9 +142,9 @@ services: TIME_ZONE: ${TIME_ZONE:-Europe/Berlin} INIT_SEAFILE_ADMIN_EMAIL: ${INIT_SEAFILE_ADMIN_EMAIL} INIT_SEAFILE_ADMIN_PASSWORD: ${INIT_SEAFILE_ADMIN_PASSWORD} - SEAFILE_SERVER_HOSTNAME: ${SEAFILE_SERVER_HOSTNAME} + SEAFILE_SERVER_HOSTNAME: ${SEAFILE_SERVER_HOSTNAME:-${DOMAIN}} SEAFILE_SERVER_PROTOCOL: ${SEAFILE_SERVER_PROTOCOL:-https} - SITE_ROOT: ${SEAFILE_SITE_ROOT:-/} + SITE_ROOT: ${SEAFILE_SITE_ROOT:-/files/} NON_ROOT: ${SEAFILE_NON_ROOT:-false} JWT_PRIVATE_KEY: ${SEAFILE_JWT_PRIVATE_KEY} SEAFILE_LOG_TO_STDOUT: ${SEAFILE_LOG_TO_STDOUT:-true} @@ -166,9 +166,11 @@ services: start_period: 30s labels: - traefik.enable=true - - traefik.http.routers.fedeo-seafile.rule=Host(`${SEAFILE_SERVER_HOSTNAME}`) + - traefik.http.middlewares.fedeo-seafile-strip.stripprefix.prefixes=/files + - traefik.http.routers.fedeo-seafile.rule=Host(`${DOMAIN}`) && PathPrefix(`/files`) - traefik.http.routers.fedeo-seafile.entrypoints=websecure - traefik.http.routers.fedeo-seafile.tls.certresolver=letsencrypt + - traefik.http.routers.fedeo-seafile.middlewares=fedeo-seafile-strip - traefik.http.services.fedeo-seafile.loadbalancer.server.port=80 - traefik.docker.network=fedeo_web networks: diff --git a/scripts/selfhost-setup.sh b/scripts/selfhost-setup.sh index 3a078f4..73b82b0 100755 --- a/scripts/selfhost-setup.sh +++ b/scripts/selfhost-setup.sh @@ -331,9 +331,10 @@ S3_SECRET_KEY=$(env_quote "$minio_password") S3_BUCKET=$(env_quote "fedeo") FEDEO_FILE_BACKEND=$(env_quote "s3") -SEAFILE_SERVER_HOSTNAME=$(env_quote "files.$domain") +SEAFILE_SERVER_HOSTNAME=$(env_quote "$domain") SEAFILE_SERVER_PROTOCOL=$(env_quote "https") -SEAFILE_BASE_URL=$(env_quote "https://files.$domain") +SEAFILE_SITE_ROOT=$(env_quote "/files/") +SEAFILE_BASE_URL=$(env_quote "https://$domain/files") SEAFILE_INTERNAL_URL=$(env_quote "http://seafile:80") SEAFILE_IMAGE=$(env_quote "seafileltd/seafile-mc:13.0-latest") SEAFILE_DB_IMAGE=$(env_quote "mariadb:10.11") @@ -526,7 +527,6 @@ main() { echo echo "Vor dem Start prüfen:" echo " 1. DNS zeigt auf diesen Server: $domain" - echo " Zusätzlich für Seafile: files.$domain" echo " 2. Ports 80, 443, 3478/tcp, 3478/udp, 5349/tcp, 49160-49200/udp sind offen" echo " 3. Platzhalter für optionale Dienste in .env bei Bedarf ersetzen"