Comparison
9 min read
51 views

Tunnelmole vs ngrok : une alternative npm native pour les développeurs Node.js

IT
InstaTunnel Team
Published by the InstaTunnel team | Editorial policy

Current comparison

Looking for the main ngrok alternative guide?

We keep the latest ngrok alternative comparison, CLI commands, pricing notes, and webhook examples on one canonical page.

Open the InstaTunnel ngrok alternative guide

Quick answer

ngrok vs Tunnelmole : l’alternative open-source native Node.js: quick answer

If free tunnel limits interrupt your workflow, compare session length, stable URLs, concurrent tunnels, and paid-plan pricing before choosing a localhost tunnel tool.

What free tunnel limits should developers check first?

Check session duration, URL stability, concurrent tunnels, custom subdomains, bandwidth or request limits, and whether webhook callbacks survive restarts.

How does InstaTunnel handle longer development sessions?

InstaTunnel Free is designed around 24-hour sessions, with Pro available for higher limits and MCP endpoint tunnel workflows.

Tout développeur utilisant un serveur local finit par rencontrer le même problème : l’application fonctionne parfaitement sur localhost:3000, mais un fournisseur de webhook, un téléphone physique ou un client à l’autre bout du monde ne peut pas y accéder. Pendant des années, ngrok a été la solution par défaut. Tunnelmole est une option plus récente, native en TypeScript, qui a gagné du terrain notamment parmi les développeurs Node.js et JavaScript qui préfèrent ne pas quitter l’écosystème npm pour obtenir une URL publique.

Ce comparatif oppose les deux en termes de friction lors de l’installation, de licences, d’auto-hébergement, et des parties de la documentation de Tunnelmole à connaître avant de faire passer du trafic de production à travers.

Pourquoi les outils de tunneling existent

Votre routeur et le pare-feu de votre OS bloquent par défaut le trafic entrant — c’est une fonctionnalité, pas un bug. Mais cela crée une vraie friction lors du développement :

  • Webhooks : Stripe, Twilio, GitHub et Discord ont besoin d’une URL publique pour POST. Ils ne peuvent pas atteindre localhost:3000.
  • Tests mobiles et multi-appareils : les téléphones sur le même Wi-Fi sont souvent isolés de votre machine de développement par l’isolation des clients, et taper une IP LAN dans un téléphone est peu pratique.
  • API navigateur uniquement en HTTPS : Service Workers, l’API Web Crypto, la géolocalisation, les notifications push et l’installation PWA nécessitent tous un contexte sécurisé. Les certificats auto-signés sur plusieurs appareils sont une galère à gérer.
  • Démonstrations de travaux en cours : montrer à un client ou un collègue quelque chose qui tourne localement, sans déploiement complet.

Un outil de tunneling résout cela en lançant un client léger qui ouvre une connexion sortante vers un relais cloud, qui fournit ensuite une URL publique et redirige le trafic via cette connexion vers votre port local. Comme la connexion est initiée en sortie, elle passe à travers la plupart des NATs et pare-feux sans configuration de routeur.

Où ngrok crée de la friction pour les développeurs JS

ngrok est un produit mature et capable, mais certains aspects le dérangent spécifiquement dans l’écosystème npm :

C’est un binaire Go, pas un package npm. L’agent principal est un binaire Go fermé, pré-compilé. Des wrappers Node.js existent, mais ils fonctionnent en lançant ce binaire en processus enfant plutôt qu’en tant que module JS natif.

Un compte et un authtoken sont obligatoires. Ce n’est pas une rumeur obsolète — la documentation CLI de ngrok indique clairement que le service nécessite une inscription pour connecter un agent, et tenter de lancer l’agent sans compte vérifié et authtoken échoue désormais avec une erreur d’authentification ERR_NGROK_4018. Il n’y a plus de démarrage rapide anonyme et sans inscription.

C’est fermé source. Vous ne pouvez pas auditer le code de l’agent, et la tarification, les noms de plans et le gating des fonctionnalités ont changé plusieurs fois dans l’historique du produit — ce qu’il faut savoir si vous construisez un workflow dépendant de limites gratuites stables.

Présentation de Tunnelmole

