Donnez vos noms de domaine local de services auto-hébergés avec cette astuce de trou pi-trous
Êtes-vous fatigué de mémoriser vos adresses IP et ports d'auto-hébergé? J'étais, donc j'ai compris comment utiliser le gestionnaire de proxy Pi-Hole et Nginx pour donner mes services de noms locaux de services sans les exposer à Internet.
Sommaire
Résolution du domaine local vs externe: quelle est la différence
Lorsque vous tapez un nom de domaine dans votre navigateur comme, disons, https://howtogeek.comvotre navigateur essaiera de résoudre ce domaine pour savoir où vous diriger.
Les résolutions externes proviennent du moment où un site Web est accessible depuis l'extérieur de son réseau local. Lorsque vous accédez à Gower-To Geek, vous accédez à un serveur dans un centre de données quelque part sur un réseau externe par rapport au réseau interne local de votre maison.
Cependant, si vous hébergez un service à la maison comme, disons, audioRoBookShelf et y accédez via son adresse IP, vous accédez à un site Web local. Vous pouvez également configurer un service qui vous permettra d'accéder à ces sites Web hébergés localement avec un nom de domaine, sans jamais avoir à quitter votre réseau local.
Ainsi, en bref: les domaines locaux ne résolvent que sur votre réseau local, tandis que les domaines externes sont accessibles par toute personne ayant une connexion Internet.
Il est crucial de savoir en ce qui concerne les services d'auto-hébergement. Si vous exposez un service (comme Audiobookshelf) à Internet avec un domaine externe, alors toute personne dans le monde avec l'adresse de domaine peut accéder à ce service.
Cependant, vous pouvez également faire en sorte que ces demandes de domaine ne se résolvent que lorsque vous êtes sur votre réseau domestique pour plus de sécurité. Certains services, comme mon gestionnaire de machines virtuels Proxmox ou mes instances de trou Pi, je ne veux pas accessible en dehors de mon réseau local à des fins de sécurité.
Pour ceux-ci, j'utilise Pi-Hole associé à Nginx Proxy Manager pour donner mes noms de domaine locaux, donc je n'ai pas à essayer de me souvenir des adresses IP.
Vous n'avez pas besoin d'acheter un domaine
Vous pourriez penser que vous devez acheter un domaine pour ce faire. En fait, vous ne le faites pas. Maintenant, je recommande d'acheter un domaine, mais ce n'est pas tout à fait nécessaire.
La façon dont les résolutions de domaine local fonctionnent consiste à utiliser un hôte DNS local (Pi-Hole, dans ce cas), et le fait que ce serveur DNS résolve certains domaines à une adresse IP locale.
En fait, vous pourriez, en théorie, construire votre propre moteur de recherche, puis faire résoudre le serveur DNS local https://google.com à ce moteur de recherche hébergé localement. Bien que ce soit possiblece n'est pas conseillé, car le réacheminement des services publics pourrait briser de grandes étendues de votre navigation sur Internet.
Vous pouvez faire de même en demandant à votre serveur DNS local de résoudre tout domaine que vous souhaitez à vos services. Semblable à la situation Google ci-dessus, ce n'est pas toujours une bonne idée. Prendre Le vergepar exemple. Fin 2011, https://theverge.com est devenu Le verge Comme nous le savons aujourd'hui. Début 2011, https://theverge.com était en fait le Verge Internet Services, un type de site Web très différent.
Donc, si vous choisissez un nom de domaine qui n'est pas enregistré pour le moment, ou peut-être celui qui pointe vers un service que vous pensez que vous n'utiliserez jamais, il est tout à fait possible que le domaine puisse devenir utile à l'avenir – ou même nécessaire. Imaginez quelqu'un en 2011 en train de construire tout son domicile en utilisant https://theverge.com comme nom de domaine, pour éventuellement vouloir voir Bord Articles dans le futur. Ils devraient migrer tous leurs services vers un nouveau domaine, qui n'est ni un petit exploit ni une tâche facile.
Il est préférable d'acheter un domaine pour la résolution du domaine local, même si vous ne prévoyez pas d'accéder aux services à partir de l'extérieur de votre réseau, même si cela n'est pas nécessaire.
Pi-trou gère les demandes DNS locales
Pour gérer possiblement les demandes DNS locales, vous aurez besoin d'un serveur DNS hébergé localement. Pour cela, j'utilise personnellement du trou Pi, bien que vous puissiez utiliser n'importe quel autre serveur DNS que vous souhaitez.
Je ne vais pas expliquer comment mettre en place du trou pi ici, car il y a déjà une excellente documentation pour cela.
Cependant, une fois que vous avez configuré un trous sur votre réseau et que vous avez défini en tant que serveur DNS principal, vous pourrez accéder aux paramètres> enregistrements DNS locaux et commencer à saisir vos enregistrements DNS.
Il peut s'agir de domaines racine (test.com) ou de sous-domaines (pi-phole.testting.com) en fonction de ce que vous cherchez à faire. J'utilise généralement des sous-domaines pour que je puisse avoir Service.domain.com comme une limace facile à retenir.
La principale chose que vous voudrez que vous vous souvenez de faire est de pointer l'adresse IP à l'adresse IP de la machine sur laquelle vous exécutez Nginx Proxy Manager. C'est tout ce qu'il y a du côté pi-trou des choses.
Le gestionnaire de proxy Nginx achemine vos domaines là où ils doivent aller
Maintenant, une fois que vous avez un gestionnaire de proxy Nginx opérationnel sur votre système (en utilisant les ports 80 et 443), il est temps de faire configurer le reste de votre domaine local.
Si vous ne prévoyez pas d'utiliser HTTPS ou SSL, l'étape suivante est simple. Il vous suffit d'ajouter le domaine que vous souhaitez utiliser (que vous mettez dans Pi-Hole) en tant qu'hôte proxy.
Cependant, si vous souhaitez utiliser HTTPS ou SSL, il y a quelques étapes supplémentaires à suivre.
Pour commencer, vous devrez générer un certificat SSL auto-signé pour le domaine que vous prévoyez d'utiliser. J'utiliserai Test123.me aux fins de cet article.
Il y a donc trois commandes à exécuter:
openssl genrsa -out testing123.me.key 2048
openssl req -new -key testing123.me.key -out testing123.me.csr -subj "/CN=.testing123.me"
openssl x509 -req -in testing123.me.csr -signkey testing123.me.key -out testing123.me.crt -days 825 -extensions v3_req -extfile
Ces trois commandes généreront trois fichiers sur votre système: un CRT (le certificat lui-même), un CSR (inutilisé pour nos fins) et une clé (la clé de certificat). Les commandes ci-dessus sont conçues pour être utilisées avec le domaine Testing123.me, donc si vous souhaitez utiliser un domaine différent, échangez-le.
En outre, les commandes sont conçues pour offrir un certificat générique. Ce n'est pas un certificat pour le domaine lui-même, mais tout sous-domaine (car il est configuré comme * .TESTING123.ME).
Dans Nginx Proxy Manager, dirigez-vous vers l'onglet SSL Certificates, puis cliquez sur Ajouter un certificat SSL, puis cliquez sur Custom. Donnez un nom au certificat, puis téléchargez le fichier clé dans la zone de clé du certificat et le fichier CRT dans la zone du certificat.
Maintenant, de retour sur l'onglet Hosts Proxy, vous pouvez vous rendre dans la zone SSL et choisir votre certificat générique. Cela vous donnera un certificat auto-signé pour vos services compatibles SSL.
Comme il s'agit d'un certificat auto-signé, vous obtiendrez toujours un avertissement de certificat lors de l'accès au site, mais cela fonctionnera toujours pour les services qui nécessitent HTTPS pour fonctionner.
De plus, vous pouvez même ajouter le certificat à votre CA local sur votre ordinateur pour éviter l'avertissement, bien que cela soit certainement plus avancé et varie entre les systèmes d'exploitation.
Une fois que vous avez toute cette configuration, vous êtes prêt à accéder aux domaines localement sans quitter votre réseau! J'ai cette configuration pour mes deux instances de trou Pi (donc je peux y accéder sans leur IP) et mon instance Proxmox, car je ne veux ouvrir aucun de ces services au monde.
Cependant, si vous voulez créer votre propre site Web et que les gens y accédent partout, c'est en fait assez facile! En fait, vous pouvez avoir un site Web entièrement opérationnel dans un week-end à l'aide d'un gestionnaire de proxy Raspberry PI et Nginx.
