Aller au contenu

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

  • Node.js 20 ou plus
  • pnpm (le projet utilise pnpm via corepack : corepack enable)
  • Git

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 :

git submodule update --init --recursive

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 :

SILEX_HOST=0.0.0.0 pnpm start

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

npm install -g 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',
      },
    },
  ],
}
pm2 start ecosystem.config.js
pm2 save
pm2 startup

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 :

SILEX_SERVER_CONFIG=./my-config.js pnpm start

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

SILEX_DEBUG=true pnpm start

Cela recharge le fichier de config à chaque requête et journalise les détails de démarrage.

Dépannage

Port déjà utilisé

SILEX_PORT=8080 pnpm start

Ou trouvez et arrêtez le processus qui occupe le port :

lsof -i :6805
kill -9 <PID>

Module introuvable, ou build obsolète

Réinstallez et recompilez :

pnpm install
pnpm build

Voir aussi

Éditer cette page sur GitLab