Bêta précoce (0.1.0), pas encore pour un process critique. Voir la roadmap
PNeX logo

Noms et TLS

Obtenir un nom d'hôte et HTTPS avec ou sans domaine — mDNS, sslip.io / nip.io, votre DNS, Let's Encrypt

Navigateurs, apps natives, passkeys et devices ont tous besoin d'un nom d'hôte qui résout vers le serveur, et d'un certificat qui le porte. Les devices épinglent l'autorité de certification dans leur firmware : choisissez le nom avant de les flasher.

--domainExempleRésolutionTLSQuand
(défaut)pnex.localmDNS sur le réseau localCA localeRaspberry Pi ou Linux sur un réseau de maison ou de labo
sslip / nippnex-203-0-113-7.sslip.ioDNS wildcard publicLet's Encrypt (--tls cloud)VM publique sans nom de domaine
votre nompnex.example.comvotre DNSLet's Encrypt (--tls cloud) ou CA localeproduction, accès public
une IP192.168.1.20aucuneCA localedernier recours : pas de passkeys

DNS wildcard : sslip.io et nip.io

sslip.io et nip.io sont des services DNS gratuits qui répondent avec l'adresse IP écrite dans le nom :

pnex-203-0-113-7.sslip.io  →  203.0.113.7
pnex-203-0-113-7.nip.io    →  203.0.113.7

Leur intérêt : Let's Encrypt sans DNS. Une VM publique nommée ainsi obtient un certificat que tous les navigateurs, apps et devices reconnaissent déjà — aucune autorité de certification à importer.

curl -fsSL https://raw.githubusercontent.com/Pnex/pnex-deploy/main/install.sh \
  | sudo bash -s -- --domain sslip --ip 203.0.113.7 --tls cloud \
      --acme-email [email protected] --admin-user [email protected]

--domain sslip (ou nip) construit le nom à partir de l'adresse du serveur ; --ip donne l'adresse publique quand la VM ne voit qu'une adresse privée derrière le NAT du fournisseur. L'installeur utilise la forme à tirets : le nom reste un seul label, ce que les certificats gèrent le mieux.

Avec une IP privée, un nom sslip.io fonctionne aussi, avec la CA locale : on importe la CA comme pour .local. Le seul gain par rapport à une IP nue est un vrai nom d'hôte là où mDNS échoue (WSL, Android avant 12, navigateurs en DNS-over-HTTPS), ce qui garde les passkeys utilisables. C'est pourquoi l'installeur l'utilise par défaut sous WSL.

À savoir :

  • Clients et devices ont besoin du DNS d'internet. Un réseau totalement hors ligne a besoin de mDNS ou de son propre serveur DNS.
  • Certaines box rejettent les noms publics qui résolvent vers une adresse privée (protection DNS rebinding) : autorisez sslip.io / nip.io dans la box, ou utilisez un autre résolveur.
  • Le nom contient l'IP : donnez au serveur une réservation DHCP. Après un changement d'adresse, relancez l'installeur avec --domain sslip et reflashez les devices.
  • Pour ne dépendre d'aucun tiers, déléguez un sous-domaine de votre zone à un serveur DNS sslip.io auto-hébergé, ou créez un enregistrement wildcard (*.lab.example.com) pointant vers le serveur.

Autorité de certification locale

En mode local, l'installeur crée une CA racine une seule fois (10 ans) et renouvelle automatiquement le certificat du serveur. Chaque client fait confiance à la CA une fois ; elle est servie sur https://<serveur>/api/v1/meta/ca et affichée dans l'app web sous Profil → À propos. Sauvegardez-la : pnexctl backup l'inclut, et les devices doivent être reflashés si elle est perdue.

Let's Encrypt

--tls cloud remplace la CA locale par Let's Encrypt (challenge HTTP-01, renouvellement toutes les 12 heures). Il faut un nom public et les ports 80 et 443 ouverts sur internet. Les devices font confiance à la racine Let's Encrypt (ISRG Root X1).

On this page