Aller au contenu

Connecteurs de stockage

Configurez l'emplacement de stockage des données et ressources des sites web dans Silex.

Les connecteurs de stockage s'activent et se configurent entièrement via les variables d'environnement ci-dessous (STORAGE_CONNECTORS, GITLAB_*, FTP_*) — c'est la façon supportée sur Docker et depuis les sources. Consultez Configuration serveur → Étendre le serveur si les connecteurs intégrés ne couvrent pas votre besoin.

Aperçu

Les connecteurs de stockage gèrent la couche de persistance : sauvegarde du HTML/CSS des sites web, des ressources et des métadonnées. Silex propose trois options intégrées :

  • Système de fichiers (par défaut) — Stockage sur disque, adapté aux instances auto-hébergées
  • GitLab — Stockage dans des dépôts GitLab avec authentification OAuth
  • FTP — Stockage sur des serveurs FTP distants

Les connecteurs sont interchangeables : vous pouvez en utiliser un pour le stockage et un autre pour la publication. Un utilisateur pourrait stocker ses sites web sur GitLab mais publier sur un serveur FTP.

Prérequis

  • Compréhension de la configuration serveur
  • Pour GitLab : une instance GitLab et des identifiants d'application OAuth
  • Pour FTP : un serveur FTP et des identifiants

Stockage par système de fichiers (par défaut)

Stockez les sites web dans des répertoires sur votre serveur.

Installation

Activez via les variables d'environnement :

STORAGE_CONNECTORS=fs
SILEX_FS_ROOT=./silex/storage

Ou dans Docker :

environment:
  STORAGE_CONNECTORS: fs
  SILEX_FS_ROOT: /silex/storage
volumes:
  - ./silex-storage:/silex/storage

Fonctionnement

  • Chaque site web est un répertoire dans {SILEX_FS_ROOT}/{websiteId}/
  • Données du site web : {websiteId}/website.json
  • Métadonnées du site web : {websiteId}/.website.json
  • Ressources : {websiteId}/assets/

Structure des répertoires :

silex/storage/
├── my-site-1/
│   ├── website.json
│   ├── .website.json
│   └── assets/
│       ├── logo.png
│       └── hero.jpg
├── my-site-2/
│   ├── website.json
│   ├── .website.json
│   └── assets/

Authentification

Le stockage par système de fichiers ne nécessite pas d'authentification. Tous les utilisateurs sur le serveur ont accès à tous les sites web (pas d'isolation multi-utilisateurs).

Pour les configurations multi-utilisateurs, utilisez le stockage GitLab.

Stockage GitLab

Stockez les sites web dans des dépôts GitLab avec authentification par utilisateur.

Prérequis

  1. Instance GitLab (gitlab.com ou auto-hébergée)
  2. Application OAuth enregistrée dans GitLab
  3. Variables d'environnement définies sur votre serveur Silex

Configuration de l'application OAuth

Sur votre instance GitLab :

  1. Allez dans AdminApplications (ou votre profil → Settings → Applications)
  2. Cliquez sur New application
  3. Remplissez :
  4. Name : Silex
  5. Redirect URI : https://your-silex.com/api/connector/login/callback?type=storage&connectorId=gitlab
  6. Scopes : api, write_repository, read_user
  7. Copiez l'Application ID et le Secret

Définir les variables d'environnement

STORAGE_CONNECTORS=gitlab
GITLAB_CLIENT_ID=your-app-id
GITLAB_CLIENT_SECRET=your-app-secret
GITLAB_DOMAIN=gitlab.com

Pour un GitLab auto-hébergé :

GITLAB_DOMAIN=gitlab.mycompany.com

Fonctionnement

  • Chaque utilisateur se connecte avec son compte GitLab
  • Chaque site web est un dépôt dans l'espace de noms GitLab de l'utilisateur
  • Données du site web : website.json dans le dépôt
  • Métadonnées du site web : .website.json dans le dépôt
  • Ressources : répertoire assets/
  • Les utilisateurs ne voient que leurs propres dépôts

Structure du dépôt :

