La Saga du Certificat SSL : DNS Local, Nginx et Mon Homelab
Objectif du Projet
Configurer un environnement local sécurisé avec : - Domaine public
olyhome.site (acheté chez Hostinger) - Serveur DNS local
(Bind9) pour gérer les sous-domaines internes - Nginx Proxy Manager (NPM) pour
proxy inverse - Sous-domaines locaux sécurisés par HTTPS (par ex.,
proxmox.olyhome.site, n8n.olyhome.site) -
Sans exposer les services à Internet
Aperçu de l'Architecture
Réseau Local
↓
Bind9 (DNS Local)
├── proxmox.olyhome.site → 192.168.11.100
├── n8n.olyhome.site → 192.168.11.100
└── db.olyhome.site → 192.168.11.100
↓
Nginx Proxy Manager (192.168.11.100)
├── proxmox.olyhome.site → https://192.168.11.254:8006
├── n8n.olyhome.site → http://192.168.1.20:5678
└── db.olyhome.site → http://192.168.1.30:5432
Étapes Complétées
Étape 1 : Configuration de Bind9 (DNS Local)
Pourquoi Bind9 ?
Cas d'Utilisation : - Contrôler la résolution DNS pour le domaine local - Remplacer le DNS public par des IPs locales - Gérer le routage des sous-domaines internes - Aucune dépendance vis-à-vis des fournisseurs DNS externes
Installation
# Install Bind9
sudo apt update
sudo apt install bind9 bind9-utils -y
# Create zone directory
sudo mkdir -p /etc/bind/zonesConfiguration de Zone
# Edit named.conf.local
sudo nano /etc/bind/named.conf.local// Zone for olyhome.site
zone "olyhome.site" {
type master;
file "/etc/bind/zones/db.olyhome.site";
};
Création du Fichier de Zone
# Create zone file
sudo nano /etc/bind/zones/db.olyhome.site$TTL 604800
@ IN SOA ns1.olyhome.site. admin.olyhome.site. (
2025102601 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.olyhome.site.
ns1 IN A 192.168.11.100
; Proxy server (Nginx Proxy Manager)
@ IN A 192.168.11.100
; Service subdomains
proxmox IN A 192.168.11.100
n8n IN A 192.168.11.100
db IN A 192.168.11.100
nginx IN A 192.168.11.100
Redémarrage et Test
# Check configuration
sudo named-checkconf
sudo named-checkzone olyhome.site /etc/bind/zones/db.olyhome.site
# Restart Bind9
sudo systemctl restart bind9
# Test DNS resolution
dig proxmox.olyhome.site @localhost
# Expected: Answer section shows 192.168.11.100Étape 2 : Déploiement de Bind9 dans Docker
Pourquoi Docker ?
- Isolation du système hôte
- Sauvegarde et restauration faciles
- Configuration portable
- Aucun conflit avec le résolveur système
Configuration Docker Compose
version: '3.8'
services:
bind9:
image: ubuntu/bind9:latest
container_name: bind9-dns
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "953:953/tcp" # rndc
volumes:
- ./config:/etc/bind
- ./zones:/var/lib/bind
- ./cache:/var/cache/bind
environment:
- TZ=Europe/Paris
- BIND9_USER=bind
networks:
- dns_network
networks:
dns_network:
driver: bridgeRésolution des Conflits
Problème : Le port 53 est déjà utilisé par
systemd-resolved
# Check what's using port 53
sudo ss -tlnp | grep :53
# Disable systemd-resolved
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
# Remove resolv.conf symlink
sudo rm /etc/resolv.conf
# Create static resolv.conf
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
# Start Bind9 container
docker-compose up -d
# Verify port 53 is bound
docker logs bind9-dns