Tunnelmole est un outil de tunneling open-source développé par le développeur Robbie Cahill, avec les deux parties de la stack — le tunnelmole-client et le backend tunnelmole-service — écrites en TypeScript. La promesse est simple : pas de binaire Go, pas d’inscription obligatoire pour la version gratuite, et une base de code lisible par les développeurs JS.

Licences (c’est un projet à double licence, pas une seule)

Ce détail est important, car il influence ce que vous pouvez faire légalement avec chaque partie :

  • tunnelmole-client est licencé MIT — permissif, facile à intégrer dans vos outils.
  • tunnelmole-service (le relais backend) est licencé AGPLv3 — si vous le modifiez et le mettez à disposition via un réseau, la clause réseau de l’AGPL s’applique. Le mainteneur de Tunnelmole propose aussi une licence commerciale séparée pour les entreprises souhaitant plus de flexibilité que l’AGPL.

Installation

Si vous avez Node.js 16.10 ou plus récent, la méthode npm fonctionne :

npm install -g tunnelmole
tmole 3000

Vous pouvez aussi ignorer la version Node requise et télécharger un binaire précompilé avec Node intégré :

curl -O https://install.tunnelmole.com/xD345/install   sudo bash install

Les utilisateurs Windows peuvent télécharger directement tmole.exe et l’ajouter à leur PATH.

Dans tous les cas, lancer tmole <port> vous donne immédiatement une URL HTTP et HTTPS, sans compte pour le service hébergé par défaut :

$ tmole 8080
http://evgtkh-ip-49-145-166-122.tunnelmole.net redirige vers localhost:8080
https://evgtkh-ip-49-145-166-122.tunnelmole.net redirige vers localhost:8080

Utilisation programmatique

Tunnelmole est aussi disponible en dépendance npm pour une utilisation dans du code Node/TypeScript, supportant ESM et CommonJS :

npm install --save tunnelmole
import { tunnelmole } from 'tunnelmole';
import express from 'express';

const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
  res.send('Bonjour du web public, routé via Tunnelmole !');
});

app.listen(PORT, async () => {
  console.log(`Serveur en local sur http://localhost:${PORT}`);
  const url = await tunnelmole({ port: PORT });
  console.log(`URL public accessible à : ${url}`);
});

La fonction est asynchrone et ne bloque pas la boucle d’événements. Installer comme dépendance ajoute aussi node_modules/.bin/tmole dans votre projet, pratique pour l’intégrer dans un script npm comme "start-public": "npm run start && tmole 3000".

Deux points que la communication marketing omet souvent

Ces aspects ne figurent pas dans la plupart des comparatifs, mais ils comptent pour quiconque évalue Tunnelmole pour autre chose que des tests locaux occasionnels.

Votre IP n’est pas masquée sur le service hébergé. La FAQ de Tunnelmole est claire : le service masquait l’origine IP, mais cela a été exploité par des opérateurs de phishing. Désormais, Tunnelmole ajoute un en-tête X-Forwarded-For avec votre IP réelle à chaque réponse — et pour les sous-domaines générés aléatoirement, l’IP est intégrée dans l’URL. Si la confidentialité IP est importante pour votre cas d’usage, l’auto-hébergement est la seule solution pour supprimer ce comportement (il faut retirer l’en-tête vous-même), pas le service hébergé par défaut.

La télémétrie est activée par défaut. Le client collecte des données anonymisées — version Node.js, OS, rapports de crash avec traces — sauf si vous désactivez via la variable d’environnement TUNNELMOLE_TELEMETRY=0. Pour un test unique tmole 3000, cela ne pose pas problème ; pour un workflow sensible à la conformité, il vaut mieux désactiver explicitement et le documenter.

Auto-héberger Tunnelmole

C’est une fonctionnalité que ngrok ne propose tout simplement pas, à aucun prix. Étant donné que le client et le service sont open-source, vous pouvez faire tourner votre propre instance au lieu de tunnelmole.com :

git clone git@github.com:robbie-cahill/tunnelmole-service.git
cd tunnelmole-service
npm install
cp config-instance.example.toml config-instance.toml
npm start

Configurez votre tunnelmole-client pour pointer vers votre propre endpoint WebSocket au lieu de l’instance SaaS par défaut, et vous avez une configuration de tunneling totalement privée, sans tiers, sans télémétrie non désirée, et sans abonnement pour des sous-domaines personnalisés (qui coûtent en plus sur le service hébergé).