my-silex-website/
├── website.json
├── .website.json
└── assets/
    ├── logo.png
    └── hero.jpg

Instances GitLab multiples

Pour prendre en charge à la fois gitlab.com et une instance auto-hébergée :

STORAGE_CONNECTORS=gitlab,gitlab2
GITLAB_CLIENT_ID=app-id-for-gitlab.com
GITLAB_CLIENT_SECRET=secret-for-gitlab.com
GITLAB_DOMAIN=gitlab.com
GITLAB2_CLIENT_ID=app-id-for-self-hosted
GITLAB2_CLIENT_SECRET=secret-for-self-hosted
GITLAB2_DOMAIN=gitlab.mycompany.com

Chaque entrée de STORAGE_CONNECTORS obtient son propre bouton dans l'éditeur, étiqueté avec GITLAB_DISPLAY_NAME / GITLAB2_DISPLAY_NAME.

Stockage FTP

Stockez les sites web sur un serveur FTP.

Prérequis

  • Serveur FTP avec identifiants
  • Connaissances de base en FTP

Installation

STORAGE_CONNECTORS=ftp
FTP_STORAGE_PATH=/public_html

Ou dans Docker :

environment:
  STORAGE_CONNECTORS: ftp
  FTP_STORAGE_PATH: /public_html

Fonctionnement

  • Chaque site web est un répertoire dans {FTP_STORAGE_PATH}/{websiteId}/
  • Les utilisateurs saisissent leurs identifiants FTP (hôte, port, nom d'utilisateur, mot de passe) dans l'interface
  • Les sessions sont stockées par utilisateur (identifiants mis en cache dans la session du navigateur)
  • Les fichiers sont envoyés via SFTP ou FTP traditionnel

Structure des répertoires sur le FTP :

public_html/
├── my-site-1/
│   ├── website.json
│   ├── .website.json
│   └── assets/
├── my-site-2/
│   ├── website.json
│   ├── .website.json
│   └── assets/

Tableau comparatif

Fonctionnalité Système de fichiers GitLab FTP
Complexité d'installation Simple Moyenne (OAuth) Simple
Multi-utilisateurs Pas d'isolation Complète (OAuth par utilisateur) Par session
Coût Gratuit Gratuit (ou auto-hébergé) Votre serveur FTP
Sécurité Disque local uniquement OAuth + permissions des dépôts Identifiants FTP en session
Mise à l'échelle Serveur unique Serveurs multiples (dépôts) Serveur distant
Idéal pour Développement, utilisateur unique Équipes, utilisateurs multiples Hébergement traditionnel

Combiner stockage et hébergement

Vous pouvez combiner les connecteurs : stocker sur GitLab mais publier en FTP :

STORAGE_CONNECTORS=gitlab
HOSTING_CONNECTORS=ftp

Les utilisateurs stockent leurs sites web sur GitLab et publient sur leur hébergement FTP.

Dépannage

L'OAuth GitLab échoue

Vérifiez que : - L'application OAuth est enregistrée dans GitLab - L'URI de redirection correspond exactement : https://your-silex.com/api/connector/login/callback?type=storage&connectorId=gitlab - Les identifiants sont corrects : GITLAB_CLIENT_ID et GITLAB_CLIENT_SECRET - Le domaine est défini : GITLAB_DOMAIN=gitlab.com

Testez l'OAuth en visitant l'URL de connexion dans un navigateur :

https://your-silex.com/api/connector/auth?type=storage&connectorId=gitlab

La connexion FTP échoue

Vérifiez que le serveur FTP fonctionne :

telnet ftp-server.com 21

Vérifiez les identifiants et le chemin :

ftp ftp-server.com
# Enter username and password
cd /public_html

Permissions du stockage par système de fichiers

Assurez-vous que le processus Silex peut lire/écrire dans le répertoire de stockage :

chmod 755 ./silex/storage
chown $USER:$USER ./silex/storage

Dans Docker, le conteneur s'exécute en tant que root, donc les permissions ne posent généralement pas de problème.

Voir aussi

Éditer cette page sur GitLab