DÉPLOIEMENT ON-PREM// INFRASTRUCTURE POLICIÈRE ISOLÉE

Guide de déploiement sécurisé
forces de l'ordre.

Déploiement Docker sur infrastructure interne. Aucun accès internet sortant requis après installation initiale. Données biométriques et judiciaires ne quittent jamais votre réseau.

← PAGE POLICING
01

Prérequis système

OSUbuntu 22.04 LTS / Rocky Linux 9 / RHEL 9
CPU4 vCPU minimum (8 recommandé pour IRIS)
RAM8 GB minimum (16 GB si IRIS + Vantum simultanés)
Stockage50 GB SSD (données + modèles ML IRIS)
Docker24.0+ avec Docker Compose v2
RéseauPort 3000 (Vantum UI), 8765 (IRIS daemon WebSocket)
TLSCertificat interne obligatoire — Let's Encrypt ou PKI interne
02

Installation — Vantum

# 1. Cloner le repo (via miroir interne ou clé SSH)
git clone git@github.com:dom-omg/vantum.git
cd vantum

# 2. Configurer les variables d'environnement
cp .env.example .env.local
nano .env.local

# Variables obligatoires:
# DATABASE_URL=postgresql://vantum:<password>@localhost:5432/vantum
# AUTH_SECRET=<générer avec: openssl rand -base64 32>
# VANTUM_SIGNING_KEY=<générer avec: openssl rand -base64 64>
# VANTUM_ACCESS_CODE=<code à 4-8 chiffres>

# 3. Lancer avec Docker Compose
docker compose up -d

# 4. Initialiser la base de données
docker compose exec app npm run db:migrate

# 5. Vérifier le démarrage
curl http://localhost:3000/api/v1/health
03

Installation — IRIS SRF-13

# 1. Cloner IRIS (repo séparé)
git clone git@github.com:dom-omg/wick-security.git
cd wick-security

# 2. Installer les modèles ML (à télécharger une fois)
mkdir -p public/models
# Télécharger face-api.js models:
# - tiny_face_detector_model-*
# - face_landmark_68_model-*
# - face_recognition_model-*
# Source: https://github.com/justadudewhohacks/face-api.js/tree/master/weights

# 3. Démarrer le daemon IRIS (si mode caméra IP)
python3 pipelines/iris_daemon.py --config iris_config.json

# 4. Configurer le token daemon
# Dans iris_config.json:
# { "token": "<même valeur que DAEMON_TOKEN dans iris/page.tsx>" }

# 5. Accéder à l'interface
# http://localhost:3000/iris
Le traitement biométrique est 100% local. Les descripteurs faciaux ne sont jamais transmis hors du poste.
04

Isolation réseau

Pour un déploiement en réseau policier isolé (air-gap partiel) :

Trafic entrant autoriséPort 3000 (HTTPS) depuis postes agents uniquement
Trafic sortantBloquer tout sauf: NTP, DNS interne, mises à jour OS approuvées
Base de donnéesPostgreSQL sur 127.0.0.1 uniquement — jamais exposé
IRIS WebSocketPort 8765 — localhost uniquement
LogsSyslog vers SIEM interne — jamais vers cloud externe
Sauvegardepg_dump chiffré GPG vers stockage interne uniquement
05

Checklist première mise en service

AUTH_SECRET aléatoire (≥ 32 bytes)
openssl rand -base64 32
VANTUM_SIGNING_KEY aléatoire (≥ 64 bytes)
openssl rand -base64 64
Mot de passe PostgreSQL fort (≥ 24 chars)
openssl rand -base64 18
VANTUM_ACCESS_CODE changé (défaut: 4874)
Changer dans .env.local
TLS activé sur le reverse proxy (nginx/caddy)
Certificat interne ou Let's Encrypt
Backup automatique configuré
Cron pg_dump + rotation 30 jours
Logs envoyés au SIEM interne
stdout Docker → syslog → SIEM
Test endpoint santé
curl https://votre-domaine/api/v1/health
Premier agent créé (role: analyst)
Interface admin → Utilisateurs
Test warrant end-to-end
POST /api/v1/mandat { signal_type: "AIS" }
06

Clés API par corps policier

Chaque corps policier reçoit sa propre clé API. À configurer dans VANTUM_API_KEYS :

# Dans .env.local — VANTUM_API_KEYS (JSON)
VANTUM_API_KEYS='{
  "<hash_sha256_clé>": {
    "agency": "SPVQ",
    "scopes": ["read:alerts","read:vessels","read:cases","write:cases","admin"],
    "label": "SPVQ — Section crimes économiques"
  },
  "<hash_sha256_clé_2>": {
    "agency": "SQ",
    "scopes": ["read:alerts","read:vessels","read:cases","write:cases","admin"],
    "label": "SQ — Division renseignements"
  }
}'

# Générer un hash de clé:
# echo -n "vtk_spvq_<random>" | sha256sum
Ne jamais stocker les clés en clair dans la base de données. Seuls les hashes SHA-256 sont conservés.
// SUPPORT

Support déploiement

Pour accompagnement technique lors du déploiement dans votre organisation :

CONTACTER L'ÉQUIPE TECHNIQUE →