================================================================================
  PHOQUES 3.2 — Installer le nœud volontaire sur bot-y.fr (hébergement Amen)
  pctamalou.fr · Echoes of Hackers (ÉOH) · Platon-Y
================================================================================

Ce guide s'adresse à un débutant. Durée : 15 à 20 minutes.
Résultat : https://bot-y.fr/phoques-relay/ devient un nœud volontaire HTTPS
que les utilisateurs de Phoques peuvent choisir dans Réglages › Nœud volontaire.

--------------------------------------------------------------------------------
0. CE QUE C'EST (ET CE QUE CE N'EST PAS)
--------------------------------------------------------------------------------

  • Une boîte aux lettres : un téléphone y DÉPOSE un message déjà chiffré de
    bout en bout ; le destinataire vient le RELEVER puis le fait supprimer.
  • Le nœud n'a aucune clé de message : il ne peut rien lire.
  • Pour relever une boîte, il faut PROUVER qu'on possède la clé privée de
    cette boîte (défi X25519 + HMAC, détails dans relay-amen/LISEZMOI-RELAIS.txt).
    Personne ne peut vider la boîte d'un autre.
  • Ce n'est PAS un serveur imposé : chaque utilisateur choisit (ou non) ce
    nœud, le sien, ou celui d'un ami. Phoques fonctionne sans.
  • Softaculous n'est PAS utilisé : ce n'est pas un WordPress ni un CMS,
    juste quelques fichiers PHP à déposer dans un dossier.