Deux précautions à connaître avant de vous lancer dans du vrai :

  • tunnelmole-service ne supporte pas nativement HTTPS. La documentation du mainteneur est claire : il faut le mettre derrière Nginx (ou autre) avec un certificat Let’s Encrypt pour HTTPS. Le service hébergé tunnelmole.com ajoute cette infrastructure ; une instance auto-hébergée n’en aura pas par défaut.
  • Le service officiel hébergé n’est pas identique byte par byte au dépôt open-source. Selon le mainteneur, tunnelmole.com exécute le même code open-source plus la vérification de facturation/abonnement fermée, et l’infrastructure HTTPS supplémentaire — c’est la seule couche propriétaire. Cela signifie que “auto-hébergé” et “hébergé” ne tournent pas avec le même logiciel exact.

Comparatif des fonctionnalités

Attribut ngrok Tunnelmole
Agent principal Binaire Go, fermé TypeScript, open source
Compte requis pour la version gratuite Oui — compte vérifié + authtoken Non, pour le service hébergé par défaut
Licence Proprietary MIT (client) / AGPLv3 (service)
Auto-hébergeable Non Oui
Utilisation Node.js programmatique Wrapper autour d’un binaire externe Module natif ESM/CommonJS
IP masquée pour la destination N/A (infra ngrok) Non — X-Forwarded-For + IP dans URL sur service hébergé
Télémétrie Non le sujet de ce document Activée par défaut, désactivation via env
Sous-domaines personnalisés, version gratuite Inclus (domaine ngrok) Nécessite abonnement payant sauf auto-hébergement

Où chaque outil coûte réellement de l’argent

Comme la tarification évolue rapidement, voici la structure actuelle de ngrok (vérifiée directement sur leur page de tarification, pas un agrégateur tiers) :

Plan Prix Inclus
Gratuit 0 $ Crédit d’utilisation unique de 5 $ (valable un an, plan gratuit uniquement), jusqu’à 3 points d’accès en ligne, 1 Go de transfert, 20k requêtes HTTP/S/mois, page d’avertissement sur les points d’accès
Hobbyiste 8 $/mo annuel (10 $ mois à mois) Crédit mensuel de 10 $, 3 points d’accès en ligne, 5 Go de transfert, 100k requêtes incluses, pas de page d’avertissement, domaines de marque ngrok
Pay-as-you-go 20 $/mo + usage Accès illimité, domaine personnel, facturation au-delà du crédit inclus
Entreprise Sur devis SSO/SAML, SCIM, HIPAA BAA, rapports SOC 2, SLA support dédié

Le service hébergé Tunnelmole est gratuit pour le cas d’usage principal (sous-domaine aléatoire, HTTPS inclus) ; un abonnement est nécessaire pour un sous-domaine personnalisé/réservé, mais cette exigence disparaît si vous auto-hébergez.

Cas d’usage réels

Développement de Webhook. tmole 3000 vous donne une URL HTTPS publique stable à transmettre à Stripe, Twilio ou GitHub, pour déboguer en direct plutôt que d’écrire des payloads fictifs.

Tests mobiles et multi-appareils. La connexion WebSocket sortante contourne les réseaux Wi-Fi isolés qui bloqueraient autrement un téléphone vers votre machine de développement.

Fonctionnalités navigateur en HTTPS. Service Workers, installation PWA, API Web Crypto nécessitent un contexte sécurisé. Les URLs HTTPS de Tunnelmole évitent de générer et faire confiance à des certificats auto-signés sur chaque appareil de test.

Conclusion

ngrok reste une plateforme capable et prête pour l’entreprise — mais son obligation de compte et son agent fermé source sont des contraintes actuelles, pas des critiques obsolètes. La proposition de Tunnelmole aux développeurs JavaScript est légitime : installation npm native, code TypeScript lisible, et une voie vraiment gratuite sans inscription pour le cas courant. Les compromis existent cependant : la télémétrie est activée par défaut, votre IP est visible sur le service hébergé, et l’auto-hébergement pour la confidentialité implique de gérer votre propre terminaison HTTPS. Rien de tout cela ne fait de Tunnelmole un mauvais choix ; cela signifie simplement que “open source et auto-hébergeable” n’est pas la même chose que “privé par défaut”, et il est important de savoir ce que vous obtenez réellement avant de l’intégrer à autre chose qu’un simple démo local.


