NPM – Nginx Proxy Manager

Noyé dans un océan de doutes

NPM – Nginx Proxy Manager

Contexte :

  • Home-assistant est installé dans une VM (192.168.0.100:8123).
  • Cette VM est gérée par l’hyperviseur Proxmox VE.
  • Dans le cadre d’une installation de certificats SSL je devais pouvoir imposer mes certificats.
  • Installation de NPM en standalone pour un réemploi futur.

Là vous allez me dire : « Oui mais Julien il y a déjà un addon pour Home-Assistant qui fonctionne bien… ! »

Certes oui, ce serait simple mais… trop simple car dans le futur, je vais avoir besoin d’une instance à part entière pour gérer le reverse-proxi à l’échelle de mon homelab tout entier et pas seulement de Home-Assistant !

Installation

Procédure d’installation (Proxmox LXC) :

  • On se rend sur le site des scripts pour Proxmox afin de trouver un conteneur LXC.
  • On lit bien les informations (même si je n’ai pas bien saisi en vrai lol)
  • On lance le script
  • Je l’installe avec l’option #2 (même si première aurait pu suffire je pense…)
  • Au bout d’un moment j’ai le message suivant :

Shell - Linux

      ✔️   Installed pnpm
      Would you like to install an older version (v2.10.4)? <y/N>    
        
  • Je réponds que non <N>

Personnalisations

  • Coté Freebox (DHCP) : bail fixe (192.168.0.104) afin de mieux refléter ce que je veux (numéro du conteneur = dernier numéro de l’adresse IP). C’est simple est facile de s’y retrouver comme ça.
  • Proxmox : changement du conteneur. DNS > Nom d’hôte
  • Changement du numéro de démarrage/arrêt : 10 (pas prioritaire, dernier quoi)

Première connexion à NPM

  • A l’adresse indiquée (192.168.0.104), je tombe sur un austère message de « Félicitations » m’invitant à aller sur l’administration sauf que… c’est où !?!
    • Il faut en fait spécifier le numéro du port : <81>
    • Email par défaut : admin@example.com
    • Mot de passe par défaut : changeme
  • Dès l’ouverture, nous sommes invité à mettre à jour ces informations.

Tableau de bord vierge de Nginx

Certificats SSL/TLS

Importation des certificats dans NPM

Nous avions vu comment créer un certificat SSL/TLS.
Maintenant, il faut l’importer avant de pouvoir le relier à notre host (domaine : homeassistant.local)

Nous allons tout simplement utiliser l’interface graphique (UI) pour plus de facilité.

Nginx – SSL Certificates

  • Cliquez sur « SSL Certificates » en haut
  • Sur la droite, bouton « Add SSL Certificate »
    • Sélectionnez « Custom« 

Nginx – Add Custom SSL Certificate

Nginx – Add Custom Certificates

  • Name : homeassistant.local (ou tout autre nom, c’est juste une étiquette)
  • Certificate Key : homeassistant.local-key.pem
  • Certificate : homeassistant.local.pem
  • Intermediate Certificate : <vide>

Une fois installé, le certificat apparait mais avec un point rouge en bout de ligne.
C’est tout à fait normal car il n’est pour l’heure associé à aucun host.

Nginx – SSL Certificates – Inactive

Les hosts

Les « hosts » sont comme des URL propres qui permettent de désigner un site nom pas avec son adresse IP mais via un nom intelligible.

Dans mon cas, ce nom d’host est déjà défini par défaut (modifiable) et il s’agit de homeassistant.local

Nginx – Hosts Proxy

  • ➡️On se rend dans la section « Proxi Hosts » et on clic sur le bouton à droite « Add Proxi Host« .

Onglet : Details

Nginx – New Proxy Host – Details

    • Domaine names : homeassistant.local
      Oui on peut en saisir plusieurs qui vont désigner la même adresse IP.
      👉 Penser à appuyer sur « Entrée » pour bien valider votre saisie.
    • Scheme : http
      C’est le traffic normal que l’on vise à rediriger. Donc pas de https ici.
    • Forward Hostname / IP : 192.168.0.100
    • Forward Port : 8123
    • Cache Asset : <Non>
      ⚠️ Ne pas cocher l’option Cache Assets. Du moins, comprennez à quoi cela sert-il.
    • Block Common Exploits : <Oui>
    • Websockets Support : <Oui>

Nginx – Edit Proxi Host

Onglet : SSL

C’est précisément ici que l’on va associer le certificat au host. ENFIN !

Nginx – Add Proxy Host – SSL

  • SSL Certificate : Recherchez le certificat correspondant à votre site : homeassistant.local
  • Force SSL : <Oui>
  • HTTP/2 Support : <Oui>
  • HSTS Enabled : <Non> Si votre certificat est fait pour plusieurs domaines, cochez le.
  • HSTS Subdomaines : <Non> Si vous comptez faire des sous-domaines seulement.

Pour finir, bien sure il faut valider.

Vérifications

Nginx – Proxi Hosts – List

Le témoin vert signifie simplement que le proxi est activé. C’est différent de « fonctionnel » !

Si vous vous rendez cette fois dans l’onglet « SSL Certificates » vous pourrez observer que le certificat est associé à un host.

Nginx – SSL Certificates – in use

Configuration de HAOS

Ce n’est pas tout, encore faut-il préciser à home-assistant comment réagir lorsque l’on vient l’interroger/contacter via le reverse proxy Nginx.

  • A l’aide de l’addon Advanced Terminal & SSH (ou tout autre moyen), éditez le fichier configuration.yaml

yaml

    http:
  ip_ban_enabled: true
  login_attempts_threshold: 5
  trusted_proxies:
    - 192.168.0.104 #Nginx
  use_x_forwarded_for: true   
            
                    
        

Tags: , , , , ,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *