Tailscale Funnel ou Serve (2026) : commandes, 3 ports, domaine perso

Serve partage dans votre tailnet, Funnel publie sur tout internet. Les commandes exactes (Tailscale 1.104), la limite des ports 443/8443/10000, l'absence de login, et comment obtenir l'équivalent de Funnel sur votre propre domaine avec un petit VPS et Caddy.

Par Eric GerardFondateur · VPNSmith - Spécialiste self-host VPN & VPS GDPR

Mis à jour 10 min de lecture10 min

Liens affiliés : commission possible, sans surcoût pour vous. Méthode

Comparer les coûtsLire le guide

fig. 01 / self-host-vpn-headCONTROLcoordination onlyNODE A100.64.0.1NODE B100.64.0.2NODE C100.64.0.3WireGuard p2pkeys, ACL
fig. 01 / self-host-vpn-head

Deux commandes Tailscale ne diffèrent que d'un mot. tailscale serve partage un service local avec les appareils de votre propre tailnet. tailscale funnel achemine le trafic depuis l'internet au sens large vers ce même service, accessible à quiconque possède l'URL.

Même syntaxe, exposition inverse. C'est tout l'article en deux phrases, mais se tromper de sens laisse sur l'internet ouvert un service que vous croyiez privé, alors il vaut la peine d'être précis sur ce que Funnel fait, et ne fait pas.

En bref (le détail, les commandes et la mise en place sur votre domaine sont plus bas) :

tailscale servetailscale funnelVPS + Caddy (votre domaine)
Qui peut y accéderLes appareils de votre tailnet seulementToute personne qui a l'URLTout le monde, derrière votre identifiant
Adressemachine.nom-du-tailnet.ts.netLa même URL ts.net, devenue publiqueUn domaine à vous
Ports publicsAucun, rien n'est public443, 8443 ou 10000 uniquementCeux que vous ouvrez
Authentification devantL'appartenance au tailnetAucuneLa vôtre (basic_auth de Caddy)
Bande passanteSans le plafond de FunnelPlafonnée par Tailscale, non réglableLe débit du port du VPS
Coût en plusAucunAucun, sur toutes les offresQuelques euros par mois

Construisez votre commande Serve ou Funnel

Trois questions, et vous obtenez la commande, l'adresse qu'elle donne et de quoi annuler. Tout se passe dans votre navigateur, rien n'est envoyé.

Qui doit joindre le service ?

Votre commande

tailscale funnel 3000

Adresse sur laquelle il répondra

https://<machine>.<tailnet-name>.ts.net

Vérifier et annuler

tailscale funnel status
tailscale funnel reset
  • Funnel ne met aucune authentification devant le service : quiconque a l'URL atteint votre application. Ne publiez que ce qui a sa propre connexion.
  • Le fichier de politique du tailnet doit accorder l'attribut de nœud funnel (par défaut : autogroup:member), et MagicDNS ainsi que les certificats HTTPS doivent être activés dans la console d'administration.
  • Sans --bg, le partage s'arrête à la fermeture du terminal : le choix prudent pour un essai.

Si vous voulez votre propre domaine, n'importe quel port et aucun plafond de bande passante Funnel, la colonne de droite est la solution : un petit VPS avec IPv4 publique (Contabo, 5,50 € par mois) plus Caddy, installé pas à pas plus bas.

Ce qu'est réellement Funnel

La description de Tailscale est directe : Funnel « permet d'acheminer le trafic depuis l'internet au sens large vers un service local tournant sur un appareil de votre réseau Tailscale ». L'objectif est de partager avec des personnes qui ne sont pas sur votre tailnet et n'ont pas de compte Tailscale.

Serve est le cas inverse, et la documentation le dit sans détour : si vous voulez partager des services locaux uniquement avec les autres appareils de votre tailnet, utilisez Serve.

La décision n'est donc pas une préférence technique, c'est une question sur votre public :

  • Uniquement vos machines et les personnes invitées dans le tailnet → Serve.
  • N'importe qui avec le lien, y compris des inconnus → Funnel.