Changelog

  • Supprimé : cadre promotionnel/SEO (“Entrez Tunnelmole, l’outil récemment viral”, “le flex ultime”, “reclaiming your ecosystem” sections) et contenu généré par IA tout au long ; langage resserré pour correspondre à un ton technique, factuel.
  • Corrigé : le brouillon initial ne mentionnait pas que ngrok impose désormais une inscription et une vérification de l’authtoken avec une erreur spécifique (ERR_NGROK_4018) — ajouté et référencé dans la documentation CLI de ngrok et une issue GitHub reproduisant l’échec. (Source : ngrok Agent CLI docs, runatlantis/atlantis#4218)
  • Ajouté : tableau précis des prix ngrok actuels (Gratuit/Hobbyiste/Pay-as-you-go/Entreprise), directement extrait de la page de tarification officielle, pas une estimation générique. (Source : ngrok.com/pricing)
  • Ajouté : confirmation et citation pour la double licence — MIT pour tunnelmole-client, AGPLv3 pour tunnelmole-service, plus l’existence d’une licence commerciale séparée. (Source : tunnelmole-service README)
  • Ajouté : nouvelle section “Deux points que la communication marketing omet souvent” couvrant (1) que le service Tunnelmole hébergé ne masque pas votre IP — il ajoute un en-tête X-Forwarded-For et intègre l’IP dans l’URL — et (2) que la télémétrie (version Node, OS, rapports de crash) est collectée par défaut avec une variable d’environnement d’opt-out. Ces faits n’étaient pas dans le brouillon original. (Source : tunnelmole-client README/FAQ)
  • Ajouté : précision que tunnelmole-service ne supporte pas nativement HTTPS et nécessite une configuration Nginx + Let’s Encrypt pour HTTPS auto-hébergé, et que le service officiel exécute le même code open-source plus une couche de facturation fermée et une infrastructure HTTPS supplémentaire — donc auto-hébergé et hébergé ne tournent pas avec le même logiciel exact. (Source : tunnelmole-service README)
  • Corrigé : le brouillon initial laissait penser que npm install -g tunnelmole ne nécessite pas de Node spécifique ; en réalité, la documentation indique Node.js 16.10+ pour cette méthode, la méthode binaire précompilée n’ayant pas cette contrainte (Node est intégré). (Source : tunnelmole-client README)
  • Ajouté : méthodes d’installation via script et binaire Windows, qui étaient absentes du brouillon original. (Source : tunnelmole-client README)
  • Conservé, vérifié : étapes d’auto-hébergement (git clone, cp config-instance.example.toml config-instance.toml, npm start) conformes au README actuel de tunnelmole-service. (Source : tunnelmole-service README)
  • Conservé, vérifié : exemple d’utilisation programmatique ESM/CommonJS conforme à la documentation actuelle de tunnelmole-client. (Source : tunnelmole-client README)

Continue from this article into the most relevant product guides and workflows.

Related Topics

#ngrok vs tunnelmole, tunnelmole, ngrok alternative, tunnelmole vs ngrok, open source ngrok alternative, free ngrok alternative, node.js tunneling tool, javascript tunneling tool, typescript tunnel, native npm tunnel, npm install tunnelmole, tmole 3000, self hosted ngrok alternative, open source tunneling, local server to internet, bypass ngrok binary, react developer tools, node.js developer tools, share local server, expose localhost free, secure local tunnel, public url generator, webhook testing tool, npm tunnel tool, free cloud tunnel, self host tunnelmole backend, tmole command, js ecosystem tunneling, typescript alternative to ngrok, node.js localhost, public url for localhost, expose local api, javascript developer tools, ngrok alternatives 2026, test webhooks locally, local server preview, localhost sharing tool, local network tunnel, frontend developer tunneling, share react app, host local backend, local dev environment, zero config reverse proxy, instant public url, npm native reverse proxy, open source reverse proxy, node based tunnel, free https tunnel, developer productivity tools, open source reverse proxy tunnel, share localhost nodejs, typescript backend tunneling

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles