Objectif général
ACC sert de passerelle entre le boîtier médical et l'interface utilisateur / la base de données : recevoir, stocker, analyser et relayer en temps réel les données cardiaques et les événements de chute.
- Surveillance continue des signes vitaux (rythme cardiaque, etc.).
- Détection de chute — envoi d'une alerte aux proches en cas d'incident.
- Archivage sécurisé des données pour consultation ultérieure.
Fonctionnalités clés
- Réception BLE / Wi‑Fi des données depuis le boîtier médical.
- Traitement en temps réel et détection d'anomalies (tachycardie, bradycardie, chute).
- Notifications (SMS / push / e‑mail) vers les proches.
- Interface web mobile‑first pour consulter l'état et l'historique.
- Base de données locale (SQLite) + possibilité de serveur distant.
- Journalisation et gestion des accès (sécurité / chiffrement).
Matériel
Raspberry Pi 4
Module Bluetooth / BLE
Wi‑Fi / Ethernet / 4G (selon disponibilité)
Alimentation stable + batterie de secours
Serveur (achat ou prêt de l'école)
Langages & logiciels
Python 13
HTML5
CSS
SQLite
IDE: VS Code
openvpn
Proxmox
bcrypt (gestion des mots de passe)
Outils de contrôle / audit des données
Architecture (vue simplifiée)
Boîtier médical (BLE) → Raspberry Pi (passerelle) → DB locale (SQLite)
→ Serveur distant / Interface web
Notifications: Serveur → Proches (SMS / e‑mail / push)
Architecture(classique)
« Next steps » — Étapes suivantes
- Prototyper la communication BLE entre le boîtier et le Raspberry Pi.
- Développer le module de détection de chute et règles d'alerte.
- Construire l'interface utilisateur (mobile‑first) et les API.
- Tests terrain et validation avec utilisateurs cibles (personnes âgées / proches).
Équipe
Équipe : Martin Stordeur & Alexendros Chrissantakis.
Timeline du Projet TFE
14/10/2025 — Séance
Tâches réalisées
- Finalisation des liens principaux sur stordeur-martin.be.
- Démarrage de la configuration CLI du serveur Windows sous VMWare en vue d’une exportation vers Proxmox (déplacement à chaud).
- Corrections HTML diverses.
Difficultés rencontrées
- Accès FileZilla via WLS instable.
Solutions
- Diagnostic en cours pour stabiliser la connexion SFTP depuis WLS.
04/11/2025 — Séance
Tâches réalisées
- Ajout de l’illustration d’architecture réseau sur l’hébergement LWS.
17-18/11/2025 — Travail à domicile
Tâches réalisées
- Réinstallation complète de l’environnement : Docker, Docker Compose et openssh-server (corrections des dépôts apt et du fichier
docker.list). - Diagnostic et réparation de la VM après crash (fsck en mode recovery).
- Mise en place d’une stack Docker fiable via SFTP : création d’un
docker-compose.yml, déploiement d’OpenVPN, MySQL, Netdata et Heimdall. - Définition d’une stratégie réseau avancée (Plan B) : abandon d’AdGuard DNS, adoption mDNS (Avahi), ajout d’un reverse proxy (Nginx Proxy Manager) et publication des services
.local. - Configuration des services : sous-domaine
vpn.stordeur-martin.be, initialisation d’OpenVPN (CA), paramétrage de Heimdall et diagnostic de Netdata.
Difficultés rencontrées
- Serveur arrêté la nuit empêchant une solution DNS H24.
- Blocages apt dus à des fautes dans
docker.list. - Erreurs YAML lors des copier-coller du
docker-compose.ymldepuis le terminal. - Permissions SFTP insuffisantes dans
/srv/docker-data.
Solutions / Plan d’action
- Utilisation d’Avahi + Nginx Proxy Manager pour simplifier l’accès aux services sans ports.
- Transfert SFTP en deux temps pour contourner les droits d’écriture.
- Prochaines étapes : configurer les Proxy Hosts (heimdall.local, netdata.local, proxmox.local), tester l’accès sans port, attendre le technicien VOO pour la redirection UDP 1194, puis valider la connexion OpenVPN externe.
18/11/2025 — Séance
Tâches réalisées
- Correction du fichier d’état d’avancement.
- Mise en place de la timeline sur stordeur-martin.be.
- Refonte de la topologie réseau domestique via Lucidchart.
25/11/2025 — Séance
Tâches réalisées
- Déploiement serveur : installation d’une VM Ubuntu sur Proxmox, mise en place de Docker + Docker Compose, déploiement du conteneur OpenVPN AS.
- Réseau WAN/LAN : migration VOO → Orange, désactivation du CGNAT pour une IP publique dédiée, configuration du routeur Xiaomi en IP statique + DMZ depuis la box Orange, redirections de ports UDP 1194 et TCP 943.
- DNS : mise à jour de la zone LWS pour pointer
vpn.stordeur-martin.bevers la nouvelle IP publique Orange. - VPN & sécurité : paramétrage d’OpenVPN AS (hostname + comptes), ouverture UFW des ports 1194/943/443, activation du routage NAT pour l’accès aux périphériques LAN.
- Changement d’IPv4 interne : 192.168.31.247/24 → 192.168.31.18/24.
Difficultés rencontrées
- Blocage CGNAT Orange empêchant l’accès externe — résolu en activant l’IP publique dans l’interface du modem.
- Restrictions UFW après réinstallation — résolues par l’ajout de règles d’autorisation explicites.
- Accès LAN via VPN impossible — résolu en activant le mode NAT dans les contrôles d’accès OpenVPN AS.
Plan d’action (prochaine leçon)
- Finaliser le tableau de bord Heimdall.
- Mettre en place la supervision Netdata accessible via le VPN.
03/12/2025 — Séance
Tâches réalisées
- Résolution de l’accès SSH : diagnostic du “Connection refused” (service SSH, règles UFW) et validation de l’adresse locale 192.168.31.18.
- Déploiement OpenVPN AS : correction de la commande
docker run(volume local~/openvpn-data) et lancement avecCAP_NET_ADMIN. - Configuration de l’interface OpenVPN : accès à
:943/admin, création d’un utilisateur et définition du mot de passe client. - DNS LWS : ajout d’un enregistrement A pointant
vpn.stordeur-martin.bevers l’IP publique, mise à jour du hostname dans OpenVPN AS.
Difficultés rencontrées
- SSH bloqué (service ou pare-feu) — solution : redémarrage du service et ajustement UFW.
- Erreur de volume Docker (
-v <path to data>) — solution : création d’un dossier persistant dans le home. - Confusion IP locale vs publique — nécessité de distinguer 192.168.31.18 (LAN) et l’IP WAN pour la configuration DNS.
04/12/2025 — Séance
Tâches réalisées
- Mise à jour de l’infrastructure réseau côté FAI (mode bridge).
- Mise en place d’un pare-feu sur le routeur XIAOMI-1.
- Redirection de ports pour les API.
10/12/2025 — Travail à domicile
Tâches réalisées
- Refonte de l’architecture Docker : suppression du conteneur Nginx Proxy Manager (simplification de la stack).
- Exposition directe des services dans
docker-compose.yml(Heimdall :8080, PhpMyAdmin :8081, Netdata :19999). - Fiabilisation : ajout de
restart: alwayssur tous les services pour assurer le redémarrage après coupure de courant. - Configuration du système en mode « headless » : correction du problème SSH au démarrage via
nmcliet passage de la connexion réseau en mode « système » (démarrage avant login utilisateur). - Sécurité & accès : mise à jour des règles UFW pour ouvrir les ports 8080, 8081 et 19999, validation de l’accès à la base de données via PhpMyAdmin.
- Matériel : étude des besoins pour l’armoire serveur et sélection d’un rack mural 12U 600mm avec étagères (adapté au serveur HP actuel).
Difficultés rencontrées
- Accès SSH au boot : le serveur était inaccessible après redémarrage tant qu’aucune session locale n’était ouverte (Wi‑Fi/Ethernet dépendant du login utilisateur). Solution : utilisation de
nmcli connection modifypour activerautoconnectet les permissions « » (tous utilisateurs). - Services web inaccessibles après suppression du proxy : les sites ne répondaient plus. Solution : diagnostic du pare‑feu UFW et ouverture manuelle des ports non standards via
ufw allow.
15/12/2025 — Travail à domicile
Tâches réalisées
- Intégration du Wake‑on‑LAN (WoL) dans Homepage : ajout d’un bouton pour démarrer le serveur HP ProLiant à distance.
- Adaptation de la configuration Homepage : remplacement du widget « HP iLO » (non supporté) par le widget standard
wolciblant l’adresse MAC de l’interface Proxmox et le widget Proxmox pour le monitoring. - Réparation critique du conteneur VPN (WireGuard / wg‑easy) : diagnostic du bootloop et remplacement du mot de passe en clair par un hash bcrypt.
- Correction de la syntaxe YAML dans
docker-compose.yml: échappement des caractères spéciaux du hash de mot de passe ($$au lieu de$). - Stabilisation du service DNS (AdGuard Home) : identification d’un conflit de port avec
systemd-resolvedsur le port 53 et désactivation de ce service pour réserver le port à AdGuard.
Difficultés rencontrées
- Widget Homepage incompatible : le widget spécifique « HP iLO » n’existe pas encore, provoquant des erreurs au chargement. Solution : combinaison de widgets « Ping » (état iLO), « Proxmox Stats » (performances) et « WoL » (allumage).
- Syntaxe Docker Compose : le hash de mot de passe WireGuard contenant des
$était interprété comme des variables vides par Docker, corrompant l’authentification. Solution : doubler les dollars ($$) dans le fichier. - Conflit DNS / port 53 : le Raspberry Pi perdait la connexion et les tunnels VPN car AdGuard redémarrait en boucle. Solution :
sudo systemctl stop systemd-resolvedet nettoyage de/etc/resolv.conf.
Plan d’action (prochaine leçon)
- Valider définitivement la connexion WireGuard en 4G (vérifier si le CGNAT de l’opérateur pose encore problème après la réparation DNS).
- Si le blocage opérateur persiste (CGNAT) : basculer vers Tailscale (solution sans redirection de ports).
- Finaliser l’organisation du dashboard Homepage maintenant que les services sont stabilisés.