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
| Composant | Version minimale |
|---|---|
| PHP | 8.2 |
| PostgreSQL | 15 |
| Redis | 7 |
| 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
| Variable | Description | Exemple |
|---|---|---|
APP_ENV | Environnement | production |
APP_URL | URL publique | https://app.example.com |
DB_HOST | Hôte PostgreSQL | 127.0.0.1 |
DB_DATABASE | Nom de la base | gaeld |
DB_USERNAME | Utilisateur DB | gaeld |
DB_PASSWORD | Mot de passe DB | … |
REDIS_HOST | Hôte Redis | 127.0.0.1 |
CACHE_DRIVER | Backend de cache | redis |
QUEUE_CONNECTION | Backend de file | redis |
MAIL_MAILER | Pilote de messagerie | smtp ou mailgun |
MAIL_FROM_ADDRESS | Adresse expéditeur | noreply@example.com |
FEATURE_BANK_SYNC | Activer l'import bancaire | true |
FEATURE_AUTOMATION | Activer les règles automatiques | true |
PLUGINS_ENABLED | Activer les plugins | true |
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 :
- La base PostgreSQL :
pg_dump gaeld > gaeld_$(date +%F).sql - Le répertoire de stockage :
storage/app/(contient les PDFs générés et les fichiers importés) - 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.