> ## 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.

# Installation

> De zéro à un premier compte, sur un serveur Linux.

Ce guide suppose Debian ou Ubuntu, une application dans `/var/www/lekalao` et un utilisateur système `lekalao`. Adaptez les chemins à votre serveur.

<Steps>
  <Step title="Récupérer le code">
    ```bash theme={null}
    sudo -u lekalao git clone <votre-dépôt> /var/www/lekalao
    cd /var/www/lekalao
    ```
  </Step>

  <Step title="Installer les dépendances">
    ```bash theme={null}
    composer install --no-dev --optimize-autoloader
    npm ci
    npm run build
    ```
  </Step>

  <Step title="Créer la base">
    ```bash theme={null}
    sudo -u postgres createuser --pwprompt lekalao
    sudo -u postgres createdb --owner=lekalao lekalao
    ```
  </Step>

  <Step title="Écrire le .env">
    ```bash theme={null}
    cp .env.example .env
    php artisan key:generate
    ```

    Puis, au minimum :

    ```dotenv .env theme={null}
    APP_NAME=Lekalao
    APP_ENV=production
    APP_DEBUG=false
    APP_URL=https://lekalao.example.com
    APP_LOCALE=fr

    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=lekalao
    DB_USERNAME=lekalao
    DB_PASSWORD=…

    QUEUE_CONNECTION=redis
    CACHE_STORE=redis
    SESSION_DRIVER=redis
    REDIS_HOST=127.0.0.1

    MAIL_MAILER=smtp
    MAIL_HOST=smtp.example.com
    MAIL_PORT=587
    MAIL_USERNAME=…
    MAIL_PASSWORD=…
    MAIL_FROM_ADDRESS=lekalao@example.com
    MAIL_FROM_NAME=Lekalao
    ```

    Les réglages `MAIL_*` ne servent qu'aux e-mails de Lekalao lui-même (invitations, mots de passe) tant qu'aucun fournisseur par défaut n'est configuré dans l'interface. Toutes les options sont dans [Configuration](/fr/self-hosting/configuration).

    <Warning>
      Sauvegardez `APP_KEY`. Elle chiffre les identifiants des fournisseurs, les secrets des webhooks et les jetons à deux facteurs. La perdre les rend illisibles.
    </Warning>
  </Step>

  <Step title="Préparer la base et les fichiers">
    ```bash theme={null}
    php artisan migrate --force
    php artisan storage:link
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
    ```
  </Step>

  <Step title="Brancher le serveur web">
    ```nginx /etc/nginx/sites-available/lekalao theme={null}
    server {
        listen 443 ssl http2;
        server_name lekalao.example.com;
        root /var/www/lekalao/public;

        ssl_certificate     /etc/letsencrypt/live/lekalao.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/lekalao.example.com/privkey.pem;

        client_max_body_size 25M;
        index index.php;

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

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

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

    `client_max_body_size` doit laisser passer les imports (20 Mo) et les médias.
  </Step>

  <Step title="Lancer les processus">
    Horizon et le cron : voir [Processus](/fr/self-hosting/processes).
  </Step>

  <Step title="Créer le premier compte">
    Ouvrez `https://lekalao.example.com/register`. Seul le premier compte peut
    s'inscrire ; il devient **administrateur de la plateforme** et propriétaire
    de la première équipe. Les autres personnes sont invitées depuis
    **Paramètres → Équipe**.
  </Step>

  <Step title="Vérifier">
    ```bash theme={null}
    php artisan lekalao:diagnose
    ```

    Puis suivez le [démarrage rapide](/fr/guide/quickstart) : fournisseur d'envoi, domaine, adresse postale, première liste.
  </Step>
</Steps>

## Données de démonstration

Pour explorer sans rien risquer, sur une installation de test uniquement :

```bash theme={null}
php artisan db:seed --class=DemoDataSeeder
```
