Exécution depuis le code source avec Node.js¶
Exécutez Silex directement avec Node.js, pour l'auto-hébergement ou pour contribuer. Vous gardez le contrôle du gestionnaire de processus (systemd, PM2, supervisor) et de la configuration.
Vous arrivez de l'ancienne structure multi-dépôts ?
Si vous avez un clone, une branche ou une pull request d'avant le passage de Silex en monorepo,
lisez d'abord Migrer depuis les anciens dépôts — ne faites pas
git pull sur un ancien clone, la branche par défaut a été repointée vers un historique disjoint.
Vue d'ensemble¶
Silex est un monorepo et l'application est un unique package Node.js. Il n'y a plus de package @silexlabs/silex-platform ni d'outil en ligne de commande global. On auto-héberge en clonant le dépôt, en le compilant une fois, puis en lançant le serveur.
La configuration par défaut est la SaaS complète : dashboard multi-site, onboarding et connecteurs de stockage/hébergement. Les plugins GrapesJS sont intégrés à l'éditeur.
Prérequis¶
Installation depuis le code source¶
git clone --recurse-submodules https://github.com/silexlabs/Silex.git
cd Silex
pnpm install
pnpm build
pnpm start
Le serveur démarre sur http://localhost:6805.
--recurse-submodules récupère le contenu du dashboard, servi par la SaaS complète. Si vous avez déjà cloné sans cette option :
Envie de contribuer ? Après le clone, regardez les bonnes premières tâches. Voir aussi Contribuer à Silex.
Configuration avec un fichier .env¶
Créez un fichier .env à la racine du dépôt. Silex le lit au démarrage :
cat > .env << EOF
SILEX_SESSION_SECRET=$(openssl rand -base64 32)
SILEX_PORT=6805
SILEX_URL=http://localhost:6805
STORAGE_CONNECTORS=fs
HOSTING_CONNECTORS=fs,download
SILEX_FS_ROOT=./silex/storage
SILEX_FS_HOSTING_ROOT=./silex/hosting
EOF
Puis pnpm start. Le serveur utilise les valeurs du .env.
Principales variables d'environnement¶
| Variable | Défaut | Rôle |
|---|---|---|
SILEX_PORT |
6805 | Port d'écoute |
SILEX_HOST |
localhost | Nom d'hôte (0.0.0.0 pour l'accès distant) |
SILEX_PROTOCOL |
http | Protocole avant un reverse proxy |
SILEX_URL |
http://localhost:6805 | URL publique visitée par les utilisateurs |
SILEX_SESSION_SECRET |
(aucun) | Clé aléatoire de chiffrement de session |
SILEX_SERVER_CONFIG |
(config SaaS intégrée) | Chemin d'un fichier de config serveur personnalisé |
SILEX_CLIENT_CONFIG |
(config SaaS intégrée) | Chemin d'un fichier de config client personnalisé |
STORAGE_CONNECTORS |
(défini par la config) | Séparés par des virgules : fs, gitlab, ftp |
HOSTING_CONNECTORS |
(défini par la config) | Séparés par des virgules : fs, gitlab, ftp, download |
SILEX_FS_ROOT |
./silex/storage | Chemin du connecteur de stockage fichiers |
SILEX_FS_HOSTING_ROOT |
./silex/hosting | Chemin du connecteur d'hébergement fichiers |
Voir docker.md pour la liste complète, et Configuration serveur pour l'API de config.
Accès distant¶
Par défaut, le serveur écoute sur localhost. Pour autoriser les connexions distantes :
Accédez ensuite depuis une autre machine via http://ip-de-votre-serveur:6805.
Exécution en tant que service système¶
Après pnpm build, le point d'entrée du serveur est dist/server/server/ et vous le lancez avec pnpm start (qui exécute node dist/server/server/).
Avec systemd (Linux)¶
Créez /etc/systemd/system/silex.service :
[Unit]
Description=Silex Website Builder
After=network.target
[Service]
Type=simple
User=silex
WorkingDirectory=/opt/silex
ExecStart=/usr/bin/node /opt/silex/dist/server/server/
Restart=on-failure
RestartSec=10
Environment="SILEX_PORT=6805"
Environment="SILEX_URL=https://silex.example.com"
Environment="SILEX_SESSION_SECRET=votre-secret-aleatoire"
[Install]
WantedBy=multi-user.target
Cela suppose que vous avez cloné et compilé Silex dans /opt/silex. Créez l'utilisateur et activez le service :
sudo useradd -m -s /usr/sbin/nologin silex
sudo systemctl daemon-reload
sudo systemctl enable --now silex
sudo journalctl -u silex -f
Avec PM2¶
Créez ecosystem.config.js à la racine du dépôt :
module.exports = {
apps: [
{
name: 'silex',
script: 'dist/server/server/index.js',
env: {
SILEX_PORT: 6805,
SILEX_URL: 'https://silex.example.com',
SILEX_SESSION_SECRET: 'votre-secret-aleatoire',
STORAGE_CONNECTORS: 'fs',
HOSTING_CONNECTORS: 'fs,download',
},
},
],
}
Configuration serveur personnalisée¶
Pour la plupart des installations, les variables d'environnement suffisent (connecteurs, ports, URLs). Si vous devez modifier le comportement du serveur dans le code, pointez SILEX_SERVER_CONFIG vers un fichier JavaScript :
Voir Configuration serveur pour l'API ServerConfig et la mise en place des connecteurs. La config SaaS intégrée se trouve dans server/deploy/ du dépôt et sert de bonne référence.
Débogage¶
Cela recharge le fichier de config à chaque requête et journalise les détails de démarrage.
Dépannage¶
Port déjà utilisé¶
Ou trouvez et arrêtez le processus qui occupe le port :
Module introuvable, ou build obsolète¶
Réinstallez et recompilez :
Voir aussi¶
- Installation avec Docker
- Déploiement en un clic — CapRover
- Configuration serveur — API du fichier de config