KI-AGENT: Seafile unter Hauptdomain bereitstellen

This commit is contained in:
2026-05-22 17:11:39 +02:00
parent 736f7bba88
commit 69874742f8
4 changed files with 17 additions and 14 deletions

View File

@@ -42,11 +42,11 @@ S3_BUCKET=fedeo
# genutzt werden. # genutzt werden.
FEDEO_FILE_BACKEND=s3 FEDEO_FILE_BACKEND=s3
# Seafile CE läuft bewusst auf einer eigenen Subdomain, damit Desktop-Clients, # Seafile CE läuft im Standard-Stack unter der Hauptdomain auf /files.
# SeaDrive und WebDAV ohne Pfad-Sonderfälle funktionieren. SEAFILE_SERVER_HOSTNAME=app.example.com
SEAFILE_SERVER_HOSTNAME=files.app.example.com
SEAFILE_SERVER_PROTOCOL=https 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_INTERNAL_URL=http://seafile:80
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11 SEAFILE_DB_IMAGE=mariadb:10.11

View File

@@ -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. 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: Alternativ kannst du die Konfiguration geführt erzeugen lassen:
@@ -208,9 +208,10 @@ S3_SECRET_KEY=change-this-minio-password
S3_BUCKET=fedeo S3_BUCKET=fedeo
FEDEO_FILE_BACKEND=s3 FEDEO_FILE_BACKEND=s3
SEAFILE_SERVER_HOSTNAME=files.app.example.com SEAFILE_SERVER_HOSTNAME=app.example.com
SEAFILE_SERVER_PROTOCOL=https 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_INTERNAL_URL=http://seafile:80
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11 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. 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`. 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`.

View File

@@ -142,9 +142,9 @@ services:
TIME_ZONE: ${TIME_ZONE:-Europe/Berlin} TIME_ZONE: ${TIME_ZONE:-Europe/Berlin}
INIT_SEAFILE_ADMIN_EMAIL: ${INIT_SEAFILE_ADMIN_EMAIL} INIT_SEAFILE_ADMIN_EMAIL: ${INIT_SEAFILE_ADMIN_EMAIL}
INIT_SEAFILE_ADMIN_PASSWORD: ${INIT_SEAFILE_ADMIN_PASSWORD} 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} SEAFILE_SERVER_PROTOCOL: ${SEAFILE_SERVER_PROTOCOL:-https}
SITE_ROOT: ${SEAFILE_SITE_ROOT:-/} SITE_ROOT: ${SEAFILE_SITE_ROOT:-/files/}
NON_ROOT: ${SEAFILE_NON_ROOT:-false} NON_ROOT: ${SEAFILE_NON_ROOT:-false}
JWT_PRIVATE_KEY: ${SEAFILE_JWT_PRIVATE_KEY} JWT_PRIVATE_KEY: ${SEAFILE_JWT_PRIVATE_KEY}
SEAFILE_LOG_TO_STDOUT: ${SEAFILE_LOG_TO_STDOUT:-true} SEAFILE_LOG_TO_STDOUT: ${SEAFILE_LOG_TO_STDOUT:-true}
@@ -166,9 +166,11 @@ services:
start_period: 30s start_period: 30s
labels: labels:
- traefik.enable=true - 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.entrypoints=websecure
- traefik.http.routers.fedeo-seafile.tls.certresolver=letsencrypt - 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.http.services.fedeo-seafile.loadbalancer.server.port=80
- traefik.docker.network=fedeo_web - traefik.docker.network=fedeo_web
networks: networks:

View File

@@ -331,9 +331,10 @@ S3_SECRET_KEY=$(env_quote "$minio_password")
S3_BUCKET=$(env_quote "fedeo") S3_BUCKET=$(env_quote "fedeo")
FEDEO_FILE_BACKEND=$(env_quote "s3") 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_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_INTERNAL_URL=$(env_quote "http://seafile:80")
SEAFILE_IMAGE=$(env_quote "seafileltd/seafile-mc:13.0-latest") SEAFILE_IMAGE=$(env_quote "seafileltd/seafile-mc:13.0-latest")
SEAFILE_DB_IMAGE=$(env_quote "mariadb:10.11") SEAFILE_DB_IMAGE=$(env_quote "mariadb:10.11")
@@ -526,7 +527,6 @@ main() {
echo echo
echo "Vor dem Start prüfen:" echo "Vor dem Start prüfen:"
echo " 1. DNS zeigt auf diesen Server: $domain" 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 " 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" echo " 3. Platzhalter für optionale Dienste in .env bei Bedarf ersetzen"