> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Processus

> Horizon, le planificateur et le relais SMTP : ce qui doit tourner en permanence.

En plus du serveur web, Lekalao a besoin de deux processus, plus un facultatif.

## Horizon : les workers

Horizon traite les files d'attente. Trois superviseurs, un par file :

| File      | Contient                                                     | Workers en production | Durée max d'une tâche |
| --------- | ------------------------------------------------------------ | --------------------- | --------------------- |
| `sending` | Chaque e-mail de campagne et d'automatisation.               | jusqu'à 10            | 150 s                 |
| `default` | Webhooks sortants, e-mails de l'application, tâches courtes. | 3                     | 300 s                 |
| `imports` | Imports et exports de contacts.                              | 2                     | 1 heure               |

Sans Horizon, rien ne part.

```ini /etc/systemd/system/lekalao-horizon.service theme={null}
[Unit]
Description=Lekalao Horizon
After=network.target redis-server.service postgresql.service

[Service]
User=lekalao
WorkingDirectory=/var/www/lekalao
ExecStart=/usr/bin/php artisan horizon
ExecStop=/usr/bin/php artisan horizon:terminate
Restart=always
RestartSec=5
KillSignal=SIGTERM
TimeoutStopSec=3600

[Install]
WantedBy=multi-user.target
```

```bash theme={null}
sudo systemctl enable --now lekalao-horizon
```

`TimeoutStopSec` laisse un import en cours se terminer avant l'arrêt.

Le tableau de bord est à `https://lekalao.example.com/horizon`, réservé aux **administrateurs de la plateforme**.

<Note>
  Pour augmenter le nombre de workers d'envoi, modifiez `maxProcesses` du
  superviseur `sending` dans `config/horizon.php`, puis `php artisan
        horizon:terminate`. Le débit réel reste plafonné par les limites de vos
  fournisseurs et des messageries ([Sécurité
  d'envoi](/fr/deliverability/sending-safety)).
</Note>

## Le planificateur

Une seule entrée cron, pour l'utilisateur `lekalao` :

```cron theme={null}
* * * * * cd /var/www/lekalao && php artisan schedule:run >> /dev/null 2>&1
```

Elle déclenche :

| Fréquence             | Tâche                                                                                                                                                                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Chaque minute         | Campagnes programmées, statistiques, gagnants des tests A/B, automatisations, battement de cœur.                                                                                                                                     |
| Toutes les 10 minutes | Reprise des envois bloqués.                                                                                                                                                                                                          |
| Toutes les heures     | Flux RSS.                                                                                                                                                                                                                            |
| Chaque nuit           | Vérification DNS des domaines (2 h 30), suppression des non-confirmés (3 h), des vieux exports (3 h 15) et des vieux retours de fournisseurs (3 h 30), purge (3 h 45), durées de conservation (4 h 15), score d'engagement (4 h 30). |
| Chaque semaine        | Résumé des listes (lundi 8 h), vérification de la licence (mardi 4 h).                                                                                                                                                               |

Les heures sont en UTC. Chaque tâche est listée dans [Commandes](/fr/self-hosting/commands).

<Tip>
  Avec Docker ou un PaaS sans cron, lancez `php artisan schedule:work` comme
  un processus de plus.
</Tip>

## Le relais SMTP

Facultatif. Pour que des logiciels envoient par SMTP à travers Lekalao ([Relais SMTP](/fr/developers/smtp-relay)) :

```ini /etc/systemd/system/lekalao-smtp.service theme={null}
[Unit]
Description=Lekalao SMTP relay
After=network.target postgresql.service

[Service]
User=lekalao
WorkingDirectory=/var/www/lekalao
ExecStart=/usr/bin/php artisan lekalao:smtp --host=127.0.0.1 --port=2525 --hostname=smtp.lekalao.example.com
Restart=always

[Install]
WantedBy=multi-user.target
```

<Warning>
  Le relais ne parle pas TLS et reçoit des jetons d'API comme mots de passe.
  Laissez-le sur `127.0.0.1`, ou mettez devant lui un terminateur TLS
  (stunnel, HAProxy). Ne l'exposez jamais tel quel sur internet.
</Warning>

Pour que **Paramètres → Documentation** l'annonce aux équipes :

```dotenv .env theme={null}
LEKALAO_SMTP_ADVERTISE=true
LEKALAO_SMTP_HOST=smtp.lekalao.example.com
LEKALAO_SMTP_PORT=465
```

## Après chaque déploiement

Horizon garde l'ancien code en mémoire :

```bash theme={null}
php artisan horizon:terminate
```

systemd le relance avec le nouveau. Relancez aussi le relais SMTP s'il tourne.
