Skip to the content.

Retour à l’accueil

Objectif

Permettre un accès sécurisé à mes services auto-hébergés via HTTPS, en simplifiant leur accès avec des noms de domaine personnalisés. Cette configuration fonctionne à la fois en local et via Tailscale.

Aperçu des outils utilisés


Liste des services et ports

Voici les services hébergés sur mon serveur :

Service Description
Jellyfin Serveur multimédia
Jellyseer Gestionnaire de films
Filebrowser Navigateur de fichiers
qBittorrent Gestionnaire de torrents
Uptime Kuma Surveillance des applications
Speedtest Suivi de la vitesse internet
Portainer Gestionnaire Docker
Sonarr Gestionnaire de séries TV
Radarr Gestionnaire de films
Bazarr Gestionnaire de sous-titres
Prowlarr Indexeur de fichiers médias

Configuration DNS dans Pi-hole

Pourquoi ?

Utiliser des noms de domaine locaux pour accéder aux services simplifie la navigation, évite de retenir des adresses IP et permet l’accès sécurisé via HTTPS.

Étapes :

Ajout des DNS locaux :

  1. Dans Pi-hole > Local DNS > DNS Records, ajoutez un enregistrement A :
    • Domaine : mediaserver.home
      IP : [IP_LOCAL]
  2. Dans Pi-hole > Local DNS > CNAME Records, ajoutez un enregistrement pour chaque service:
    • Domain : jellyfin.home Target Domain : mediaserver.home

Explication Utiliser un enregistrement CNAME permet de centraliser les modifications. Si l’adresse IP de votre serveur change, il vous suffit de mettre à jour le CNAME au lieu de devoir modifier l’IP de chaque service individuellement.

Ajout des DNS Tailscale :

  1. Dans Pi-hole > Local DNS > DNS Records, ajoutez un enregistrement A pour l’accès via Tailscale :
    • Domaine : mediaserver.ts
      IP : [IP_TAILSCALE]
  2. Dans Pi-hole > Local DNS > CNAME Records, ajoutez un enregistrement pour chaque service:
    • Domain : jellyfin.ts Target Domain : mediaserver.ts

Remarque


Installation et configuration de Caddy

Pourquoi ?

Caddy est un serveur web qui permet d’ajouter automatiquement le HTTPS à tous les services en configurant un reverse proxy pour chacun d’eux.

Étapes :

Installation de Caddy avec Docker Compose :

Ajoutez la configuration suivante à votre fichier docker-compose.yml dans la stack “security” sur Portainer :

caddy:
  image: caddy:latest
  container_name: caddy
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - /home/nuggets/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
    - /home/nuggets/caddy/data:/data
    - /home/nuggets/caddy/config:/config
  restart: unless-stopped

Modifier le fichier Caddyfile

jellyfin.home {
    reverse_proxy [IP_LOCAL]:[PORT_JELLYFIN]
    tls internal
}

jellyfin.ts {
    reverse_proxy [IP_TAILSCALE]:[PORT_JELLYFIN]
    tls internal
}

Configuration de Pi-hole comme DNS pour Tailscale

Pourquoi ?

Pour résoudre automatiquement les noms de domaine (comme jellyfin.ts) vers les adresses IP Tailscale de vos services.

Étapes :

  1. Dans l’interface Tailscale :
    • Allez dans DNS.
    • Ajoutez l’IP Tailscale du pihole en tant que Global Nameserver.
    • Activez Override local DNS pour forcer l’utilisation de Pi-hole comme DNS principal.

Importation du certificat racine dans les navigateurs

Pourquoi ?

Caddy génère un certificat racine auto-signé pour les connexions HTTPS. L’importer permet d’éviter les avertissements de sécurité dans les navigateurs.

Étapes :

  1. Téléchargez le certificat :
    • Récupérez le fichier caddy-root.crt depuis le dossier /data/caddy.
  2. Importez-le dans vos navigateurs :
    • Firefox : Paramètres → Vie privée et sécurité → Certificats → Importer.
    • Brave : Paramètres → Vie privée et sécurité → Gérer les certificats → Importer.

Bilan

Avec cette configuration :