anchorage_layer_simple/features/api-relay-evolutions.md
ncantu 46bf9676a0 Install and enable all missing systemd services
**Motivations:**
- Ensure all application directories have systemd services enabled at boot
- Complete service installation for api-relay, filigrane-api, and clamav-api
- Fix dependencies and import issues preventing clamav-api from starting

**Root causes:**
- Three services (api-relay, filigrane-api, clamav-api) had service files but were not installed in systemd
- api-clamav had incorrect node-clamav version (0.12.1) that doesn't exist
- api-clamav dependencies were not installed (node_modules missing)
- ES module import syntax incompatible with CommonJS node-clamav package

**Correctifs:**
- Installed api-relay.service, filigrane-api.service, and clamav-api.service in /etc/systemd/system/
- Enabled all three services for automatic startup at boot
- Updated api-clamav/package.json: changed node-clamav version from ^0.12.1 to ^1.0.11
- Installed npm dependencies for api-clamav
- Fixed ES module import in api-clamav/src/routes/scan.js to use CommonJS-compatible syntax

**Evolutions:**
- All 7 application services now have systemd services enabled at boot
- Complete service coverage: anchorage-api, faucet-api, signet-dashboard, userwallet, api-relay, filigrane-api, clamav-api
- All services verified active and listening on their respective ports

**Pages affectées:**
- api-clamav/package.json
- api-clamav/src/routes/scan.js
- api-clamav/node_modules/ (new)
- api-clamav/package-lock.json (new)
- /etc/systemd/system/api-relay.service (new)
- /etc/systemd/system/filigrane-api.service (new)
- /etc/systemd/system/clamav-api.service (new)
2026-01-26 12:56:11 +01:00

42 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# API Relay Évolutions (build ESM, rate limit, CORS, logging, métriques, etc.)
**Author:** Équipe 4NK
**Date:** 2026-01-26
## Objectif
Implémenter les évolutions listées pour le relais UserWallet : build ESM compatible `node dist/`, rate limiting, CORS configurable, validation POST stricte, logging structuré (Pino), métriques Prometheus, compression, indexation par service, Bloom filter, timeouts, unité systemd, documentation.
## Impacts
- **Build** : `tsconfig` en `module`/`moduleResolution` Node16, imports avec `.js`. `npm start``node dist/index.js`.
- **Middleware** : CORS (origines via `CORS_ORIGINS`), rate limit (fenêtre et max via env), compression gzip, body limit, timeout serveur.
- **Validation** : `lib/validate` pour MsgChiffre, MsgSignature, MsgCle ; réponses 400 explicites.
- **Logging** : Pino, middleware HTTP (method, url, status, durationMs).
- **Métriques** : `GET /metrics`, Prometheus `relay_storage_entries{kind}`.
- **Bloom** : `GET /bloom`, JSON export du filtre des hash vus.
- **Storage** : index `byService` pour `getMessages(?, ?, serviceUuid)`, `getSeenHashes`, `getSignatureCount`, `getKeyCount`.
- **Déploiement** : `start.sh`, `api-relay.service`, README mis à jour.
## Modifications
- `tsconfig.json` : Node16, .js dans les imports.
- `package.json` : `start``node dist/index.js` ; deps express-rate-limit, compression, pino, prom-client, bloom-filters, @types/compression.
- `src/lib/logger.ts`, `src/lib/validate.ts`, `src/middleware/index.ts`.
- `src/routes/metrics.ts`, `src/routes/bloom.ts`.
- `src/routes/messages|signatures|keys` : validate + logger.
- `src/services/storage` : byService, rebuildServiceIndex, getSeenHashes, get*Count ; logger.
- `src/services/relay` : logger ; suppression du double check hasSeenHash.
- `src/index` : http.createServer, timeout, middleware, /metrics, /bloom.
- `start.sh`, `api-relay.service`, `README.md`.
## Modalités de déploiement
- `npm run build && npm start` ou `./start.sh`.
- Systemd : `cp api-relay.service /etc/systemd/system/`, `systemctl enable --now api-relay`.
## Modalités danalyse
- `curl /health`, `curl "/messages?start=0&end=9999999999"`, `curl /metrics`, `curl /bloom`.
- Vérifier les logs structurés (JSON Pino), rate limit (en-têtes), compression (Content-Encoding: gzip).