# Installer RenewCMS | RenewCMS Docs

> Démarrez avec Docker ou un exécutable, puis vérifiez votre compte propriétaire.

Page canonique: https://renewcms.dev/fr/resources/install

## Préparer les réglages

Choisissez l’adresse du CMS pour `PUBLIC_URL`. Pour un essai local, utilisez `http://localhost:8080` et `ENVIRONMENT=development`. Pour une instance publique, utilisez l’adresse HTTPS finale et `ENVIRONMENT=production`.

Générez `JWT_SECRET` avec `openssl rand -hex 32`. Gardez cette valeur secrète et stable entre les redémarrages. Renseignez `SMTP_HOST`, `SMTP_PORT`, `SMTP_LOGIN`, `SMTP_PASSWORD` et `SMTP_SENDER` avec les valeurs de votre fournisseur de messagerie. RenewCMS utilise SMTP pour les vérifications et les invitations.

Utilisez cet exemple pour une installation publique. Remplacez les valeurs d’exemple par l’adresse de votre CMS, le secret généré et les réglages de votre fournisseur de messagerie.

```dotenv
PUBLIC_URL=https://cms.example.com
ENVIRONMENT=production
JWT_SECRET=replace-with-generated-secret
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_LOGIN=cms@example.com
SMTP_PASSWORD=replace-with-mail-password
SMTP_SENDER=cms@example.com
```

## Démarrer avec Docker Compose

Exécutez les trois premières lignes dans un terminal avec Docker et Compose v2. Modifiez `docker.env` avec vos réglages avant de lancer les deux dernières lignes. Le contrôle de santé doit répondre ok.

```bash
mkdir renewcms && cd renewcms
curl -fsSLO https://git.floriansylvain.fr/fsylvain/RenewCMS/raw/branch/main/docker-compose.yml
curl -fsSL https://git.floriansylvain.fr/fsylvain/RenewCMS/raw/branch/main/docker.env.example -o docker.env
docker compose up -d
curl -fsS http://localhost:8080/healthz
```

## Lancer l’exécutable autonome

Téléchargez la version adaptée à votre système et à votre processeur (amd64 ou arm64). Définissez les variables d’environnement dans votre terminal, rendez le fichier exécutable sous Linux ou macOS, puis lancez-le depuis le dossier où vous souhaitez conserver les données. Sous Windows, utilisez le fichier `.exe`. Vérifiez `/healthz` avant d’ouvrir le CMS.

Pour une installation Linux permanente, lancez l’exécutable comme service avec un utilisateur dédié. Donnez-lui accès en écriture aux chemins `DB_FILE` et `UPLOAD_DIR`, puis chargez les réglages depuis un `EnvironmentFile` privé avec systemd.

## Servir le CMS en HTTPS

Faites pointer le DNS vers votre serveur et placez un proxy inverse TLS comme Caddy devant RenewCMS. Si le proxy tourne sur le même hôte, limitez le port Compose à `127.0.0.1:8080:8080`. Pour l’exécutable, bloquez l’accès direct au port du service avec votre pare-feu. Remplacez le domaine de cet exemple par celui de `PUBLIC_URL`, puis rechargez Caddy. Renseignez `TRUSTED_PROXIES` avec l’adresse IP du proxy vue par RenewCMS afin que la limitation de débit utilise l’adresse du client.

```caddyfile
cms.example.com {
    reverse_proxy localhost:8080 {
        header_up X-Real-IP {remote_host}
    }
}
```

## Créer le compte propriétaire

Ouvrez `PUBLIC_URL` et inscrivez-vous. Le premier compte devient propriétaire. Ouvrez le message de vérification, suivez son lien et connectez-vous. Si le message n’arrive pas, vérifiez les indésirables, les paramètres SMTP et les journaux du service.

## Faire tourner l’exécutable Linux avec systemd

Installez l’exécutable dans `/opt/renewcms/renewcms`. Créez un utilisateur système renewcms et un dossier `/var/lib/renewcms` appartenant à cet utilisateur. Créez `/etc/renewcms/renewcms.env` avec les permissions 600 et ajoutez les réglages ci-dessus, `DB_FILE=/var/lib/renewcms/renewcms.db` et `UPLOAD_DIR=/var/lib/renewcms/uploads`.

Enregistrez cette unité dans `/etc/systemd/system/renewcms.service`. Lancez `sudo systemctl daemon-reload`, puis `sudo systemctl enable --now renewcms`. Vérifiez le service avec `curl -fsS http://localhost:8080/healthz`.

```ini
[Unit]
Description=RenewCMS
After=network-online.target
Wants=network-online.target

[Service]
User=renewcms
Group=renewcms
WorkingDirectory=/var/lib/renewcms
EnvironmentFile=/etc/renewcms/renewcms.env
ExecStart=/opt/renewcms/renewcms
Restart=on-failure
NoNewPrivileges=true

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