Note technique — usage interne

Infrastructure iadazur.fr

Comment le serveur, les sites et les outils internes s'articulent — de quoi expliquer l'environnement à quelqu'un qui n'a pas construit le système.

Vue d'ensemble

Un seul serveur héberge tout. L'isolation vient de Docker, pas de machines séparées.

Une dizaine de sites clients, l'outil d'automatisation N8n, le tableau de bord interne et l'agent vocal Sophie tournent tous sur le même VPS. Chaque site vit isolé dans son propre container Docker ; un point d'entrée unique — Nginx Proxy Manager (NPM) — reçoit tout le trafic web et le redistribue selon le nom de domaine appelé.

  1. Internetrequête HTTPS
  2. DNS du domaineenregistrement A → 91.134.240.171
  3. Nginx Proxy Manager:80 / :443 — SSL + routage par nom d'hôte
  4. Container ou processport interne du site appelé

Services centraux

L'infrastructure partagée dont dépendent tous les sites.

Nginx Proxy Manager

nginx.iadazur.fr
actif

Point d'entrée unique du trafic web : certificats SSL Let's Encrypt (renouvellement automatique) et routage par nom de domaine vers le bon container.

Container
nginx-proxy-manager
Image
jc21/nginx-proxy-manager
Ports
80, 443 publics · 81 local (admin)
Détail
1 « proxy host » par domaine, règles CSP propres à iadazur.fr

N8n

n8n.iadazur.fr
actif

