Aller au contenu

Présentation de l'auto-hébergement

solyto est entièrement auto-hébergeable. Tous les composants sont publiés sous forme d’images Docker, et le dépôt selfhosted fournit une pile Docker Compose complète avec tout déjà interconnecté.

  • Contrôle total — vos données restent sur votre propre matériel
  • Aucun accès tiers — personne d’autre n’a jamais accès à vos données
  • Personnalisation — configurez les fonctionnalités, désactivez ce dont vous n’avez pas besoin
  • Pas de dépendance à un fournisseur — pile Docker standard, facile à migrer ou à sauvegarder
  • Gratuit — pas d’abonnement, pas de limites

La seule exigence logicielle est Docker et Docker Compose — tout le reste s’exécute dans des conteneurs. solyto est léger : il fonctionne confortablement sur un Raspberry Pi, et n’importe quel VPS ou serveur dédié est largement suffisant.

Vous avez également besoin de :

  • Un serveur accessible depuis Internet (VPS, serveur dédié, ou serveur personnel avec redirection de port)
  • Trois noms de domaine pointant vers l’adresse IP de votre serveur (app, api, dav)
  • Une adresse e-mail valide pour la génération de certificats TLS (Let’s Encrypt)

solyto fonctionne avec 10 services Docker :

ServiceImageDescription
traefiktraefik:v3Proxy inverse avec HTTPS automatique via Let’s Encrypt
nginxsolyto/api-nginxServeur web pour l’API et DAV, contrôle de santé sur /api/v1/health
apisolyto/api-phpBackend Laravel PHP-FPM, exécute startup.sh puis php-fpm
davsolyto/api-phpService WebDAV/CalDAV/CardDAV (même image, configuration différente)
queuesolyto/api-phpWorker de file d’attente Laravel (queue:work --tries=3 --timeout=300)
appsolyto/appFrontend SvelteKit avec SSR, s’exécute sur le port 3000
imgproxydarthsim/imgproxyTraitement d’images optionnel (uniquement si IMAGE_DRIVER=imgproxy)
mariadbmariadb:12Base de données principale pour l’API
postgrespostgres:17Base de données pour CalDAV/CardDAV (SabreDAV)
redisredis:7.4.1Cache, backend de file d’attente et stockage de session

Trois images sont publiées et maintenues par le projet solyto :

ImageBaseObjectif
solyto/appNode 22 AlpineFrontend SvelteKit SSR, port 3000
solyto/api-phpPHP 8.4 FPMBackend applicatif Laravel
solyto/api-nginxNginx AlpineSert les fichiers statiques et fait le proxy vers PHP-FPM

Trois réseaux Docker isolent les services par fonction :

RéseauServicesObjectif
publictraefik, nginx, appServices accessibles depuis l’extérieur
apinginx, api, dav, queue, imgproxyCommunication interne de l’API
dbapi, dav, queue, mariadb, postgres, redisAccès à la base de données uniquement

Flux de trafic : Internet → Traefik → Nginx → PHP-FPM (api/dav) et Internet → Traefik → App (port 3000).

VolumeUtilisé parObjectif
mariadb_datamariadbPersistance des données MariaDB
pg_datapostgresPersistance des données PostgreSQL
redis_dataredisPersistance des données Redis
traefik_acmetraefikCertificats TLS Let’s Encrypt
./storage/api, dav, queue, nginx, imgproxyStockage de fichiers partagé (téléversements, journaux, cache du framework)