Architecture¶
Nom de domaine¶
Le nom de domaine est acheté sur OVH.com, et redirige les serveurs DNS vers :
nile.ns.cloudflare.compenny.ns.cloudflare.com
DNS Cloudflare¶

Nous avons 3 sous-domaines :
- api.diyae.fr pour les endpoints API
- mqtt.diyae.fr pour les call enceintes en temps réel pour le serveur MQTT
- pma.diyae.fr pour accéder à phpMyAdmin directement via l'URL
Nginx¶
Lorsque Cloudflare redirige les sous-domaines créés, nous les réceptons avec notre configuration Nginx.
Configuration api.diyae.fr¶
server {
listen 80;
server_name api.diyae.fr;
location / {
proxy_pass http://127.0.0.1:3010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Notre backend Fastify écoute sur le port 3010, donc nous redirigeons chaque call vers le port concerné.
Configuration mqtt.diyae.fr¶
server {
listen 80;
server_name mqtt.diyae.fr;
# Logs spécifiques pour MQTT
access_log /var/log/nginx/mqtt.diyae.fr_access.log;
error_log /var/log/nginx/mqtt.diyae.fr_error.log;
# Page d'info pour debug
location / {
return 200 'MQTT Server Active\nDirect TCP: mqtt.diyae.fr:1883\nWebSocket: ws://mqtt.diyae.fr/ws\nStatus: OK\n';
add_header Content-Type text/plain;
}
# Health check
location /health {
return 200 'MQTT proxy OK';
add_header Content-Type text/plain;
}
# Info sur les topics
location /topics {
return 200 'MQTT Topics:\n- diyae/{device_id}/register\n- diyae/{device_id}/state\n- diyae/{device_id}/cmd\n- diyae/{device_id}/status\n';
add_header Content-Type text/plain;
}
}
Ici, le broker MQTT écoute sur le port 1883 pour les connexions MQTT classiques (MQTT over TCP).
Configuration pma.diyae.fr¶
server {
listen 80;
server_name pma.diyae.fr;
root /pma;
index index.php index.html index.htm;
# Sécurité de base
location ~ /\.ht {
deny all;
}
location ~ /(libraries|templates|setup/lib) {
deny all;
}
# Configuration pour phpMyAdmin
location / {
try_files $uri $uri/ =404;
}
# Configuration PHP
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# Augmenter les limites pour phpMyAdmin
client_max_body_size 50M;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
}
# Logs
access_log /var/log/nginx/pma.diyae.fr_access.log;
error_log /var/log/nginx/pma.diyae.fr_error.log;
}
Ici on définit l'emplacement du projet phpMyAdmin, et on lui dit d'utiliser la version PHP 8.2 installée.