Illustration d'un conteneur Docker relié à un réseau privé chiffré, style sombre avec accents orange

Comment exposer tes conteneurs Docker sur ton réseau privé avec DockTail

DockTail expose tes conteneurs Docker sur ton réseau privé Tailscale en quelques étiquettes. Installe-le, connecte ton serveur, et accède à tes services de partout, sans ouvrir de port.

Tu as des services qui tournent dans des conteneurs Docker chez toi, et tu aimerais y accéder depuis n'importe où, sans ouvrir de port sur Internet ni installer un VPN compliqué. C'est exactement le problème que règle DockTail : un petit outil open source qui expose tes conteneurs sur ton réseau privé Tailscale, en te contentant d'ajouter quelques étiquettes à tes conteneurs.

Dans ce tuto, tu vas installer DockTail, connecter ton serveur à ton réseau Tailscale, puis exposer un conteneur en quelques minutes. À la fin, tu accéderas à ton service via une adresse du type mon-app.mon-reseau.ts.net, chiffrée et réservée à tes appareils.

De quoi tu as besoin

  • Un serveur Linux avec Docker et Docker Compose installés.
  • Un compte Tailscale gratuit (le plan personnel suffit largement).
  • Un peu d'aise avec un terminal : on va taper quelques commandes.

C'est quoi, Tailscale et les services Tailscale ?

Tailscale est un outil qui crée un réseau privé chiffré entre tes appareils, sans que tu aies à configurer un VPN classique. Chaque machine rejoint un « tailnet », ton réseau personnel, et peut joindre les autres comme si elles étaient sur le même réseau local, même à des milliers de kilomètres.

Un « service Tailscale » est une fonctionnalité récente qui permet d'exposer une application de ton serveur sur ce réseau privé, avec un nom lisible du type mon-app.mon-reseau.ts.net. DockTail automatise tout ça : il surveille tes conteneurs, lit leurs étiquettes, et configure Tailscale à ta place.

Étape 1 : connecter ton serveur à Tailscale

Si ton serveur n'est pas encore sur ton tailnet, installe Tailscale dessus. Sur la plupart des distributions Linux, ça se fait en une commande :

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

La commande tailscale up affiche une adresse à ouvrir dans ton navigateur pour autoriser la machine. Une fois connecté, vérifie que tout va bien :

tailscale status

Tu dois voir ta machine listée avec son nom et son adresse IP du réseau privé.

Étape 2 : créer les identifiants Tailscale pour DockTail

DockTail peut créer automatiquement les définitions de services dans la console Tailscale. Pour ça, il a besoin d'un client OAuth, un couple d'identifiants qui lui donne le droit de gérer tes services. Dans la console Tailscale, va dans Settings puis Trust credentials, et crée un client OAuth scoped à un tag, par exemple tag:server. Accorde-lui les permissions Services en écriture et Devices en écriture.

Tu obtiens un identifiant de client et un secret. Garde-les de côté, on va les mettre dans le fichier de configuration.

Étape 3 : lancer DockTail

Crée un dossier pour le projet et un fichier docker-compose.yml. Voici une configuration minimale qui fonctionne sur un serveur Linux où Tailscale tourne déjà :

services:
  docktail:
    image: ghcr.io/marvinvr/docktail:latest
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/run/tailscale:/var/run/tailscale
    environment:
      - TAILSCALE_OAUTH_CLIENT_ID=ton-client-id
      - TAILSCALE_OAUTH_CLIENT_SECRET=ton-secret

Le conteneur a besoin de deux accès : le socket Docker (pour voir tes conteneurs) et le socket Tailscale (pour configurer le réseau). Lance le tout :

docker compose up -d

Vérifie que DockTail démarre sans erreur :

docker compose logs -f docktail

Étape 4 : exposer un conteneur avec des étiquettes

Le cœur de DockTail, ce sont les étiquettes (labels) que tu ajoutes à un conteneur. Prenons un exemple simple : un serveur web nginx. Ajoute ces trois lignes à son service dans docker-compose.yml :

services:
  mon-app:
    image: nginx:latest
    labels:
      - "docktail.service.enable=true"
      - "docktail.service.name=mon-app"
      - "docktail.service.port=80"

Ces étiquettes disent à DockTail : expose ce conteneur, appelle-le mon-app, et pointe vers son port 80. Relance le conteneur pour que DockTail le détecte :

docker compose up -d mon-app

En quelques secondes, DockTail détecte le conteneur, crée le service et l'annonce à Tailscale. Tu peux alors y accéder depuis n'importe quel appareil de ton tailnet :

curl http://mon-app.mon-reseau.ts.net

Vérifier que ça fonctionne

Le test le plus simple : depuis un autre appareil connecté à ton tailnet (ton téléphone, ton portable), ouvre l'adresse du service dans un navigateur. Tu dois voir la page de ton application. En ligne de commande, depuis ton serveur :

curl -I http://mon-app.mon-reseau.ts.net

Une réponse HTTP 200 confirme que le service répond. Tu peux aussi ouvrir la console Tailscale, onglet Services, pour voir la liste des services exposés et leur état.

Limites et pièges

  • Sur macOS et Windows, le démon Tailscale de l'hôte ne peut pas être partagé avec les conteneurs. Il faut alors utiliser la configuration « sidecar », où Tailscale tourne lui-même dans un conteneur. La doc officielle détaille ce cas.
  • Avec Docker rootless (sans privilèges root), le socket à monter est différent et il faut parfois passer par les ports publiés plutôt que par l'adresse IP directe du conteneur.
  • La première fois qu'un service est annoncé, Tailscale peut demander une approbation manuelle dans la console. Après approbation, ça fonctionne tout seul ensuite.
  • DockTail est un projet jeune. Il est actif et bien documenté, mais comme tout outil récent, il peut évoluer vite. Vérifie la doc avant une mise à jour majeure.

Et si tu veux aller plus loin ?

DockTail gère aussi le HTTPS automatique (avec certificats), le TCP (pour du SSH par exemple), et même le Funnel pour exposer un service au public Internet en une étiquette. Un seul conteneur peut exposer plusieurs services. C'est un outil qui simplifie vraiment la vie quand on a plusieurs services à rendre accessibles en privé.

Sources

DockTail — le dépôt officiel du projet sur GitHub, avec la documentation complète et les exemples.

DockTail.org — le site officiel, avec le guide de démarrage rapide et la référence des étiquettes.

Documentation Tailscale Services — la référence officielle de Tailscale sur les services, pour comprendre ce que DockTail automatise.

Bannière du projet DockTail, montrant un conteneur Docker relié à un réseau Tailscale.

Source : le dépôt officiel DockTail sur GitHub.



Recherche, relecture et illustration assistées par IA. Le contenu reflète le travail éditorial de la rédaction.

No comments yet