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.
--domain | Exemple | Résolution | TLS | Quand |
|---|---|---|---|---|
| (défaut) | pnex.local | mDNS sur le réseau local | CA locale | Raspberry Pi ou Linux sur un réseau de maison ou de labo |
sslip / nip | pnex-203-0-113-7.sslip.io | DNS wildcard public | Let's Encrypt (--tls cloud) | VM publique sans nom de domaine |
| votre nom | pnex.example.com | votre DNS | Let's Encrypt (--tls cloud) ou CA locale | production, accès public |
| une IP | 192.168.1.20 | aucune | CA locale | dernier 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.7Leur 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.iodans 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 sslipet 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).

