Exécution depuis Node.js¶
Installez et exécutez Silex depuis npm, le code source ou npx pour le développement et les installations auto-hébergées.
Aperçu¶
Au lieu de Docker, vous pouvez exécuter Silex directement sur votre serveur avec Node.js. Cela vous donne plus de contrôle sur le gestionnaire de processus (systemd, PM2, supervisor) et vous permet de personnaliser le script de démarrage.
Trois méthodes d'installation :
- Paquet npm — Recommandé pour le déploiement
- npx — Test rapide sans installation
- Code source — Pour le développement et la contribution
Prérequis¶
- Node.js 18 ou ultérieur
- npm 8 ou ultérieur (inclus avec Node)
- Git (si vous clonez depuis le code source)
Installation depuis npm¶
1. Installation globale ou locale¶
Installation globale :
Ou par projet :
2. Créer le fichier .env¶
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
3. Démarrer le serveur¶
Avec une installation globale :
Avec une installation locale :
Ou ajoutez dans package.json :
Puis exécutez :
Le serveur démarre à l'URL définie dans votre fichier .env (par défaut : http://localhost:6805).
Test rapide avec npx¶
Aucune installation nécessaire :
Cela télécharge, installe et exécute la dernière version. Le serveur écoute par défaut sur le port 6805.
Arrêtez avec Ctrl+C. Toutes les données sont stockées dans ./silex/storage et ./silex/hosting dans votre répertoire courant.
Installation depuis le code source¶
Pour le développement ou la création de plugins :
Lancez le serveur de développement :
Ou depuis la racine du monorepo :
Envie de contribuer ? Après le clonage, consultez les GitHub Issues pour des tâches adaptées aux débutants. Voir aussi Contribuer à Silex.
Variables d'environnement¶
Toutes les variables peuvent être définies dans un fichier .env ou passées en arguments de ligne de commande :
Consultez docker.md#variables-denvironnement pour la liste complète.
Variables clés pour l'installation Node :
| Variable | Valeur par 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_URL |
http://localhost:6805 | URL publique visitée par les utilisateurs |
SILEX_SESSION_SECRET |
(aucune) | Clé aléatoire pour le chiffrement de session |
SILEX_SERVER_CONFIG |
.silex.js | Chemin vers le fichier de configuration (relatif au répertoire courant) |
SILEX_CLIENT_CONFIG |
client-config.js | Chemin vers le fichier de configuration client |
Définir SILEX_HOST pour l'accès distant¶
Par défaut, le serveur n'écoute que sur localhost. Pour autoriser les connexions distantes :
Accédez ensuite depuis une autre machine : http://your-server-ip:6805
Exécution en tant que service système¶
Avec systemd (Linux)¶
Créez /etc/systemd/system/silex.service :
[Unit]
Description=Silex Website Builder
After=network.target
[Service]
Type=simple
User=silex
WorkingDirectory=/home/silex/silex-instance
ExecStart=/usr/bin/node /usr/bin/silex-platform
Restart=on-failure
RestartSec=10
# Environment
Environment="SILEX_PORT=6805"
Environment="SILEX_URL=https://silex.example.com"
Environment="SILEX_SESSION_SECRET=your-random-secret"
[Install]
WantedBy=multi-user.target
Créez l'utilisateur silex :
sudo useradd -m -s /usr/sbin/nologin silex
sudo mkdir -p /home/silex/silex-instance
sudo chown silex:silex /home/silex/silex-instance
Activez et démarrez :
Vérifiez l'état :
Avec PM2¶
Installez PM2 :
Créez ecosystem.config.js dans le répertoire de votre instance Silex :
module.exports = {
apps: [
{
name: 'silex',
script: 'silex-platform',
instances: 1,
exec_mode: 'cluster',
env: {
SILEX_PORT: 6805,
SILEX_URL: 'https://silex.example.com',
SILEX_SESSION_SECRET: 'your-random-secret',
STORAGE_CONNECTORS: 'fs',
HOSTING_CONNECTORS: 'fs,download',
},
},
],
}
Démarrez :
Consultez les journaux :
Configuration serveur personnalisée¶
Vous pouvez modifier le comportement du serveur avec un fichier de configuration :
Créez my-config.js :
const GitlabConnector = require('@silexlabs/silex-plugins').GitlabConnector
module.exports = async function (config) {
// Add a storage connector
config.addStorageConnector(
new GitlabConnector(config, {
clientId: process.env.GITLAB_CLIENT_ID,
clientSecret: process.env.GITLAB_CLIENT_SECRET,
domain: process.env.GITLAB_DOMAIN,
})
)
}
Consultez Configuration du serveur pour l'API complète de ServerConfig.
Débogage¶
Activez le mode débogage :
Cela recharge le fichier de configuration à chaque requête et affiche des informations détaillées au démarrage.
Dépannage¶
Port déjà utilisé¶
Changez le port :
Ou trouvez et terminez le processus utilisant le port 6805 :
EACCES permission denied¶
npm a tenté une installation globale sans sudo. Corrigez les permissions npm :
Ajoutez ensuite dans votre profil shell (.bashrc, .zshrc) :
Erreurs module not found¶
Réinstallez les dépendances :
Voir aussi¶
- Installation avec Docker Compose
- Plateformes d'hébergement géré
- Configuration du serveur — API du fichier de configuration