anchorage_layer_simple/docs/WEBSITE_SKELETON.md
ncantu 6bf37be44e Cron restart services (bitcoind, mempool), service-login-verify, website-skeleton, docs
**Motivations:**
- Consigner l'état actuel du dépôt (cron, service-login-verify, website-skeleton, userwallet, docs).
- Centraliser les modifications en attente.

**Root causes:**
- N/A (commit groupé).

**Correctifs:**
- N/A.

**Evolutions:**
- Cron quotidien restart services : script local sans SSH, systemd (bitcoin-signet, bitcoin, APIs, dashboard, userwallet, website-skeleton) + Docker (mempool, bitcoin-signet-instance).
- Feature cron-restart-services-local : documentation et règle scripts locaux / pas d'SSH.
- service-login-verify : module vérification login (buildAllowedPubkeys, verifyLoginProof, nonceCache).
- website-skeleton : app iframe UserWallet, config, systemd unit.
- userwallet : collectSignatures, relay.
- docs : DOMAINS_AND_PORTS, README, WEBSITE_SKELETON ; features userwallet-contrat-login, timeouts-backoff, service-login-verify.

**Pages affectées:**
- data/restart-services-cron.sh, data/restart-services.log, data/sync-utxos.log
- features/cron-restart-services-local.md, features/service-login-verify.md, features/userwallet-contrat-login-reste-a-faire.md, features/userwallet-timeouts-backoff.md
- docs/DOMAINS_AND_PORTS.md, docs/README.md, docs/WEBSITE_SKELETON.md
- configure-nginx-proxy.sh
- service-login-verify/ (src, dist, node_modules)
- userwallet/src/utils/collectSignatures.ts, userwallet/src/utils/relay.ts
- website-skeleton/
2026-01-28 00:48:37 +01:00

112 lines
5.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# website-skeleton
Squelette dun site web qui intègre UserWallet en iframe : écoute des messages `postMessage` (auth-request, login-proof, error), vérification des preuves de login via `service-login-verify`, et affichage du statut (accepté / refusé).
## Objectif
Fournir un projet minimal, prêt à lemploi, pour:
- embarquer UserWallet dans une page via iframe ;
- communiquer avec liframe via `postMessage` (Channel Messages) ;
- vérifier les preuves de login côté parent avec le package `service-login-verify`.
Utile comme base pour un service (certificator, zapwall, etc.) qui consomme UserWallet et doit valider les sessions.
## Emplacement et structure
- **Dossier** : `website-skeleton/` à la racine du dépôt (à côté de `userwallet/`, `service-login-verify/`, `api-relay/`).
- **Stack** : Vite, TypeScript, dépendance `service-login-verify` (`file:../service-login-verify`).
### Fichiers principaux
| Fichier | Rôle |
|---------|------|
| `index.html` | Page avec iframe UserWallet, zone de statut, bouton «Demander auth» |
| `src/main.ts` | Chargement iframe, écoute `message`, envoi `auth-request`, appel `verifyLoginProof`, mise à jour du statut |
| `src/config.ts` | `USERWALLET_ORIGIN`, `DEFAULT_VALIDATEURS` (placeholder) |
| `package.json` | Scripts `dev` / `build` / `preview`, dépendance `service-login-verify` |
| `start.sh` | Build + `vite preview` sur le port 3024 (production) |
| `vite.config.ts` | `preview.allowedHosts: ['skeleton.certificator.4nkweb.com']` pour éviter 403 via proxy |
| `website-skeleton.service` | Unité systemd pour servir le site |
| `install-website-skeleton.sh` | Installation locale (build, systemd) |
| `README.md` | Instructions dinstallation, configuration et utilisation |
## Prérequis
- **service-login-verify** : exécuter `npm run build` dans `../service-login-verify` avant dinstaller ou builder le skeleton.
- **UserWallet** : à servir sur lURL configurée (`USERWALLET_ORIGIN`) pour que liframe fonctionne.
## Installation et commandes
```bash
cd website-skeleton
npm install
npm run build
```
- **Développement** : `npm run dev` → serveur sur `http://localhost:3024`.
- **Preview** : `npm run preview` après build.
## Configuration
### Origine UserWallet
- **Fichier** : `src/config.ts`.
- **Variable** : `USERWALLET_ORIGIN` = URL de liframe et `targetOrigin` pour `postMessage`.
- **Défauts** :
- En dev : `http://localhost:3018` (UserWallet en dev sur ce port).
- En prod : `https://userwallet.certificator.4nkweb.com`.
- **Override** : variable denvironnement `VITE_USERWALLET_ORIGIN` (ex. `VITE_USERWALLET_ORIGIN=http://localhost:3018 npm run dev`).
### Validateurs
- **Fichier** : `src/config.ts`, objet `DEFAULT_VALIDATEURS`.
- **Rôle** : structure des validateurs de laction login (placeholder).
- **Usage réel** : remplacer par les validateurs issus du contrat du service (action login), ou les charger depuis une API / un channel.
## Utilisation
1. Lancer UserWallet (dev ou déployé) sur lURL configurée.
2. Lancer le skeleton (`npm run dev` ou servir `dist/`).
3. Ouvrir la page du skeleton : liframe affiche UserWallet.
4. **Demander auth** : cliquer «Demander auth (auth-request) » → envoi de `auth-request` à liframe.
5. **Login** : effectuer le flux de login dans liframe ; à la fin, UserWallet envoie `login-proof` au parent. Le skeleton appelle `verifyLoginProof`, puis affiche «Login accepté» ou «Login refusé : … ».
## Messages postMessage
| Type | Sens | Rôle du skeleton |
|------|------|-------------------|
| `auth-request` | Parent → iframe | Envoyé au clic sur «Demander auth». |
| `auth-response` | Iframe → parent | Affichage «Auth reçu». |
| `login-proof` | Iframe → parent | Vérification via `verifyLoginProof`, mise à jour du statut. |
| `error` | Iframe → parent | Affichage du message derreur. |
## Déploiement
- **Port** : 3024 (aucun conflit avec le Dashboard, 3020).
- **Backend** : machine 192.168.1.168 (site + service systemd).
- **Proxy** : 192.168.1.100 ; Nginx route `skeleton.certificator.4nkweb.com``http://192.168.1.168:3024`.
- **Certificat** : Let's Encrypt sur le proxy pour `skeleton.certificator.4nkweb.com` (via `configure-nginx-proxy.sh` / `update-proxy-nginx.sh`).
### Installation
1. **Sur la machine backend (192.168.1.105)** :
```bash
./website-skeleton/install-website-skeleton.sh
```
Construit le front, installe et démarre le service systemd (`website-skeleton.service`).
2. **Proxy + certificat** : à partir de la racine du dépôt,
```bash
./update-proxy-nginx.sh
```
Configure Nginx sur le proxy (.100), génère le certificat pour `skeleton.certificator.4nkweb.com`, recharge Nginx.
Voir `docs/DOMAINS_AND_PORTS.md` pour les domaines et ports.
## Références
- **Package vérification** : `service-login-verify/`, `features/service-login-verify.md`
- **Iframe et login** : `userwallet/`, `features/userwallet-contrat-login-reste-a-faire.md` (§3.7)
- **Relais** : `api-relay/`, `docs/DOMAINS_AND_PORTS.md`