# RH Planète — installation du ZIP sur cPanel

## 1. Placer les fichiers

Extraire le ZIP dans la racine PRIVÉE de l’application Python, par exemple /home/COMPTE/apps/rh-planete, distincte du dossier web public. Ne pas déposer les sources SQL/Python et les documents d’audit dans public_html. Le ZIP contient directement app.py et passenger_wsgi.py, sans dossier parent supplémentaire.

Créer également /home/COMPTE/private/rh-justificatifs, accessible à l’utilisateur de l’application uniquement.

## 2. Configurer Python dans cPanel

Python 3.11 ou 3.12 ; URL de l’application à la racine du domaine RH confirmé ; démarrage passenger_wsgi.py ; objet application. Activer le virtualenv indiqué par cPanel dans le terminal et se placer dans le dossier extrait.

```sh
python -m pip install -r requirements-production.txt
python migration_cpanel.py --host localhost --port 5432
```

Le mot de passe PostgreSQL est demandé sans affichage. localhost:5432 est une hypothèse pour une base sur le même serveur : remplacer si nécessaire. Le script ne copie pas les salariés locaux et ne crée aucun compte. Sauvegarder toute base existante avant migration.

## 3. Variables de l’application

Dans les variables d’environnement cPanel :

| Variable | Valeur |
|---|---|
| RH_ENV | production |
| PGHOST | localhost ou hôte PostgreSQL confirmé |
| PGPORT | 5432 ou port confirmé |
| PGDATABASE | n788705_rhplanete |
| PGUSER | n788705_rhplaneteprod |
| PGPASSWORD | Mot de passe PostgreSQL, à saisir dans cPanel |
| RH_SECRET_KEY | Secret aléatoire persistant, au moins 32 caractères |
| RH_UPLOAD_DIR | /home/COMPTE/private/rh-justificatifs |
| RH_ALLOWED_HOSTS | Nom de domaine RH exact, sans https:// ni chemin |

Générer RH_SECRET_KEY avec `python -c "import secrets; print(secrets.token_hex(32))"`, puis conserver cette valeur dans cPanel. Ne pas la régénérer à chaque démarrage.

Retirer toute ancienne DATABASE_URL et RH_DATABASE : elles sont prioritaires sur PGHOST/PGDATABASE et pourraient diriger vers une mauvaise base. RH_PROXY_HOPS=1 uniquement si l’hébergeur confirme un proxy de confiance ; sinon laisser absent.

## 4. Créer le premier administrateur

Le terminal peut ne pas hériter des variables définies dans l’interface cPanel. Les renseigner également dans la session shell du virtualenv :

```sh
export RH_ENV=production
export PGHOST=localhost
export PGPORT=5432
export PGDATABASE=n788705_rhplanete
export PGUSER=n788705_rhplaneteprod
unset DATABASE_URL RH_DATABASE
read -r -s -p 'Mot de passe PostgreSQL : ' PGPASSWORD
printf '\n'
export PGPASSWORD
read -r -s -p 'RH_SECRET_KEY définie dans cPanel : ' RH_SECRET_KEY
printf '\n'
export RH_SECRET_KEY
python app.py create-user --username votre.identifiant --name "Votre nom" --role admin
```

Le programme demande un mot de passe initial masqué : choisir un mot de passe unique de 12 caractères minimum. Aucun mot de passe fourni dans le chat et aucun compte de démonstration ne figurent dans le ZIP.

## 5. Activer et vérifier

Certificat HTTPS valide, redirection HTTPS puis redémarrage de l’application Python dans cPanel. Vérifier connexion, droits, formulaires, pièces, soldes et paie sur PostgreSQL. Vérifier qu’une URL directe vers un fichier source/SQL ne le télécharge pas. Les journaux restent privés.

La démonstration doit utiliser des données fictives. SMTP et anniversaires restent désactivés tant que non configurés. La validation complète PostgreSQL/cPanel et des règles RH reste nécessaire : lire CORRECTIONS_AUDIT.md. Aucun fichier local réel, justificatif ou secret n’est inclus.
