KI-AGENT: Seafile in Selfhost-Stack integrieren

This commit is contained in:
2026-05-22 16:34:29 +02:00
parent 8a2429827c
commit 19bab852de
4 changed files with 195 additions and 2 deletions

View File

@@ -122,6 +122,8 @@ mkdir -p /opt/fedeo/traefik/letsencrypt
mkdir -p /opt/fedeo/traefik/logs
mkdir -p /opt/fedeo/postgres
mkdir -p /opt/fedeo/minio
mkdir -p /opt/fedeo/seafile/mysql
mkdir -p /opt/fedeo/seafile/data
touch /opt/fedeo/traefik/letsencrypt/acme.json
chmod 600 /opt/fedeo/traefik/letsencrypt/acme.json
```
@@ -133,6 +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`.
Alternativ kannst du die Konfiguration geführt erzeugen lassen:
@@ -204,6 +207,28 @@ S3_ACCESS_KEY=fedeo-minio
S3_SECRET_KEY=change-this-minio-password
S3_BUCKET=fedeo
FEDEO_FILE_BACKEND=s3
SEAFILE_SERVER_HOSTNAME=files.app.example.com
SEAFILE_SERVER_PROTOCOL=https
SEAFILE_BASE_URL=https://files.app.example.com
SEAFILE_INTERNAL_URL=http://seafile:80
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_REDIS_IMAGE=redis:7-alpine
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=change-this-seafile-root-password
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=change-this-seafile-db-password
SEAFILE_REDIS_PASSWORD=change-this-seafile-redis-password
SEAFILE_JWT_PRIVATE_KEY=change-this-seafile-jwt-private-key-at-least-32-chars
INIT_SEAFILE_ADMIN_EMAIL=admin@example.com
INIT_SEAFILE_ADMIN_PASSWORD=change-this-seafile-admin-password
SEAFILE_ENABLE_GO_FILESERVER=true
SEAFILE_ENABLE_SEADOC=false
SEAFILE_ENABLE_NOTIFICATION_SERVER=false
SEAFILE_ENABLE_AI=false
SEAFILE_ENABLE_FACE_RECOGNITION=false
SEAFILE_MD_FILE_COUNT_LIMIT=100000
M2M_API_KEY=change-this-m2m-key
API_BASE_URL=https://app.example.com/backend
GOCARDLESS_BASE_URL=https://api.gocardless.com
@@ -246,10 +271,12 @@ NUXT_PUBLIC_MATRIX_ELEMENT_URL=https://app.example.com/element
Die `FEDEO_BOOTSTRAP_*`-Werte sind für den ersten Start gedacht. Wenn `FEDEO_BOOTSTRAP_ADMIN_EMAIL` und `FEDEO_BOOTSTRAP_ADMIN_PASSWORD` gesetzt sind, legt das Backend idempotent einen Admin-Benutzer, einen ersten Mandanten, eine Administrator-Rolle und grundlegende Stammdaten an. Nach erfolgreichem Erstzugriff solltest du das Bootstrap-Passwort aus der `.env` entfernen oder ändern.
## Docker Compose mit optionalem S3 und Matrix
## Docker Compose mit optionalem S3, Seafile und Matrix
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 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`.
Das Backend führt beim Containerstart standardmäßig `npm run migrate` aus. Setze `FEDEO_RUN_MIGRATIONS=false`, wenn du Migrationen bewusst manuell ausführen möchtest.