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

2.3 KiB
Raw Permalink Blame History

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 startnode 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 : startnode 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).