Zum Inhalt springen

Self-Hosting – Übersicht

solyto lässt sich vollständig selbst hosten. Alle Komponenten werden als Docker-Images veröffentlicht, und das Selfhosted-Repository stellt einen vollständigen Docker-Compose-Stack bereit, bei dem alles miteinander verdrahtet ist.

  • Volle Kontrolle — deine Daten bleiben auf deiner eigenen Hardware
  • Kein Zugriff durch Dritte — niemand sonst hat jemals Zugriff auf deine Daten
  • Anpassbarkeit — konfiguriere Funktionen, deaktiviere, was du nicht brauchst
  • Kein Vendor-Lock-in — Standard-Docker-Stack, leicht zu migrieren oder zu sichern
  • Kostenlos — keine Abonnements, keine Limits

Die einzige Softwarevoraussetzung sind Docker und Docker Compose — alles andere läuft in Containern. solyto ist ressourcenschonend: Es läuft problemlos auf einem Raspberry Pi, und jeder VPS oder Root-Server ist mehr als ausreichend.

Außerdem brauchst du:

  • Einen Server, der aus dem Internet erreichbar ist (VPS, dedizierter Server oder Heimserver mit Portweiterleitung)
  • Drei Domainnamen, die auf die IP-Adresse deines Servers zeigen (app, api, dav)
  • Eine gültige E-Mail-Adresse zur Erzeugung von TLS-Zertifikaten (Let’s Encrypt)

solyto läuft als 10 Docker-Dienste:

DienstImageBeschreibung
traefiktraefik:v3Reverse Proxy mit automatischem HTTPS über Let’s Encrypt
nginxsolyto/api-nginxWebserver für API und DAV, Healthcheck unter /api/v1/health
apisolyto/api-phpLaravel-PHP-FPM-Backend, führt startup.sh und dann php-fpm aus
davsolyto/api-phpWebDAV/CalDAV/CardDAV-Dienst (gleiches Image, andere Konfiguration)
queuesolyto/api-phpLaravel-Queue-Worker (queue:work --tries=3 --timeout=300)
appsolyto/appSvelteKit-Frontend mit SSR, läuft auf Port 3000
imgproxydarthsim/imgproxyOptionale Bildverarbeitung (nur wenn IMAGE_DRIVER=imgproxy)
mariadbmariadb:12Primäre Datenbank für die API
postgrespostgres:17Datenbank für CalDAV/CardDAV (SabreDAV)
redisredis:7.4.1Cache, Queue-Backend und Session-Speicher

Drei Images werden vom solyto-Projekt veröffentlicht und gepflegt:

ImageBasisZweck
solyto/appNode 22 AlpineSvelteKit-SSR-Frontend, Port 3000
solyto/api-phpPHP 8.4 FPMLaravel-Anwendungs-Backend
solyto/api-nginxNginx AlpineLiefert statische Dateien aus und leitet an PHP-FPM weiter

Drei Docker-Netzwerke isolieren Dienste nach Funktion:

NetzwerkDiensteZweck
publictraefik, nginx, appVon außen erreichbare Dienste
apinginx, api, dav, queue, imgproxyInterne API-Kommunikation
dbapi, dav, queue, mariadb, postgres, redisNur Datenbankzugriff

Datenfluss: Internet → Traefik → Nginx → PHP-FPM (api/dav) sowie Internet → Traefik → App (Port 3000).

VolumeGenutzt vonZweck
mariadb_datamariadbPersistenz der MariaDB-Daten
pg_datapostgresPersistenz der PostgreSQL-Daten
redis_dataredisPersistenz der Redis-Daten
traefik_acmetraefikLet’s-Encrypt-TLS-Zertifikate
./storage/api, dav, queue, nginx, imgproxyGemeinsamer Dateispeicher (Uploads, Logs, Framework-Cache)