# PlumesLog serveur

Version web locale de PlumesLog 2.27.1, préparée pour un VPS. Le code métier et l'interface viennent de `../PlumesLog` ; les données de bureau ne sont jamais modifiées par cette copie.

## Utilisation locale avec le Journal d'un archiviste

```bash
cd /home/fzepparelli/Documents/PlumesLog_serveur
./start-local.sh
```

Ouvrir <http://localhost:4800>. Au premier démarrage, le script copie `../PlumesLog/data/plumeslog.json` dans `data/`. Ensuite la version serveur conserve sa propre base. Il ne faut pas faire tourner deux processus PlumesLog serveur sur ce même dossier de données.

Avant la première connexion, créer le compte administrateur dans un **autre terminal** :

```bash
cd /home/fzepparelli/Documents/PlumesLog_serveur
PLUMESLOG_DATA="$PWD/data" ./scripts/init-admin.sh admin
```

Le script demande le mot de passe sans l'afficher. Il doit contenir au moins 12 caractères. Dans « Mon compte et fermes », chacun peut modifier son identifiant et son mot de passe. L'administrateur crée les comptes et les fermes, renomme les fermes, attribue les accès et peut réinitialiser les mots de passe. La déconnexion est dans le menu latéral.

Les comptes et les rattachements sont stockés dans `data/access.json`. La ferme historique « Le Verger des Plumes » conserve sa base dans `data/plumeslog.json` et ses sauvegardes dans `data/backups/`. Chaque nouvelle ferme possède sa propre base et ses propres sauvegardes sous `data/fermes/<identifiant>/`. Les ateliers, parcours, itinéraires techniques, stocks et données financières sont donc indépendants. L'import et l'export portent uniquement sur la ferme active ; ils ne modifient jamais les comptes. Les anciens comptes sont automatiquement rattachés à la ferme historique.

Le lien « PlumesLog » est installé comme extension obligatoire WordPress dans `/home/fzepparelli/Documents/levergerdesplumes/sites/html/wp-content/mu-plugins/plumeslog-menu.php`. Il est ajouté au menu principal GeneratePress, y compris son menu de pages de secours. Dans la copie locale du site, il ouvre `http://localhost:4800/`. Le script `refresh-local.sh` réinstalle ce lien après chaque rafraîchissement du site.

## Déploiement VPS

Prévoir Node.js >= 22.12, Apache avec `mod_proxy` et `mod_proxy_http`, un certificat HTTPS et un enregistrement DNS `plumeslog.levergerdesplumes.fr` pointant vers le VPS. Les comptes administrateur et utilisateur ont les mêmes droits métier dans les fermes auxquelles ils sont rattachés ; seuls les administrateurs gèrent les comptes et les rattachements.

1. Copier ce dossier dans `/opt/plumeslog` sans `data/`. Créer un compte système `plumeslog`, puis `/var/lib/plumeslog` appartenant à ce compte avec permissions `0700`. Garder le code en lecture pour ce compte. Ne pas copier les données locales sur le VPS sans avoir choisi explicitement cette migration.
2. Créer l'administrateur avant l'ouverture publique : `cd /opt/plumeslog && sudo -u plumeslog env PLUMESLOG_DATA=/var/lib/plumeslog ./scripts/init-admin.sh admin`. Le mot de passe est saisi sans affichage.
3. Installer `deploy/plumeslog.service` dans `/etc/systemd/system/`, puis `systemctl daemon-reload`, `systemctl enable --now plumeslog`. Le service écoute uniquement sur `127.0.0.1:4800`, stocke ses données dans `/var/lib/plumeslog` et attend le nom public défini par `PLUMESLOG_PUBLIC_ORIGIN`.
4. Sur Debian/Ubuntu, activer les modules avec `sudo a2enmod proxy proxy_http ssl`. Utiliser `deploy/apache-plumeslog-http.conf` pour la validation HTTP de Certbot avec le dossier `/var/www/plumeslog-acme`, puis demander un certificat pour `plumeslog.levergerdesplumes.fr` avec `certbot certonly --webroot`. Activer ensuite `deploy/apache-plumeslog-ssl.conf`, qui inclut `deploy/apache-plumeslog.conf` dans un VirtualHost **dédié** au sous-domaine. Ne pas ajouter ce proxy au VirtualHost d'un site WordPress. Vérifier avec `sudo apache2ctl configtest`, puis recharger Apache. Installer `deploy/certbot-reload-plumeslog.sh` dans `/etc/letsencrypt/renewal-hooks/deploy/` pour que le certificat renouvelé soit pris en compte. Sur une autre distribution, adapter les commandes d'activation des modules et le nom du service Apache.
5. Installer `deploy/plumeslog-menu.php` dans `wp-content/mu-plugins/` des deux sites WordPress si le lien doit apparaître sur le Journal et sur le Verger. Le lien pointera vers `https://plumeslog.levergerdesplumes.fr/`.
6. Vérifier dans le navigateur : accès au sous-domaine → écran de connexion → accueil et saisie d'essai ; vérifier aussi que l'accès direct au port 4800 depuis Internet est impossible.

La base, les comptes et les sauvegardes sont sous `/var/lib/plumeslog`. Sauvegarder ce dossier hors du VPS, avec une rétention et une restauration testée. Une mise à jour du code ne doit pas écraser ce dossier. Avant un transfert de données locales, arrêter le service, conserver une copie de la base du VPS, importer un export PlumesLog par l'interface puis redémarrer.

## Vérification

```bash
npm test
php -l deploy/plumeslog-menu.php
```

Aucune installation npm n'est nécessaire au fonctionnement du serveur. La version Electron reste dans le projet source `../PlumesLog`.
