dev4: Nginx reverse proxy /lecoffre + correctifs; front prod build; ajout NODE_OPTIONS; docs & tests; fix 502

This commit is contained in:
Nicolas Cantu 2025-09-16 16:56:21 +00:00
parent 9d4189927d
commit 66ebb63ce8
6 changed files with 95 additions and 31 deletions

View File

@ -1,13 +1,14 @@
#Variables d'environnement pour l'application back-end #Variables d'environnement pour l'application back-end
# Configuration IDNOT # Configuration IDNOT
IDNOT_ANNUARY_BASE_URL= IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire
IDNOT_API_KEY= IDNOT_API_KEY=
IDNOT_CLIENT_ID= IDNOT_CLIENT_ID=
IDNOT_CLIENT_SECRET= IDNOT_CLIENT_SECRET=
IDNOT_REDIRECT_URI= # IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client
IDNOT_TOKEN_URL= IDNOT_REDIRECT_URI=https://dev4.4nkweb.com/lecofre/authorized-client
IDNOT_API_BASE_URL= IDNOT_TOKEN_URL=https://qual-connexion.idnot.fr/user/IdPOAuth2/token/idnot_idp_v1
IDNOT_API_BASE_URL=https://qual-api.notaires.fr/annuaire
# Configuration OVH # Configuration OVH
OVH_APP_KEY= OVH_APP_KEY=
@ -16,7 +17,7 @@ OVH_CONSUMER_KEY=
OVH_SMS_SERVICE_NAME= OVH_SMS_SERVICE_NAME=
# Configuration SMS Factor # Configuration SMS Factor
SMS_FACTOR_TOKEN= SMS_FACTOR_TOKEN=.
# Configuration Mailchimp # Configuration Mailchimp
MAILCHIMP_API_KEY= MAILCHIMP_API_KEY=
@ -27,34 +28,39 @@ MAILCHIMP_LIST_ID=
STRIPE_SECRET_KEY= STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET= STRIPE_WEBHOOK_SECRET=
STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID= STRIPE_STANDARD_SUBSCRIPTION_PRICE_ID=
STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID= STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID=price_P9NsRP5xh1u9BqSFgkUDbQY
STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID= STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID=
STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID= STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID=
# Configuration serveur # Configuration serveur
APP_HOST= APP_HOST=http://localhost:3000
PORT= # API_BASE_URL=https://demo.4nkweb.com/back
API_BASE_URL= API_BASE_URL=https://dev4.4nkweb.com/back
DEFAULT_STORAGE= # DEFAULT_STORAGE=https://demo.4nkweb.com/storage
DEFAULT_STORAGE=https://dev4.4nkweb.com/storage
# Variables d'environnement pour l'application front-end # Variables d'environnement pour l'application front-end
NEXT_PUBLIC_4NK_URL= # NEXT_PUBLIC_4NK_URL=http://demo.4nkweb.com/
NEXT_PUBLIC_FRONT_APP_HOST= NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com/
NEXT_PUBLIC_IDNOT_BASE_URL= # NEXT_PUBLIC_FRONT_APP_HOST=https://demo.4nkweb.com
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT= 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_IDNOT_CLIENT_ID= NEXT_PUBLIC_IDNOT_CLIENT_ID=
NEXT_PUBLIC_BACK_API_PROTOCOL=
NEXT_PUBLIC_ANK_BASE_REDIRECT_URI=
NEXT_PUBLIC_BACK_API_PROTOCOL=http NEXT_PUBLIC_BACK_API_PROTOCOL=http
NEXT_PUBLIC_BACK_API_HOST=localhost NEXT_PUBLIC_BACK_API_HOST=localhost
NEXT_PUBLIC_BACK_API_PORT=8080 NEXT_PUBLIC_BACK_API_PORT=8080
NEXT_PUBLIC_BACK_API_ROOT_URL=/api NEXT_PUBLIC_BACK_API_ROOT_URL=/api
NEXT_PUBLIC_BACK_API_VERSION=/v1 NEXT_PUBLIC_BACK_API_VERSION=/v1
# NEXT_PUBLIC_ANK_BASE_REDIRECT_URI='http://local.4nkweb.com:3000/authorized-client'
NEXT_PUBLIC_ANK_BASE_REDIRECT_URI='https://dev4.4nkweb.com/lecoffre/authorized-client'
# WS # WS
RELAY_URLS=ws://sdk_relay:8090 # RELAY_URLS=wss://demo.4nkweb.com/ws
SIGNER_WS_URL=https://demo.4nkweb.com/signer/ RELAY_URLS=wss://dev4.4nkweb.com/ws
# SIGNER_WS_URL=https://dev4.4nkweb.com/signer/
SIGNER_WS_URL=https://dev4.4nkweb.com/signer/
# IHM URLS # IHM URLS
VITE_BOOTSTRAPURL=https://dev4.4nkweb.com/relay # VITE_BOOTSTRAPURL=http://sdk_relay:8090/
VITE_BOOTSTRAPURL=https://dev4.4nkweb.com/ws

