ncantu 937646cc45 Daily backup to git cron, backup/restore scripts, docs
**Motivations:**
- Export Signet and mining wallet backups to git with only 2 versions kept
- Document and add backup/restore scripts for signet and mining wallet

**Correctifs:**
- Backup-to-git uses SSH URL for passwordless cron; copy timestamped files only; prune to 2 versions; remove *-latest from backup repo

**Evolutions:**
- data/backup-to-git-cron.sh: daily export to git.4nkweb.com/4nk/backup
- save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh
- features/backup-to-git-daily-cron.md, docs/MAINTENANCE.md backup section
- .gitignore: data/backup-to-git.log

**Pages affectées:**
- .gitignore, data/backup-to-git-cron.sh, docs/MAINTENANCE.md, features/backup-to-git-daily-cron.md
- save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh
- Plus autres fichiers modifiés ou non suivis déjà présents dans le working tree
2026-02-04 03:07:57 +01:00
..

API Filigrane Bitcoin Signet

Auteur : Équipe 4NK Date : 2026-01-25 Version : 1.0.0

Description

API REST pour ajouter un filigrane à des documents, les convertir en PDF, et les ancrer sur la blockchain Bitcoin Signet. Cette API permet d'ancrer à la fois le document original et le document filigrané.

Caractéristiques

  • Port : 3022
  • Format : JSON REST API
  • Conversion : Tous types de documents → PDF
  • Filigrane : Ajout de texte, dates, signatures, informations blockchain
  • Ancrage : Appel automatique à l'API d'ancrage pour les deux documents

Installation

Prérequis

  • Node.js >= 18.0.0
  • Accès à l'API d'ancrage (port 3010)
  • Accès au dashboard blockchain (port 3020) pour les infos de bloc

Installation des Dépendances

cd api-filigrane
npm install

Configuration

  1. Créer le fichier .env :
# API Configuration
WATERMARK_API_PORT=3022
WATERMARK_API_HOST=0.0.0.0

# API Keys (séparées par des virgules)
API_KEYS=your-api-key-here,another-api-key

# Anchor API Configuration
ANCHOR_API_URL=http://localhost:3010

# Blockchain API Configuration (pour récupérer les infos de bloc)
BLOCKCHAIN_API_URL=http://localhost:3020

# Logging
LOG_LEVEL=info
NODE_ENV=production

Important :

  • API_KEYS : Définir au moins une clé API valide (séparées par des virgules)
  • ANCHOR_API_URL : URL de l'API d'ancrage
  • BLOCKCHAIN_API_URL : URL du dashboard blockchain pour récupérer les infos de bloc

Démarrage

Mode Développement

npm run dev

Mode Production

npm start

Avec PM2 (recommandé pour production)

# Installer PM2 globalement
sudo npm install -g pm2

# Démarrer l'API avec PM2
pm2 start src/server.js --name watermark-api

# Sauvegarder la configuration PM2
pm2 save

# Configurer PM2 pour démarrer au boot
pm2 startup
# Suivre les instructions affichées

Endpoints

GET /health

Vérifie l'état de santé de l'API.

Authentification : Non requise

Réponse :

{
  "ok": true,
  "service": "watermark-api",
  "version": "1.0.0",
  "timestamp": "2026-01-25T12:00:00.000Z"
}

POST /api/watermark/document

Ajoute un filigrane à un document, le convertit en PDF, et ancre les deux versions (originale et filigranée).

Authentification : Requise (clé API dans le header x-api-key)

Headers :

x-api-key: your-api-key-here
Content-Type: application/json

Body :

{
  "apiKey": "your-api-key-here",
  "textContent": "Texte à convertir en PDF",
  "fileData": "base64-encoded-file-data",
  "fileName": "document.pdf",
  "mimeType": "application/pdf",
  "watermarkOptions": {
    "enabled": true,
    "text": "Texte libre du filigrane",
    "signature": "Signature cryptographique",
    "watermarkedFileName": "document-watermarked.pdf",
    "originalFileName": "document-original.pdf",
    "dateUTC": true,
    "dateLocal": true,
    "blockNumber": true,
    "blockHash": true,
    "documentHash": true
  }
}

Réponse (succès) :

{
  "success": true,
  "options": { ... },
  "original": {
    "txid": "...",
    "status": "pending",
    "confirmations": 0,
    "file": {
      "name": "document-original.pdf",
      "extension": "pdf",
      "data": "base64-encoded-pdf-data"
    }
  },
  "watermarked": {
    "txid": "...",
    "status": "pending",
    "confirmations": 0,
    "file": {
      "name": "document-watermarked.pdf",
      "extension": "pdf",
      "data": "base64-encoded-pdf-data"
    }
  }
}

Options de Filigrane

  • text : Texte libre à afficher dans le filigrane (optionnel)
  • signature : Signature cryptographique à afficher (optionnel)
  • watermarkedFileName : Nom du fichier PDF filigrané (optionnel, utilise le nom d'origine avec extension .pdf si non fourni)
  • originalFileName : Nom du fichier original (optionnel, utilise "origin.md" si texte saisi et non fourni)
  • dateUTC : Ajouter la date UTC dans le filigrane (case à cocher)
  • dateLocal : Ajouter la date locale dans le filigrane (case à cocher)
  • blockNumber : Ajouter le numéro de bloc actuel (case à cocher)
  • blockHash : Ajouter le hash du bloc actuel (case à cocher)
  • documentHash : Ajouter le hash du document d'origine (case à cocher)

Le filigrane est ajouté en bas à gauche de chaque page du PDF.

Conversion de Documents

L'API convertit automatiquement :

  • Images : PNG, JPG, etc. → PDF (PNG converti en JPG puis en PDF)
  • Texte : Tous types de texte → PDF
  • PDF : Conservé tel quel

Architecture

Client (Dashboard)
  ↓ HTTPS
API Filigrane (port 3022)
  ↓ HTTP
API Ancrage (port 3010)
  ↓ RPC
Bitcoin Signet Node (port 38332)

Sécurité

  • Authentification : Clé API requise pour tous les endpoints sauf /health
  • Validation : Validation stricte des entrées
  • Limite de taille : 50MB par défaut pour les requêtes

Dépannage

L'API ne démarre pas

  • Vérifier que le port 3022 n'est pas utilisé : netstat -tlnp | grep 3022
  • Vérifier les logs : pm2 logs watermark-api
  • Vérifier la configuration dans .env

Erreur "Failed to anchor document"

  • Vérifier que l'API d'ancrage est accessible : curl http://localhost:3010/health
  • Vérifier que la clé API est valide
  • Vérifier les logs de l'API d'ancrage

Erreur de conversion PDF

  • Vérifier que les dépendances sont installées : npm install
  • Vérifier les logs pour les erreurs spécifiques

Structure des Fichiers

api-filigrane/
├── package.json
├── README.md
├── start.sh
├── .env.example
└── src/
    ├── server.js          # Serveur Express
    ├── logger.js          # Logger
    └── routes/
        ├── watermark.js   # Routes de filigrane
        └── health.js       # Routes de santé

Licence

MIT