--------------------------------------------------------------------------------
1. CE QU'IL FAUT
--------------------------------------------------------------------------------

  • L'accès cPanel de l'hébergement Amen qui sert bot-y.fr
  • Le fichier : relay-amen/phoques-relay-amen-3.2.0.zip (dans ce pack)
  • PHP 8.1 ou plus récent (8.2 / 8.3 conseillés) avec les extensions
    sodium + pdo_sqlite (présentes par défaut sur la plupart des cPanel)
  • Le certificat HTTPS de bot-y.fr actif (AutoSSL / Let's Encrypt dans cPanel)

--------------------------------------------------------------------------------
2. TROUVER LE DOSSIER DU SITE bot-y.fr
--------------------------------------------------------------------------------

  1. Connecte-toi à cPanel (lien fourni par Amen dans ton espace client).
  2. Section « Domaines » › « Domaines ».
  3. Repère la ligne bot-y.fr : la colonne « Racine du document » donne le
     dossier, par exemple  /public_html  ou  /bot-y.fr  ou  /public_html/bot-y.fr
  4. Note-le : c'est là que tu vas créer le dossier phoques-relay.

--------------------------------------------------------------------------------
3. ENVOYER ET EXTRAIRE LE ZIP
--------------------------------------------------------------------------------

  Méthode A — Gestionnaire de fichiers cPanel (le plus simple)
    1. cPanel › Fichiers › « Gestionnaire de fichiers ».
    2. Menu « Paramètres » (en haut à droite) › coche « Afficher les fichiers
       cachés (dotfiles) » › Enregistrer. Indispensable pour voir .htaccess.
    3. Ouvre la racine du document de bot-y.fr (étape 2).
    4. « Charger » › choisis phoques-relay-amen-3.2.0.zip › attends 100 %.
    5. Reviens au dossier, clic droit sur le zip › « Extract » › Extraire.
       Un dossier  phoques-relay/  apparaît (avec .htaccess, index.php,
       config.php, cron.php, lib/, data/).
    6. Supprime le zip (clic droit › Supprimer).

  Méthode B — FTP (FileZilla)
    1. Identifiants FTP : cPanel › Fichiers › « Comptes FTP ».
    2. Hôte : ftp.bot-y.fr (ou celui indiqué par Amen), port 21, chiffrement
       « TLS explicite » si proposé.
    3. Décompresse le zip sur ton PC, puis glisse le dossier phoques-relay/
       entier dans la racine du document de bot-y.fr.
    4. Vérifie que le fichier caché  phoques-relay/.htaccess  est bien envoyé
       (FileZilla › Serveur › « Forcer l'affichage des fichiers cachés »).

--------------------------------------------------------------------------------
4. CHOISIR LA VERSION DE PHP
--------------------------------------------------------------------------------

  Selon l'offre Amen, l'un des deux menus existe :
    • cPanel › Logiciel › « MultiPHP Manager » : coche bot-y.fr › PHP 8.2
      (ou 8.3) › Appliquer.
    • cPanel › Logiciel › « Sélectionner une version de PHP » (CloudLinux) :
      version 8.2+ › onglet « Extensions » : vérifier que  sodium ,
      pdo_sqlite  (et  pdo_mysql  si tu choisis MySQL) sont cochées.

--------------------------------------------------------------------------------
5. PERMISSIONS
--------------------------------------------------------------------------------

  Dans le Gestionnaire de fichiers (clic droit › « Change Permissions ») :
    phoques-relay/            755
    phoques-relay/data/       700  (ou 750 si 700 donne une erreur)
    fichiers .php / .htaccess 644
  Le dossier data/ reçoit la base SQLite et secret.key (créés tout seuls au
  premier appel). Il est déjà bloqué côté web par deux .htaccess.

  RECOMMANDÉ — données HORS du site public :
    1. Dans le Gestionnaire de fichiers, à la racine de ton compte (/home/...,
       au-dessus de public_html), crée le dossier  phoques-relay-data  (700).
    2. Dans phoques-relay/, crée le fichier  config.local.php  :

         <?php
         return [
             'data_dir' => '/home/TONUTILISATEUR/phoques-relay-data',
         ];

       (TONUTILISATEUR = ton identifiant cPanel, visible en haut à droite de
        cPanel ou dans « Répertoire personnel » du Gestionnaire de fichiers.)
    config.local.php n'est jamais remplacé lors d'une mise à jour.

  Option MySQL (seulement si pdo_sqlite manque) :
    cPanel › « Assistant de base de données MySQL » : crée base + utilisateur
    (tous les privilèges sur cette base), puis dans config.local.php :

         <?php
         return [
             'storage' => 'mysql',
             'mysql'   => [
                 'dsn'  => 'mysql:host=localhost;dbname=UTILISATEUR_phoques;charset=ascii',
                 'user' => 'UTILISATEUR_phoques',
                 'pass' => 'MOT_DE_PASSE_LONG',
             ],
         ];

    data_dir doit rester inscriptible (il contient secret.key), sauf si tu
    renseignes  'secret' => '...64 caractères aléatoires...'  dans config.local.php.

--------------------------------------------------------------------------------
6. TÂCHE CRON DE MÉNAGE (filet de sécurité)
--------------------------------------------------------------------------------

  Le ménage (enveloppes expirées après 72 h, compteurs anti-abus) se fait déjà
  à chaque requête. La tâche cron garantit le nettoyage même sans trafic.

  cPanel › Avancé › « Tâches Cron » :
    Paramètre courant : « Une fois par heure » (0 * * * *)
    Commande :
      /usr/local/bin/php /home/TONUTILISATEUR/CHEMIN_RACINE/phoques-relay/cron.php >/dev/null 2>&1

  Exemple si la racine est public_html :
      /usr/local/bin/php /home/TONUTILISATEUR/public_html/phoques-relay/cron.php >/dev/null 2>&1

  Si la commande échoue avec PHP 7 : remplace /usr/local/bin/php par le PHP 8
  choisi, par exemple  /opt/cpanel/ea-php82/root/usr/bin/php  (MultiPHP) ou
  /opt/alt/php82/usr/bin/php  (CloudLinux).
  cron.php refuse d'être appelé depuis le web (404) et n'affiche que des
  compteurs : aucune IP, aucun contenu.

--------------------------------------------------------------------------------
7. TESTER
--------------------------------------------------------------------------------

  1. Navigateur : https://bot-y.fr/phoques-relay/
     Réponse attendue (JSON) :
       {"t":"vr_info_ok","v":1,"soft":"phoques-relay-php/3.2.0", ... "storage":"sqlite" ...}
  2. Ces adresses DOIVENT répondre « 403 Forbidden » (ou 404) :
       https://bot-y.fr/phoques-relay/data/
       https://bot-y.fr/phoques-relay/data/relay.sqlite3
       https://bot-y.fr/phoques-relay/data/secret.key
       https://bot-y.fr/phoques-relay/config.php
       https://bot-y.fr/phoques-relay/cron.php
     Si l'une affiche un contenu : .htaccess absent → recommence l'étape 3.
  3. http://bot-y.fr/phoques-relay/ (sans s) doit rediriger vers https://.
  4. Depuis la Kali (test complet, rien n'est conservé) :
       cd ~/Bureau/phoques_paddle/relay-amen
       python3 outils/phoques_relay_client.py demo https://bot-y.fr/phoques-relay/
     Attendu : « RÉSULTAT : OK » (dépôt, intrus refusé, relève, déchiffrement,
     acquittement, boîte vide).

  En cas d'erreur :
    • {"code":"no_sodium"}  → active l'extension sodium (étape 4)
    • {"code":"no_sqlite"}  → active pdo_sqlite, ou passe en MySQL (étape 5)
    • {"code":"storage"}    → droits du dossier data / data_dir (étape 5)
    • 403 sur index.php ou réponse HTML « Not Acceptable » → le pare-feu
      applicatif (ModSecurity) d'Amen filtre les requêtes : cPanel ›
      « ModSecurity » › désactiver pour bot-y.fr, ou demander au support Amen
      une exception pour /phoques-relay/.
    • 500 → cPanel › Métriques › « Erreurs » pour voir le message PHP.
    • 500 dès l'extraction, même sur la page d'infos → l'hébergeur refuse une
      directive du .htaccess : ajoute un # devant la ligne « Options … » et
      « ServerSignature Off », puis réessaie.

--------------------------------------------------------------------------------
8. METTRE L'ADRESSE DANS PHOQUES
--------------------------------------------------------------------------------

  Sur chaque téléphone :
    1. Phoques › Réglages › « Nœud volontaire ».
    2. « Ajouter et tester le nœud ÉOH » (https://bot-y.fr/phoques-relay/)
       ou saisis une autre adresse HTTPS puis « Ajouter et tester ».
    3. Le nœud passe « Actif » seulement si le test répond correctement.
       Avant ça, rien n'y est envoyé.
    4. Refaites un appairage ou un « hello » entre contacts : chacun annonce
       ainsi à l'autre le nœud où il relève sa boîte.

--------------------------------------------------------------------------------
9. LIMITES HONNÊTES
--------------------------------------------------------------------------------

  • Latence : Phoques relève sa boîte toutes les 60 s, seulement quand l'app
    est ouverte et l'identité déverrouillée (5 min après plusieurs échecs).
    App fermée = pas de notification ; les messages attendent 72 h max.
  • Hébergement mutualisé Amen : pas de processus permanent, requêtes courtes,
    limites CloudLinux (LVE : processus simultanés, CPU, mémoire). Adapté à un
    usage associatif / de petite communauté, pas à des milliers d'utilisateurs
    actifs en même temps. Le nœud répond « 429 » si une même IP abuse.
  • Ce que le nœud (et l'hébergeur) peut voir : l'heure des dépôts et relèves,
    la taille des enveloppes, l'empreinte de la boîte destinataire (SHA-256 de
    sa clé publique), et l'adresse IP de connexion. Phoques n'enregistre pas
    les IP (anti-abus = empreinte HMAC salée, purgée chaque minute), mais les
    journaux d'accès Apache d'Amen notent IP + heure + URL (jamais le contenu).
    Le contenu des messages et les clés ne sont jamais visibles.
  • Un tiers qui connaît la clé publique d'un utilisateur peut remplir sa boîte
    (200 enveloppes max, 64 Kio chacune) : gêne possible, lecture impossible.
  • Sauvegardes Amen : elles peuvent contenir la base, qui ne renferme que des
    blobs chiffrés et expirants.

--------------------------------------------------------------------------------
10. METTRE À JOUR / DÉSINSTALLER
--------------------------------------------------------------------------------

  Mise à jour : remplace index.php, cron.php, config.php, .htaccess et lib/
  par ceux du nouveau zip. Ne touche ni à config.local.php ni au dossier de
  données.
  Désinstallation : supprime le dossier phoques-relay/ (et phoques-relay-data/
  si créé), puis la tâche cron. Retire le nœud dans Phoques.