Si vous ne savez pas répondre à cette question pour un service donné, ne lancez encore aucune des deux commandes.

Les trois contraintes qui décident si Funnel convient

Funnel est volontairement étroit, et ses limites sont documentées plutôt que subies. Trois d'entre elles tranchent la plupart des cas avant même d'écrire une ligne de configuration.

Les ports : 443, 8443, 10000. C'est toute la liste. Funnel ne peut écouter que sur ces trois-là. Ce n'est pas une valeur par défaut à surcharger, si votre service doit être joignable publiquement sur un autre port, Funnel n'est pas le bon outil.

Le nom d'hôte appartient à Tailscale. Funnel ne peut utiliser que des noms DNS du domaine de votre tailnet, de la forme tailnet-name.ts.net. Si vous comptiez poser un produit, une démo client ou quoi que ce soit portant votre marque sur un domaine à vous, ce n'est pas ce que fait cet outil.

La bande passante est plafonnée, et le plafond n'est pas le vôtre. Tailscale indique que le trafic envoyé via Funnel est soumis à des limites non configurables. Pour une page de configuration ou un petit outil interne, sans importance. Pour diffuser une médiathèque à des proches, ce plafond sera probablement la contrainte, avant votre débit montant.

Gros plan des mains d'un développeur sur un clavier devant un écran rempli de code
Gros plan des mains d'un développeur sur un clavier devant un écran rempli de code

Ce que l'on saute : il n'y a aucune authentification devant

C'est la raison pour laquelle la confusion Serve/Funnel compte davantage qu'une faute de frappe ordinaire.

La documentation de Tailscale ne décrit aucune couche d'authentification devant un point d'entrée Funnel, et c'est délibéré, puisque toute la finalité est de servir des gens qui ne sont pas sur votre tailnet et ne peuvent donc pas être authentifiés par lui. Funnel vous donne un point d'entrée HTTPS public ; il ne vous donne pas de porte.

Conséquence pratique : l'authentification de votre application est la seule chose entre l'internet et vos données. Un tableau de bord sans mot de passe, un explorateur de fichiers qui fait confiance au réseau local, un panneau d'administration qui n'était joignable que depuis votre LAN, tous deviennent ouverts dès l'instant où ils sont « funnelés » plutôt que « servis ».

Avant d'activer cela sur quoi que ce soit, le test honnête tient en une question : serais-je à l'aise de publier cette URL publiquement ? Si la réponse est non, le service a besoin de sa propre authentification, ou bien de Serve plutôt que de Funnel.

L'activer : le fichier de politique d'abord

Funnel n'est pas actif par défaut sur un nœud. Il exige un attribut de nœud funnel dans le fichier de politique de votre tailnet, qui indique à Tailscale quels utilisateurs ont le droit de s'en servir. Par défaut, ce droit va à autogroup:member.

Cette indirection mérite d'être comprise plutôt que cliquée : elle signifie que Funnel est une décision administrative au niveau du tailnet, pas seulement une commande qu'un utilisateur lance sur son portable. Dans un tailnet partagé, celui qui contrôle le fichier de politique contrôle la possibilité même d'exposer des services publiquement.

Les commandes, côte à côte

Les deux commandes prennent la même cible : un port, une adresse localhost:port ou l'URL complète d'un service qui tourne sur la machine. Voici les formes listées par tailscale funnel --help sur Tailscale 1.104.1 (18 octobre 2026). Rien ne change en 1.104.2, version stable du 21 octobre 2026 : son journal des modifications ne liste que la compilation avec Go 1.27.3, qui retire la confiance aux certificats intermédiaires TLS eMudhra compromis (bulletin de sécurité Tailscale TS-2026-013), et deux correctifs du client Windows. Mets le client à jour, les commandes ci-dessous restent les mêmes :

# Dans le tailnet uniquement : https://<machine>.<nom-du-tailnet>.ts.net
tailscale serve --bg 3000

