# Mise en service et migration HPD ## Premier essai privé 1. Ouvrir l’administration du socle. L’accès privé du site utilise le compte propriétaire habituel. 2. Créer le premier administrateur avec un identifiant personnel et un mot de passe d’au moins 12 caractères. Aucun compte ou mot de passe par défaut n’est fourni. 3. Dans « Sauvegarde & reprise », choisir `HPD_GeoProspect_Export_avant_architecture_2026-10-11.json`, vérifier le lot, puis importer. La copie réalisée contient deux fiches et une tournée, sans photos. L’import est transactionnel et n’écrase aucune fiche existante. 4. Créer un compte lecteur et un compte prospecteur. Le mot de passe provisoire sera changé à leur première connexion. Dans ce site propriétaire privé, les essais de ces comptes HPD se font après avoir franchi le même accès privé de site. 5. Ouvrir GeoProspect test. Comparer les droits, saisir un changement puis essayer une modification simultanée depuis une autre fenêtre connectée. Sur deux comptes simultanés, utiliser des profils de navigateur distincts ; un même profil partage ses cookies et le changement de compte verrouille les autres fenêtres. 6. Exporter une sauvegarde chiffrée avant tout changement d’hébergement. La phrase de sauvegarde doit être conservée séparément du fichier. GeoProspect V15.5 à son adresse actuelle demeure inchangé. Le socle possède une autre base et un autre stockage de fichiers. Les modifications de test ne sont pas répercutées dans la base de production. ## Serveur autonome Node 22.13 ou plus récent. Le serveur utilise les bibliothèques intégrées ; les dépendances Vinext ne sont pas requises pour ce mode. ```sh node server/migrate-cli.mjs init /srv/hpd/data ``` Configurer en dehors du dépôt : `HPD_DATA_DIRECTORY`, `HPD_PUBLIC_ORIGIN` (HTTPS), `HPD_HOST`, `PORT`, `HPD_SETUP_TOKEN` (secret aléatoire) et, si nécessaire, `HPD_ALLOWED_ORIGINS` (origines exactes séparées par virgules). Démarrer avec : ```sh node server/node-http.mjs ``` Le processus doit être derrière un proxy HTTPS. Le port interne reste privé. Dans le formulaire de première ouverture du serveur autonome, saisir la clé de mise en service. Après création du premier compte, retirer `HPD_SETUP_TOKEN` du service et redémarrer. Le marqueur d’initialisation et l’unicité du premier compte empêchent une seconde initialisation. Le Dockerfile fournit ce même service ; monter `/data` sur un volume durable, accessible à l’utilisateur du conteneur. Sauvegarder `hpd.sqlite` via les outils fournis et `/data/files` ensemble, et conserver une copie sur un autre serveur. Une suppression du conteneur ne doit pas supprimer le volume. Le HTTP local est réservé au développement explicite : `HPD_ALLOW_HTTP_LOCAL=true` avec une origine `http://127.0.0.1:PORT` ou `http://localhost:PORT`. Ne pas activer cette exception en production. ## Sauvegarde et restauration ```sh node server/migrate-cli.mjs backup /srv/hpd/data /srv/hpd/backups/HPD_chiffree.json node server/migrate-cli.mjs restore /srv/hpd/nouvelle-base /srv/hpd/backups/HPD_chiffree.json ``` La phrase est lue sur une entrée masquée. Ne pas la passer dans les arguments de commande. Le fichier de sortie n’est jamais remplacé silencieusement. Le migrateur applique les migrations versionnées, vérifie la sauvegarde, les relations et les empreintes des photos, puis restaure les tables dans une transaction. Les sessions ne sont pas reprises ; les utilisateurs doivent se reconnecter avec leurs identifiants HPD. Arrêter les écritures du serveur source pendant la sauvegarde définitive et la bascule. Sur le site pilote, les données relationnelles sont lues dans une transaction, et les octets de chaque photo sont vérifiés contre leur empreinte. Les photos archivées restent conservées. La restauration de volumes supérieurs aux limites intégrées devra utiliser un export SQL et un transfert de fichiers adaptés. Procédure de changement de serveur : préparer la cible vide, restaurer, vérifier comptes/droits/nombre de fiches/photos/UUID, essayer GeoProspect, modifier l’origine API et le DNS, surveiller, conserver l’ancien serveur en lecture seule le temps de valider. Éviter deux serveurs acceptant simultanément des écritures sur des copies divergentes. Le mode autonome conserve les fonctions principales de carte, compte, fiches, photos et tournées. Les deux routes de mise à jour du catalogue cartographique existant sont spécifiques à l’hébergement Sites ; le serveur autonome les refuse avec HTTP 501. Les fichiers cartographiques déjà livrés restent consultables. Porter ce mécanisme avant une migration opérationnelle de l’ensemble de GeoProspect. ## Brancher une future application Utiliser HTTPS et l’API v1. Ajouter l’application à la liste active et lui attribuer sa permission, puis consommer le contrat `public/api-contract.json`. Les téléphones utilisent des jetons Bearer conservés dans le coffre du système. Les applications Web de la même famille de domaines peuvent utiliser les cookies de l’API avec une liste CORS explicite. Un domaine extérieur demande une stratégie de connexion dédiée ; activer CORS seul ne contourne pas SameSite. Pour modifier une fiche, fournir uniquement les champs concernés, sa version et une clé unique de l’opération. Une réponse 409 exige une comparaison explicite. Une réponse 401 exige renouvellement ou reconnexion ; une réponse 403 exige respecter les droits ou changer le mot de passe provisoire, jamais forcer la synchronisation. La biométrie ou le schéma Android déverrouilleront une session autorisée et limitée. Aucun mot de passe, schéma ou gabarit biométrique ne doit être enregistré dans la base HPD. Cette intégration native doit être testée dans la prochaine APK, notamment avec plusieurs comptes sur un téléphone.