Installation avec Docker¶
Auto-hébergez Silex avec Docker en compilant l'image depuis le code source.
Vue d'ensemble¶
Silex fournit un Dockerfile à la racine du dépôt. Il compile le monorepo (serveur Node.js, tous les connecteurs et l'éditeur web) en une seule image, configurée en SaaS complète. Vous gérez l'instance via des variables d'environnement.
Note : l'image
silexlabs/silex-platformsur Docker Hub est compilée depuis ceDockerfileà chaque release : chaque version est publiée avec son propre tag (ex.3.9.0),:latestpointe vers la dernière version stable et:canaryvers la dernière prerelease. La compiler vous-même depuis le code source, comme ci-dessous, suit le code le plus récent et évite de dépendre d'un registre donné (un passage vers un registre libre est en discussion).
Prérequis¶
- Docker installé
- Git
- Connaissances de base des variables d'environnement et du forwarding de ports
Démarrage rapide¶
Clonez le dépôt et compilez l'image :
git clone --recurse-submodules https://github.com/silexlabs/Silex.git
cd Silex
docker build -t silex .
Silex stocke et publie les sites avec GitLab : créez donc d'abord une application OAuth GitLab. Voir Configuration de l'application OAuth. Ensuite, lancez l'image :
docker run -d --name silex -p 6805:6805 \
-e SILEX_SESSION_SECRET="$(openssl rand -base64 32)" \
-e SILEX_URL=http://localhost:6805 \
-e STORAGE_CONNECTORS=gitlab \
-e HOSTING_CONNECTORS=gitlab \
-e GITLAB_DISPLAY_NAME=GitLab.com \
-e GITLAB_CLIENT_ID=votre-id-app-oauth \
-e GITLAB_CLIENT_SECRET=votre-secret-app-oauth \
-e GITLAB_DOMAIN=https://gitlab.com \
silex
Silex tourne désormais sur http://localhost:6805. Connectez-vous avec votre compte GitLab pour voir vos sites.
Avec Docker Compose¶
Créez docker-compose.yml à la racine du dépôt :
services:
silex:
build:
context: .
dockerfile: Dockerfile
container_name: silex
ports:
- "6805:6805"
environment:
SILEX_SESSION_SECRET: ${SILEX_SESSION_SECRET}
SILEX_URL: http://localhost:6805
STORAGE_CONNECTORS: gitlab
HOSTING_CONNECTORS: gitlab
GITLAB_DISPLAY_NAME: GitLab.com
GITLAB_CLIENT_ID: votre-id-app-oauth
GITLAB_CLIENT_SECRET: votre-secret-app-oauth
GITLAB_DOMAIN: https://gitlab.com
restart: unless-stopped
Définissez le secret de session dans un fichier .env à côté :
Compilez et démarrez :
Variables d'environnement¶
| Variable | Défaut | Rôle |
|---|---|---|
SILEX_PORT |
6805 | Port interne d'écoute du serveur Node |
SILEX_HOST |
localhost | Nom d'hôte interne (laisser localhost dans Docker) |
SILEX_PROTOCOL |
http | Protocole avant un reverse proxy (http ou https) |
SILEX_URL |
http://localhost:6805 | URL publique visitée (à mettre à jour en production) |
SILEX_SESSION_SECRET |
(aucun) | Clé de chiffrement de session, aléatoire et d'au moins 32 caractères |
SILEX_SESSION_NAME |
silex-session | Nom du cookie de session |
SILEX_DEBUG |
false | true pour recharger le fichier de config client à chaque requête (dev seulement) |
STORAGE_CONNECTORS |
fs | Séparés par des virgules : gitlab. La valeur par défaut, fs, sert uniquement au développement |
HOSTING_CONNECTORS |
fs | Séparés par des virgules : gitlab. La valeur par défaut, fs, sert uniquement au développement |
SILEX_SERVER_CONFIG |
(aucune) | Chemin de votre propre fichier de config serveur. Le fichier intégré server/deploy/.silex.js est toujours chargé après lui |
SILEX_CLIENT_CONFIG |
(config SaaS intégrée) | Chemin d'un fichier de config client personnalisé |
Limites de requête Express¶
Pour les uploads volumineux ou les gros payloads JSON :
| Variable | Défaut | Rôle |
|---|---|---|
SILEX_EXPRESS_JSON_LIMIT |
1mb | Taille max du corps JSON |
SILEX_EXPRESS_TEXT_LIMIT |
10mb | Taille max du corps texte |
SILEX_EXPRESS_URLENCODED_LIMIT |
1mb | Taille max du corps URL-encodé |
Connecteurs GitLab¶
Pour activer le stockage et l'hébergement GitLab :
environment:
STORAGE_CONNECTORS: gitlab
HOSTING_CONNECTORS: gitlab
GITLAB_DISPLAY_NAME: GitLab.com
GITLAB_CLIENT_ID: votre-id-app-oauth
GITLAB_CLIENT_SECRET: votre-secret-app-oauth
GITLAB_DOMAIN: https://gitlab.com
Pour une seconde instance GitLab, ajoutez les variables GITLAB2_* et ajoutez gitlab2 aux listes de connecteurs. Voir Connecteurs de stockage pour la configuration OAuth.
Reverse proxy avec Caddy¶
Caddy gère automatiquement les certificats SSL. Ajoutez-le à votre docker-compose.yml :
services:
silex:
build:
context: .
dockerfile: Dockerfile
expose:
- 6805
environment:
SILEX_URL: https://silex.example.com
SILEX_PROTOCOL: https
SILEX_SESSION_SECRET: ${SILEX_SESSION_SECRET}
STORAGE_CONNECTORS: gitlab
HOSTING_CONNECTORS: gitlab
GITLAB_DISPLAY_NAME: GitLab.com
GITLAB_CLIENT_ID: votre-id-app-oauth
GITLAB_CLIENT_SECRET: votre-secret-app-oauth
GITLAB_DOMAIN: https://gitlab.com
restart: unless-stopped
caddy:
image: caddy:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
depends_on:
- silex
volumes:
caddy-data:
Créez un Caddyfile :
Pointez l'enregistrement A de votre domaine vers votre serveur, puis docker compose up -d --build. Caddy provisionne et renouvelle le certificat automatiquement.
Persistance des données¶
Avec les connecteurs GitLab, les sites sont stockés dans des dépôts GitLab, pas dans le conteneur. Il n'y a aucun volume à monter ni à sauvegarder.
Mise à jour¶
Récupérez le dernier code et recompilez :
Dépannage¶
Le conteneur ne démarre pas¶
Problèmes fréquents :
- Port 6805 déjà utilisé : changez
portsen["8080:6805"] SILEX_SESSION_SECRETtrop court : au moins 32 caractères
Erreurs CORS¶
Si l'éditeur et l'API sont sur des domaines différents :
Voir aussi¶
- Exécution depuis le code source avec Node.js
- Déploiement en un clic — CapRover
- Configuration serveur — API de config serveur