View File

@ -30,13 +30,28 @@ server {
location /lecoffre/ { location /lecoffre/ {
proxy_pass http://127.0.0.1:3000/; proxy_pass http://127.0.0.1:3000/;
include /etc/nginx/proxy_params; include /etc/nginx/proxy_params;
# Sub-filter to ensure assets/links are prefixed with /lecoffre proxy_set_header Host $host;
proxy_set_header Accept-Encoding ""; proxy_set_header X-Forwarded-Proto http;
sub_filter_types text/html application/javascript text/css; proxy_set_header X-Forwarded-Host $host;
sub_filter_once off; proxy_set_header X-Forwarded-Prefix /lecoffre;
sub_filter 'href="/' 'href="/lecoffre/'; proxy_read_timeout 300;
sub_filter 'src="/' 'src="/lecoffre/'; }
sub_filter 'content="/' 'content="/lecoffre/';
# Next.js assets and HMR under basePath
location /lecoffre/_next/webpack-hmr {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto http;
proxy_buffering off;
proxy_pass http://127.0.0.1:3000/_next/webpack-hmr;
proxy_read_timeout 600s;
}
location /lecoffre/_next/ {
proxy_pass http://127.0.0.1:3000/_next/;
include /etc/nginx/proxy_params;
proxy_read_timeout 300; proxy_read_timeout 300;
} }

View File

@ -78,6 +78,7 @@ services:
max-size: "10m" max-size: "10m"
max-file: "3" max-file: "3"
environment: environment:
- NODE_OPTIONS=--max-old-space-size=2048
- HOME=/home/bitcoin - HOME=/home/bitcoin
- RUST_LOG=DEBUG - RUST_LOG=DEBUG
entrypoint: > entrypoint: >
@ -112,6 +113,9 @@ services:
container_name: lecoffre-front container_name: lecoffre-front
env_file: env_file:
- .env - .env
environment:
- NODE_ENV=production
- NODE_OPTIONS=--max-old-space-size=2048
ports: ports:
- "3000:3000" - "3000:3000"
networks: networks:
@ -121,6 +125,7 @@ services:
labels: labels:
- "com.centurylinklabs.watchtower.enable=true" - "com.centurylinklabs.watchtower.enable=true"
restart: unless-stopped restart: unless-stopped
command: ["sh", "-lc", "npm run build && npm run start"]
ihm_client: ihm_client:
image: git.4nkweb.com/4nk/ihm_client:dev image: git.4nkweb.com/4nk/ihm_client:dev

17
docs/DEPLOIEMENT_dev4.md Normal file
View File

@ -0,0 +1,17 @@
# Déploiement dev4.4nkweb.com
- Nginx: vhost dev4.4nkweb.com HTTP et HTTPS, reverse proxy:
- /signer vers 3001
- / vers ihm_client sur 3003
- /lecoffre vers lecoffre-front sur 3000
- /back vers lecoffre-back sur 8080
- /blindbit vers blindbit sur 8000
- /storage vers sdk_storage sur 8081
- /ws WebSocket relay
- Certificats: Lets Encrypt
- Next.js: basePath /lecoffre, build production, NODE_OPTIONS max-old-space-size 2048
- Extraits .env pertinents:
- RELAY_URLS wss://dev4.4nkweb.com/ws
- SIGNER_WS_URL https://dev4.4nkweb.com/signer/
- VITE_BOOTSTRAPURL https://dev4.4nkweb.com/ws
- Correction 502: build Next terminé, Nginx OK

9
docs/REX_502_lecoffre.md Normal file
View File

@ -0,0 +1,9 @@
# REX technique: 502 sur /lecoffre
- Symptôme: 502 Bad Gateway via Nginx, recv failed
- Cause: build Next.js initial non terminé; mémoire Node insuffisante
- Actions:
- Ajout NODE_OPTIONS max-old-space-size 2048 au service lecoffre-front
- Relance propre du conteneur (stop, rm, up)
- Vérification présence .next et démarrage next start
- Test via curl: HTTP 200 sur /lecoffre

12
tests/smoke_dev4.md Normal file
View File

@ -0,0 +1,12 @@
# Tests de fumée dev4
HTTP/HTTPS
- GET / (ihm_client) attend 200
- GET /lecoffre/ attend 200
- GET /back/health attend 200
- GET /storage/health attend 200
WebSocket
- wss://dev4.4nkweb.com/ws handshake OK
Nginx
- Certificats valides
- Pas derreurs critiques dans error.log