Automatisation : tous les workflows métier — agent Sophie (cold email, relance J+3, résumé d'appel, abonnement J+30) et paiements des sites clients.

Container
n8n
Image
n8nio/n8n
Port
5678 (local, exposé via NPM)
Données
workflows + identifiants chiffrés, stockage interne SQLite

Tableau de bord admin

admin.iadazur.fr
actif

KPIs clients, historique des paiements, liste des appels traités par Sophie. Accès protégé par authentification.

Stack
FastAPI (Python) via uvicorn
Process
natif — systemd, pas de container
Chemin
/home/ubuntu/admin-dashboard/
Relance
systemctl restart admin-dashboard

Agent Sophie

+33 9 39 24 67 57
actif

Décroche les appels entrants, échange en langage naturel, envoie un SMS de suivi automatique après l'appel.

Composants
Vapi (voix IA) + Twilio (téléphonie/SMS)
Orchestration
N8n, via webhook
Détail
pas de serveur dédié — les événements arrivent en webhook direct dans N8n

Sites & applications

Un dossier par projet, un container par site, tous vérifiés en direct sur le serveur.

iadazur.fr

iadazur.fr
en ligne

Vitrine de l'activité elle-même : présentation, page agent Sophie, formulaire « brief client », pages légales.

Stack
HTML / CSS / JS statique
Container
nginx-main (nginx:alpine)
Chemin
/home/ubuntu/mes-sites/main/
Données
aucune

Auto-École Beausite

autoecolebeausite.fr
en ligne

Site vitrine + espace admin (8 onglets) pour une auto-école : créneaux, avis, tarifs, pré-inscriptions, élèves.

Stack
PHP 8.2 + Apache
Container
php-beausite
Chemin
/home/ubuntu/mes-sites/beausite/
Données
fichiers JSON — data/*.json (pas de BDD)

JetSetBoat

www.jetsetboat.fr
en ligne

Site + admin pour une société d'événements nautiques, bilingue FR/EN (traduction automatique).

Stack
Astro 5 SSR + React + Tailwind + Drizzle
Container
jetsetboat
Chemin
/home/ubuntu/mes-sites/jetsetboat/
Données
SQLite — data/db.sqlite + uploads

Sport Tracker

sport.iadazur.fr
en ligne

Application PWA de suivi de musculation pour 5 utilisateurs, programmes et progression personnalisés.

Stack
FastAPI + SQLite + JS natif (PWA)
Container
sport
Chemin
/home/ubuntu/mes-sites/sport/
Données
SQLite — data/sport.db

Vinted Robins

vinted-robins.iadazur.fr
en ligne

Robot de veille associatif : alerte par email quand une annonce Vinted correspond à un critère.

Stack
FastAPI + SQLite + JS natif
Container
vinted-robins
Chemin
/home/ubuntu/mes-sites/vinted-robins/
Externe
Apify (scraping) + Resend (email)

CS Import

cs-import.fr
en ligne

Site vitrine d'un importateur automobile, avec formulaire de contact envoyé par email.

Stack
Next.js 16 + React + Tailwind 4
Container
site-cruz
Chemin
/home/ubuntu/mes-sites/site-cruz/
Particularité
seul projet sans dépôt Git (code fourni tel quel)

Sun Burger Amiens Gare

sunburgeramiensgare.fr
en ligne

Site vitrine restaurant : menu, horaires, badge ouvert/fermé calculé en direct.

Stack
HTML / CSS / JS statique
Container
nginx-sunburger (nginx:alpine)
Chemin
/home/ubuntu/mes-sites/sunburger/
Données
aucune

Auto-École des Lycées

autoecole-lycees.iadazur.fr
en ligne

15 pages vitrine — démo de prospection commerciale, sert aussi de gabarit réutilisable.

Stack
HTML / CSS / JS statique
Container
autoecole-lycees (nginx:alpine)
Chemin
/home/ubuntu/mes-sites/autoecole-lycees/
Données
aucune

Lucien Ndabagera

lucien.iadazur.fr
en ligne

Site vitrine personnel.

Stack
HTML / CSS / JS statique
Container
nginx-lucien (nginx:alpine)
Chemin
/home/ubuntu/mes-sites/lucien/
Données
aucune

Institution Sainte Thérèse

sainte-therese-nice.com
en migration

École privée niçoise : le site (WordPress/Elementor) tourne encore chez l'hébergeur actuel. Domaine et 54 boîtes mail y restent quoi qu'il arrive ; seul le site sera rapatrié.

Stack cible
WordPress/Elementor + MySQL
Hébergeur actuel
Monarobase (cPanel)
Chemin
/home/ubuntu/mes-sites/sainte-therese/
Statut
sauvegarde complète pas encore récupérée

Modèle de déploiement

Le même schéma se répète pour chaque projet — une fois compris, il s'applique partout.

  1. 01

    Pas de dépôt Git centralisé

    Le code vit directement sur le serveur, dans /home/ubuntu/mes-sites/<projet>/. Chaque dossier est autonome, avec son propre docker-compose.yml.

  2. 02

    Un port interne fixe par service

    Les services Python ont chacun un port dédié pour éviter les collisions : dashboard 3001, sport 8003, vinted-robins 8004.

  3. 03

    Persistance en SQLite, jamais de BDD partagée

    Quand une app doit mémoriser des données, elle utilise SQLite dans un volume monté (data/*.db). Beausite fait exception avec de simples fichiers JSON.

  4. 04

    Redéploiement

    Depuis le dossier du projet : docker compose down puis docker compose up -d (ajouter build si le code source a changé — inutile pour les sites statiques, montés en volume).

  5. 05

    Nouveau sous-domaine

    Une commande crée à la fois le routage NPM et le certificat SSL : subdomain_manager.py create <nom> --forward-host <host> --forward-port <port>.

Sécurité

Les identifiants eux-mêmes ne figurent volontairement pas dans ce document.

Authentification
Les interfaces sensibles (dashboard admin, Vinted Robins) sont protégées par HTTP Basic Auth.
SSL
Certificats Let's Encrypt générés et renouvelés automatiquement par Nginx Proxy Manager, un par domaine.
Secrets
Clés d'API et mots de passe vivent dans des fichiers .env ou dans les variables d'environnement des docker-compose.yml, projet par projet — jamais commités, jamais dans ce document.
En-têtes
Content-Security-Policy et en-têtes additionnels configurés directement dans Nginx Proxy Manager, par proxy host.

Glossaire éclair

Pour situer les termes qui reviennent partout ci-dessus.

reverse proxy
Le « standardiste » qui reçoit toutes les requêtes web et les redirige vers le bon service selon le nom de domaine demandé — c'est le rôle de NPM ici.
container Docker
Une application empaquetée avec tout ce qu'il lui faut pour tourner, isolée des autres. Chaque site = un container.
volume
Un dossier du serveur « branché » dans un container pour que ses données survivent aux redémarrages et mises à jour du container.
webhook
Une URL qu'un service externe (Vapi, Twilio, Apify) appelle automatiquement pour signaler un événement — c'est ce qui déclenche les automatisations N8n.