diff --git a/.env.bak b/.env.bak new file mode 100644 index 0000000..00a0bcf --- /dev/null +++ b/.env.bak @@ -0,0 +1,102 @@ +# Variables d'environnement pour l'application back-end +NODE_OPTIONS=--max-old-space-size=2048 +NODE_ENV=production + +# Configuration IDNOT +IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire +# IDNOT_REDIRECT_URI=http://local.4nkweb.com:3004/authorized-client +IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client +IDNOT_TOKEN_URL=https://qual-connexion.idnot.fr/user/IdPOAuth2/token/idnot_idp_v1 +IDNOT_API_BASE_URL=https://qual-api.notaires.fr + +# Configuration serveur +APP_HOST=dev4.4nkweb.com +# API_BASE_URL=https://demo.4nkweb.com/back +API_BASE_URL=https://dev4.4nkweb.com/back +# DEFAULT_STORAGE=https://demo.4nkweb.com/storage +DEFAULT_STORAGE=https://dev4.4nkweb.com/storage + +# Variables d'environnement pour l'application front-end +# NEXT_PUBLIC_4NK_URL=http://demo.4nkweb.com/ +NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com +# NEXT_PUBLIC_FRONT_APP_HOST=https://demo.4nkweb.com +NEXT_PUBLIC_FRONT_APP_HOST=https://dev4.4nkweb.com/lecoffre +NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr +NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1 +NEXT_PUBLIC_BACK_API_PROTOCOL=https +NEXT_PUBLIC_BACK_API_HOST=dev4.4nkweb.com +NEXT_PUBLIC_BACK_API_PORT=443 +NEXT_PUBLIC_BACK_API_ROOT_URL=/api +NEXT_PUBLIC_BACK_API_VERSION=v1 +# NEXT_PUBLIC_ANK_BASE_REDIRECT_URI='http://local.4nkweb.com:3004/authorized-client' +NEXT_PUBLIC_ANK_BASE_REDIRECT_URI=https://dev4.4nkweb.com/lecoffre/authorized-client +NEXT_PUBLIC_TARGET_ORIGIN=https://dev4.4nkweb.com/lecoffre +NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com +NEXT_PUBLIC_IDNOT_REDIRECT_URI=https://dev4.4nkweb.com/lecoffre/authorized-client + +NEXT_PUBLIC_DOCAPOSTE_API_URL= +NEXT_PUBLIC_API_URL=https://dev4.4nkweb.com/api +NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=28c9a3a8151bef545ebf700ca5222c63d0031ad593097e95c1de202464304a99 +NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev4.4nkweb.com/storage + +# WS +# RELAY_URLS=wss://demo.4nkweb.com/ws +RELAY_URLS=wss://dev4.4nkweb.com/ws + +# SIGNER_WS_URL=ws://dev4.4nkweb.com/signer/ +SIGNER_WS_URL=ws://dev3.4nkweb.com +SIGNER_BASE_URL=https://dev3.4nkweb.com + +# IHM URLS +# VITE_BOOTSTRAPURL=http://sdk_relay:8090/ +VITE_BOOTSTRAPURL=https://dev4.4nkweb.com/ws/ + +# Cartes de test Stripe +SUCCES='4242 4242 4242 4242' +DECLINED='4000 0025 0000 3155' +ENABLE_SUBSCRIPTION_STUB=true +CORS_ALLOWED_ORIGINS=http://local.4nkweb.com:3000,https://dev4.4nkweb.com + +core_url="http://bitcoin:38332" +ws_url="0.0.0.0:8090" +wallet_name="default" +network="signet" +blindbit_url="http://blindbit:8000" +zmq_url="tcp://bitcoin:29000" +storage="https://dev4.4nkweb.com/storage" +data_dir="/home/bitcoin/.4nk" +bitcoin_data_dir="/home/bitcoin/.bitcoin" + + +# ================== /!\ sensible ========================= + +# Configuration IDNOT +IDNOT_API_KEY=ba557f84-0bf6-4dbf-844f-df2767555e3e +IDNOT_CLIENT_ID=B3CE56353EDB15A9 +IDNOT_CLIENT_SECRET=3F733549E879878344B6C949B366BB5CDBB2DB5B7F7AB7EBBEBB0F0DD0776D1C +NEXT_PUBLIC_IDNOT_CLIENT_ID=B3CE56353EDB15A9 + +# Configuration OVH +OVH_APP_KEY=5ab0709bbb65ef26 +OVH_APP_SECRET=de1fac1779d707d263a611a557cd5766 +OVH_CONSUMER_KEY=5fe817829b8a9c780cfa2354f8312ece +OVH_SMS_SERVICE_NAME=sms-tt802880-1 + +# Configuration SMS Factor +SMS_FACTOR_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4NzgzNiIsImlhdCI6MTcwMTMzOTY1Mi45NDUzOH0.GNoqLb5MDBWuniNlQjbr1PKolwxGqBZe_tf4IMObvHw + +# Configuration Mailchimp +MAILCHIMP_API_KEY=md-VVfaml-ApIV4nsGgaJKl0A +MAILCHIMP_KEY=3fa54304bc766dfd0b8043a827b28a3a-us17 +MAILCHIMP_LIST_ID=a48d9ad852 + +# Configuration Stripe +STRIPE_SECRET_KEY=sk_test_51OwKmMP5xh1u9BqSeFpqw0Yr15hHtFsh0pvRGaE0VERhlYtvw33ND1qiGA6Dy1DPmmV61B6BqIimlhuv7bwElhjF00PLQwD60n +STRIPE_WEBHOOK_SECRET= +STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID=price_1P66fuP5xh1u9BqSHj0O6Uy3 +STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID=price_1P9NsRP5xh1u9BqSFgkUDbQY +STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID=price_1P66RqP5xh1u9BqSuUzkQNac +STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID=price_1P9NpKP5xh1u9BqSApFogvUB + +SIGNER_API_KEY=your-api-key-change-this +VITE_JWT_SECRET_KEY=52b3d77617bb00982dfee15b08effd52cfe5b2e69b2f61cc4848cfe1e98c0bc9 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7b6f4eb..23dfa23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: restart: unless-stopped sdk_relay: - image: git.4nkweb.com/4nk/sdk_relay:dev + image: git.4nkweb.com/4nk/sdk_relay:ext container_name: sdk_relay depends_on: blindbit: @@ -70,6 +70,7 @@ services: - bitcoin_data:/home/bitcoin/.bitcoin ports: - "127.0.0.1:8090:8090" + - "127.0.0.1:8091:8091" networks: btcnet: aliases: @@ -89,7 +90,7 @@ services: exec /usr/local/bin/sdk_relay --config /home/bitcoin/.conf 2>&1 | tee -a /home/bitcoin/.4nk/logs/sdk_relay.log ' healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:8090/health"] + test: ["CMD", "curl", "-f", "http://localhost:8091/health"] interval: 30s timeout: 10s retries: 3 diff --git a/docs/ANALYSE.md b/docs/ANALYSE.md new file mode 100644 index 0000000..524d409 --- /dev/null +++ b/docs/ANALYSE.md @@ -0,0 +1,73 @@ +## Analyse détaillée + +### Périmètre + +Analyse du nœud d’orchestration `lecoffre_node` et de son `docker-compose.yml` (services, images, ports, volumes, dépendances inter‑services). + +### Stack et orchestration + +- **Compose**: `version: "3.9"` +- **Services**: `tor`, `bitcoin`, `blindbit`, `sdk_relay`, `lecoffre-back` (ext), `lecoffre-front` (ext), `ihm_client` (ext), `sdk_signer`, `sdk_storage`, `watchtower`. +- **Réseau**: bridge `4nk_node_btcnet` (subnet 172.20.0.0/16). +- **Volumes**: + - `4nk_node_bitcoin_data` → `/home/bitcoin/.bitcoin` + - `blindbit_data` → `/root/.blindbit-oracle` + - `sdk_data` → `/home/bitcoin/.4nk` + +### Ordre de démarrage et dépendances + +- `tor` → `bitcoin` (healthcheck) → `blindbit` (healthcheck) → `sdk_relay` (healthcheck) +- Services applicatifs (`lecoffre-back`, `lecoffre-front`, `ihm_client`) démarrent ensuite. +- `sdk_signer` et `sdk_storage` sont indépendants du pipeline Bitcoin/Blindbit. + +### Images et tags + +- `tor`: `btcpayserver/tor:0.4.8.10` +- `bitcoin`: `git.4nkweb.com/4nk/bitcoin:latest` +- `blindbit`: `git.4nkweb.com/4nk/blindbit-oracle:dev` +- `sdk_relay`: `git.4nkweb.com/4nk/sdk_relay:dev` +- `lecoffre-back`: `git.4nkweb.com/4nk/lecoffre-back-mini:ext` +- `lecoffre-front`: `git.4nkweb.com/4nk/lecoffre-front:ext` +- `ihm_client`: `git.4nkweb.com/4nk/ihm_client:ext` +- `sdk_signer`: `git.4nkweb.com/4nk/sdk_signer:latest` +- `sdk_storage`: `git.4nkweb.com/4nk/sdk_storage:latest` +- `watchtower`: `containrrr/watchtower` + +### Ports exposés (localhost) + +- `blindbit`: 8000 +- `sdk_relay`: 8090 +- `lecoffre-back`: 8080 +- `lecoffre-front`: 3004→3000 (127.0.0.2) +- `ihm_client`: 3003 +- `sdk_signer`: 3001 +- `sdk_storage`: 8081 + +### Configuration et logs + +- `bitcoin`: monte `./bitcoin/bitcoin.conf` en lecture seule. +- `blindbit`: copie `./blindbit/blindbit.toml` vers `$HOME/.blindbit-oracle/blindbit.toml`. +- `sdk_relay`: `./relay/sdk_relay.conf` monté en lecture seule; sortie multiplexée vers `/home/bitcoin/.4nk/logs/sdk_relay.log`. + +### Healthchecks + +- `bitcoin`: `bitcoin-cli getblockchaininfo` +- `blindbit`: sondage HTTP `GET /tweaks/1` +- `sdk_relay`: `GET /health` + +### Risques et incohérences relevés + +- Tags d’images hétérogènes (`latest`, `dev`, `ext`). Préférer une convention unique et traçable. +- Contrainte interne: usage recommandé du tag `docker-support-v2` au lieu de `latest`. Harmonisation à planifier. +- `sdk_signer` listé alors qu’il n’est pas utilisé sur la machine. Éviter son démarrage par défaut pour réduire l’empreinte. +- Exposition multi‑IP (`127.0.0.2` pour `lecoffre-front`). Vérifier la résolution locale et la compatibilité outillage. + +### Actions proposées + +- Normaliser les tags d’images (`dev-test` pour branches de test; `docker-support-v2` pour releases) et documenter la politique. +- Paramétrer le démarrage conditionnel de `sdk_signer` (profil/override compose). +- Centraliser les variables d’environnement communes dans `.env` et documenter leurs valeurs attendues. +- Aligner la rotation des logs et vérifier la capacité des volumes (`sdk_data`, `bitcoin_data`). + + + diff --git a/docs/ENV-RESUME.md b/docs/ENV-RESUME.md new file mode 100644 index 0000000..c843f43 --- /dev/null +++ b/docs/ENV-RESUME.md @@ -0,0 +1,42 @@ +## Résumé des environnements (plateforme) + +### Contexte fonctionnel + +- **Site principal**: `https://dev4.4nkweb.com/lecoffre` +- **Intégration Iframe**: hôte `https://dev4.4nkweb.com` +- **Service Signer**: utilisé depuis `https://dev3.4nkweb.com` + +### Cartographie (compose et apps) + +- `lecoffre-front` (Next.js): basePath `/lecoffre`; variables `NEXT_PUBLIC_*` orientées vers `dev4.4nkweb.com` et services backend. +- `lecoffre-back-mini` (Express): exposé en interne sur 8080; consommé par le front via `NEXT_PUBLIC_API_URL`. +- `sdk_relay`: exposé sur 8090; consommé par les clients qui en ont besoin. +- `ihm_client`: exposé sur 3003; intégré/embarqué si nécessaire. +- `sdk_signer`: non utilisé localement sur la machine, signer consommé depuis `dev3.4nkweb.com`. + +### Valeurs attendues (synthèse) + +- Front (Next.js): + - `NEXT_PUBLIC_FRONT_APP_HOST=dev4.4nkweb.com` + - `NEXT_PUBLIC_FRONT_APP_PORT` (selon déploiement; non nécessaire en prod si 443) + - `NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com` + - `NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com` + - `NEXT_PUBLIC_API_URL` pointant vers l’API (`lecoffre-back-mini`) accessible depuis le navigateur + - `NEXT_PUBLIC_BACK_API_*` si utilisés pour construire l’URL back (protocol/host/port/root/version) + - `NEXT_PUBLIC_IDNOT_*`, `NEXT_PUBLIC_DOCAPOSTE_API_URL` selon intégrations + - `NEXT_PUBLIC_DEFAULT_*` (validator, storages) selon besoins + +- Back (`lecoffre-back-mini`): + - Variables DB, clés Stripe/Mail, endpoints externes (non détaillés ici; `.env` validés) + +- Signer (externe): + - Ciblage de `dev3.4nkweb.com` côté front/back pour les opérations de signature. + +### Remarques + +- Les fichiers `.env` existants sont validés OK. +- S’assurer de la cohérence entre `basePath` `/lecoffre` et les URLs publiques (liens, redirections, assets). +- Documenter un `.env.example` à jour dans chaque projet pour reproduire la configuration. + + + diff --git a/log/ihm_client.log b/log/ihm_client.log new file mode 100644 index 0000000..ce260fb --- /dev/null +++ b/log/ihm_client.log @@ -0,0 +1,8 @@ +2025-09-19T13:07:01 +2025-09-19T13:07:01 WARN Files in the public directory are served at the root path. +2025-09-19T13:07:01 Instead of /public/style/4nk.css, use /style/4nk.css. +2025-09-19T13:07:01 +2025-09-19T13:23:38 +2025-09-19T13:23:38 WARN Files in the public directory are served at the root path. +2025-09-19T13:23:38 Instead of /public/style/4nk.css, use /style/4nk.css. +2025-09-19T13:23:38 diff --git a/log/lecoffre-back.log b/log/lecoffre-back.log new file mode 100644 index 0000000..e69de29 diff --git a/log/lecoffre-front.log b/log/lecoffre-front.log new file mode 100644 index 0000000..5303972 --- /dev/null +++ b/log/lecoffre-front.log @@ -0,0 +1,24 @@ +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:06:59 targetOrigin is already set +2025-09-19T13:06:59 iframeUrl is already set +2025-09-19T13:23:05 targetOrigin is already set +2025-09-19T13:23:05 iframeUrl is already set +2025-09-19T13:23:11 targetOrigin is already set +2025-09-19T13:23:12 iframeUrl is already set +2025-09-19T13:23:25 targetOrigin is already set +2025-09-19T13:23:25 iframeUrl is already set +2025-09-19T13:23:27 targetOrigin is already set +2025-09-19T13:23:27 iframeUrl is already set +2025-09-19T13:23:36 targetOrigin is already set +2025-09-19T13:23:36 iframeUrl is already set +2025-09-19T13:23:37 targetOrigin is already set +2025-09-19T13:23:37 iframeUrl is already set diff --git a/log/sdk_relay.log b/log/sdk_relay.log new file mode 100644 index 0000000..e69de29 diff --git a/tests/analyse.md b/tests/analyse.md index 084ad4b..93f2956 100644 --- a/tests/analyse.md +++ b/tests/analyse.md @@ -26,3 +26,7 @@ - Journaux Nginx (`error.log`) sans erreurs après reload - Logs `sdk_relay` présents dans `/home/bitcoin/.4nk/logs/sdk_relay.log` + + + +