# Sur l'internet public, même URL, accessible à n'importe qui
tailscale funnel --bg 3000

# Public, sur l'un des deux autres ports autorisés
tailscale funnel --bg --https=8443 3000

# Voir ce qui est exposé, puis tout retirer
tailscale funnel status
tailscale funnel reset

Sans --bg, le partage tourne au premier plan et s'arrête quand vous fermez le terminal, ce qui est le réglage le plus prudent pour un test rapide. Avec --bg, il survit aux déconnexions et aux redémarrages jusqu'au reset : prenez l'habitude de lancer tailscale funnel status sur toute machine où vous l'avez utilisé. Avant le premier lancement, MagicDNS et les certificats HTTPS doivent être activés pour le tailnet dans la console d'administration, car Funnel sert un vrai certificat pour le nom ts.net.

Tailscale Funnel avec votre propre domaine : le reverse proxy sur VPS

Funnel ne répondra pas sur app.exemple.fr, et un CNAME vers votre nom ts.net n'y change rien : le certificat est émis pour le nom ts.net, donc le navigateur refuse le domaine personnalisé. Le montage qui vous donne un domaine à vous, n'importe quel port, aucun plafond de bande passante Funnel et une authentification que vous maîtrisez, c'est un petit serveur public qui rejoint votre tailnet et relaie le trafic vers la machine de la maison à travers lui.

  1. Louez un petit VPS avec une IPv4 publique et installez-y Tailscale (curl -fsSL https://tailscale.com/install.sh | sh, puis sudo tailscale up). Il joint désormais votre machine domestique sur son adresse tailnet 100.x.y.z.
  2. Faites pointer un enregistrement A pour app.exemple.fr vers l'IP publique du VPS et ouvrez les ports 80 et 443 sur son pare-feu, rien d'autre.
  3. Installez Caddy sur le VPS avec ce Caddyfile (validé par caddy validate sur Caddy 2.11.7) :
app.exemple.fr {
	basic_auth {
		# générer le hash avec : caddy hash-password
		alice $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
	}
	reverse_proxy 100.101.102.103:3000
}

Caddy obtient seul le certificat Let's Encrypt de votre domaine, et le bloc basic_auth place devant le service la barrière que Funnel n'a jamais eue. Remplacez 100.101.102.103 par l'IP tailnet qu'affiche tailscale ip -4 sur la machine de la maison, et vérifiez que le service y écoute sur cette interface, pas seulement sur 127.0.0.1. Le réseau domestique n'ouvre toujours aucun port : le VPS est la seule façade publique, et le trafic entre les deux circule dans WireGuard.

Le coût honnête : quelques euros par mois et une machine de plus à tenir à jour. Un VPS 1 vCPU et 1 Go suffit largement pour un reverse proxy ; la limite devient le débit du port du VPS, plus un plafond fixé par quelqu'un d'autre. Si vous préférez ne faire tourner aucun serveur public, un produit de tunnel pensé pour les domaines personnalisés est l'alternative, comparée plus bas.

Si vous préférez un hébergeur américain avec 30 jours satisfait ou remboursé, le VPS Basic d'Ultahost coûte 5,52 $ par mois sur 24 mois (1 Go de RAM, IPv4 dédiée, relevé le 21 octobre 2026), assez pour le reverse proxy Caddy décrit plus haut.

Quand Funnel est la bonne réponse, et quand il ne l'est pas

Funnel convient quand vous voulez donner à quelqu'un d'extérieur à votre tailnet une URL HTTPS qui marche, avec un minimum de cérémonie : un point d'entrée webhook qu'un service tiers doit atteindre, un aperçu de ce que vous construisez, un partage temporaire. Les certificats et le point d'entrée public sont pris en charge, et cela fonctionne sur tous les plans.

Funnel ne convient pas quand il vous faut un domaine à vous, un port hors des trois autorisés, un débit soutenu, ou une couche d'authentification que vous maîtrisez. Ces besoins pointent ailleurs : un reverse proxy sur une machine avec sa propre IP publique, ou un produit de tunnel bâti autour des domaines personnalisés. Cette comparaison-là a son propre arbitrage, qu'il vaut mieux lire d'abord : Pangolin vs Cloudflare Tunnel tient à qui appartient la machine par laquelle votre trafic ressort.

Et pour le cas auquel les gens pensent le plus souvent en se tournant vers Funnel, je veux que mes propres appareils atteignent ce service depuis n'importe où, ni Funnel ni un tunnel public n'est la réponse. C'est ce que le tailnet fait déjà, et ce qu'un nœud de sortie ou un serveur WireGuard auto-hébergé fait sans rien exposer publiquement.

Pour garder les commandes sous la main : notre Tailscale & Headscale Cheat Sheet gratuite (PDF de 4 pages en anglais, téléchargement direct, sans inscription) réunit status et ping, exit node, subnet router, Serve et Funnel, la configuration Headscale, les utilisateurs, clés et ACL, et les causes de panne habituelles. Télécharger la fiche.

L'essentiel

serve et funnel sont à un mot d'écart dans le terminal et opposés dans ce qu'ils publient. Serve garde un service à l'intérieur du tailnet ; Funnel le met sur l'internet, sur l'un de trois ports, sous un nom d'hôte ts.net, avec un plafond de bande passante et rien qui authentifie les visiteurs.

Décidez du public que vous visez réellement avant de taper l'une ou l'autre. Si la réponse est « mes propres machines », vous n'aviez jamais besoin d'un point d'entrée public, et l'exposition la plus sûre reste celle que l'on n'a jamais ouverte.

Lien affilié

Prix relevé le 17/10/2026, engagement 24 mois

Questions fréquentes

Quelle est la différence entre Tailscale Funnel et Tailscale Serve ?
Serve partage un service local uniquement avec les autres appareils de votre tailnet. Funnel achemine le trafic depuis l'internet au sens large vers ce service, donc n'importe qui peut l'atteindre, y compris des gens sans compte Tailscale. La documentation est explicite sur cette séparation : si vous voulez partager seulement avec vos propres appareils, utilisez Serve. Les deux commandes se ressemblent presque, et c'est précisément pour cela que l'erreur arrive.
Quels ports Tailscale Funnel peut-il utiliser ?
Trois seulement : 443, 8443 et 10000. C'est une limite dure, pas une valeur par défaut que l'on peut contourner. Si votre service doit être joignable publiquement sur un autre port, Funnel n'est pas le bon outil et il vous faut un reverse proxy ou un autre tunnel.
Tailscale Funnel place-t-il une authentification devant mon service ?
Non. La documentation de Tailscale ne décrit aucune couche d'authentification intégrée devant un point d'entrée Funnel: c'est justement le principe de Funnel que de servir des personnes qui ne sont pas sur votre tailnet. La seule chose entre l'internet et votre service est l'authentification de votre application elle-même. Si elle n'en a pas, le service est ouvert.
Faut-il un plan payant pour utiliser Funnel ?
Non. Tailscale indique que Funnel est disponible sur tous les plans. Ce qu'il faut, c'est l'attribut de nœud « funnel » dans le fichier de politique de votre tailnet, qui détermine quels utilisateurs ont le droit de l'activer, par défaut autogroup:member.
Quel nom d'hôte utilise un point d'entrée Funnel ?
Un nom appartenant au domaine de votre propre tailnet, de la forme tailnet-name.ts.net. Funnel ne peut pas servir directement un domaine qui vous appartient, ce qui compte si vous comptiez y héberger un produit.
Funnel est-il assez rapide pour diffuser des médias ?
Le trafic passant par Funnel est soumis à des limites de bande passante que Tailscale décrit comme non configurables. C'est conçu pour partager un service, pas pour de la diffusion soutenue. Pour une médiathèque partagée avec des personnes extérieures à votre tailnet, attendez-vous à ce que la limite soit la contrainte, plutôt que votre débit montant.