Aller au contenu principal
Page non répertoriée
Cette page n'est pas répertoriée. Les moteurs de recherche ne l'indexeront pas, et seuls les utilisateurs ayant un lien direct peuvent y accéder.

Auto-hébergement

Ce guide couvre le déploiement en production de Gäld sur votre propre serveur. Pour le développement local, consultez Démarrage rapide.

Configuration requise

ComposantVersion minimale
PHP8.2
PostgreSQL15
Redis7
Nginx (ou Caddy)
Node.js (compilation uniquement)20

Un VPS avec 2 vCPU, 2 Go de RAM et 20 Go de SSD est suffisant pour la plupart des petites organisations.

Installation

git clone https://github.com/Scanix/Gaeld.git /var/www/gaeld
cd /var/www/gaeld
composer install --no-dev --optimize-autoloader
npm install && npm run build
cp .env.example .env
php artisan key:generate

Modifiez .env avec vos valeurs de production (voir Variables d'environnement ci-dessous).

php artisan gaeld:install

Configuration Nginx

server {
listen 80;
server_name app.example.com;
root /var/www/gaeld/public;
index index.php;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.(?!well-known).* {
deny all;
}
}

Ajoutez un certificat SSL (p. ex. via Certbot) et redirigez le port 80 vers 443 avant de passer en production.

Pool PHP-FPM

Créez ou modifiez /etc/php/8.2/fpm/pool.d/gaeld.conf :

[gaeld]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Redémarrez : systemctl restart php8.2-fpm

Worker de file d'attente (systemd)

Gäld utilise les queues Laravel pour les tâches en arrière-plan (imports bancaires, notifications). Démarrez un worker persistant :

# /etc/systemd/system/gaeld-worker.service
[Unit]
Description=Gäld Queue Worker
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/gaeld
ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3 --max-time=3600
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Activez et démarrez :

systemctl enable gaeld-worker
systemctl start gaeld-worker

Tâches planifiées (Cron)

Ajoutez au crontab de www-data :

* * * * * /usr/bin/php /var/www/gaeld/artisan schedule:run >> /dev/null 2>&1

Stockage et permissions

chown -R www-data:www-data /var/www/gaeld/storage /var/www/gaeld/bootstrap/cache
chmod -R 775 /var/www/gaeld/storage /var/www/gaeld/bootstrap/cache

Les fichiers générés (PDFs de factures, imports bancaires) sont stockés dans storage/app/. Montez ce répertoire sur un volume persistant lors d'un déploiement en conteneur.

Variables d'environnement

VariableDescriptionExemple
APP_ENVEnvironnementproduction
APP_URLURL publiquehttps://app.example.com
DB_HOSTHôte PostgreSQL127.0.0.1
DB_DATABASENom de la basegaeld
DB_USERNAMEUtilisateur DBgaeld
DB_PASSWORDMot de passe DB
REDIS_HOSTHôte Redis127.0.0.1
CACHE_DRIVERBackend de cacheredis
QUEUE_CONNECTIONBackend de fileredis
MAIL_MAILERPilote de messageriesmtp ou mailgun
MAIL_FROM_ADDRESSAdresse expéditeurnoreply@example.com
FEATURE_BANK_SYNCActiver l'import bancairetrue
FEATURE_AUTOMATIONActiver les règles automatiquestrue
PLUGINS_ENABLEDActiver les pluginstrue

Mise à jour

Après avoir récupéré une nouvelle version :

cd /var/www/gaeld
git pull
composer install --no-dev --optimize-autoloader
npm install && npm run build
php artisan gaeld:update
systemctl restart gaeld-worker

gaeld:update exécute les migrations en attente, vide les caches et redémarre les queues en toute sécurité.

Sauvegardes

Sauvegardez :

  1. La base PostgreSQL : pg_dump gaeld > gaeld_$(date +%F).sql
  2. Le répertoire de stockage : storage/app/ (contient les PDFs générés et les fichiers importés)
  3. Le fichier .env : conservez-le en lieu sûr, hors de la racine web

Un cron quotidien avec réplication hors site est recommandé pour les environnements de production.