Documentation T-Hoster
T-Hoster est une plateforme de tunneling qui vous permet d'exposer vos services locaux sur Internet. Similaire à ngrok, mais hébergé sur votre propre infrastructure.
Nouveau sur T-Hoster ? Commencez par le guide de démarrage rapide pour créer votre premier tunnel en moins de 2 minutes.
Démarrage rapide
Suivez ces 4 étapes pour exposer votre premier service local :
1. Créer un compte
Rendez-vous sur le dashboard et entrez votre email pour obtenir une clé API.
2. Télécharger le client
# Linux / macOS
curl -L -o thoster https://{{.Domain}}/downloads/thoster-linux
chmod +x thoster
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://{{.Domain}}/downloads/thoster.exe" -OutFile "thoster.exe"
3. Lancer un tunnel
# Exposer le port 3000
./thoster --server wss://{{.Domain}}/ws --api-key VOTRE_CLE_API --port 3000
4. Accéder à votre service
Votre service est maintenant accessible via l'URL affichée, par exemple :
https://abc12345.{{.Domain}}
Installation
Prérequis
- Un compte T-Hoster avec une clé API
- Un service local à exposer (serveur web, API, etc.)
Linux / macOS
# Télécharger
curl -L -o thoster https://{{.Domain}}/downloads/thoster-linux
chmod +x thoster
# Optionnel: déplacer dans le PATH
sudo mv thoster /usr/local/bin/
Windows
# PowerShell
Invoke-WebRequest -Uri "https://{{.Domain}}/downloads/thoster.exe" -OutFile "thoster.exe"
Compilation depuis les sources
git clone https://github.com/t-hoster/client.git
cd client
go build -o thoster main.go
Créer un tunnel
Syntaxe de base
./thoster --server wss://{{.Domain}}/ws --api-key VOTRE_CLE --port PORT_LOCAL
Options disponibles
| Option | Description | Exemple |
|---|---|---|
--server |
URL du serveur T-Hoster | wss://{{.Domain}}/ws |
--api-key |
Votre clé API | abc123-def456 |
--port |
Port local à exposer | 3000 |
Variables d'environnement
Vous pouvez aussi configurer le client via des variables d'environnement :
export THOSTER_SERVER="wss://{{.Domain}}/ws"
export THOSTER_API_KEY="votre-cle-api"
./thoster --port 3000
Exemples d'utilisation
# Exposer un serveur de développement React
./thoster --port 3000
# Exposer une API Flask
./thoster --port 5000
# Exposer un serveur Node.js
./thoster --port 8080
Domaines custom
Les domaines custom vous permettent d'utiliser votre propre nom de domaine au lieu d'un sous-domaine T-Hoster.
Les domaines custom sont disponibles à partir du plan Pro. Voir les tarifs
Configuration DNS
Ajoutez un enregistrement A pointant vers notre serveur :
Type: A
Nom: @ (ou votre sous-domaine)
Valeur: 72.62.146.228
TTL: 3600
Ajouter le domaine
- Allez dans le Dashboard
- Cliquez sur l'onglet "Custom Domains"
- Entrez votre domaine et l'ID du tunnel associé
- Cliquez sur "Add Domain"
Le certificat SSL sera automatiquement généré par Let's Encrypt.
Dashboard
Le dashboard vous permet de :
- Voir vos tunnels actifs et leur statut
- Consulter les statistiques en temps réel
- Gérer vos domaines custom
- Voir les logs de requêtes en direct
Logs en direct
L'onglet "Live Logs" du dashboard vous permet de voir toutes les requêtes HTTP passant par vos tunnels en temps réel.
Chaque entrée affiche :
- Timestamp : Heure de la requête
- Méthode : GET, POST, PUT, DELETE, etc.
- Path : Chemin de la requête
- Status : Code de réponse HTTP
- Latence : Temps de réponse en ms
- Taille : Bytes entrants/sortants
Authentification API
Toutes les requêtes API authentifiées doivent inclure votre clé API dans le header :
X-API-Key: votre-cle-api
API Users
Créer un nouveau compte utilisateur
# Requête
curl -X POST https://{{.Domain}}/api/users \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
# Réponse
{
"email": "user@example.com",
"api_key": "550e8400-e29b-41d4-a716-446655440000"
}
API Tunnels
Lister tous vos tunnels
# Requête
curl https://{{.Domain}}/api/tunnels \
-H "X-API-Key: votre-cle-api"
# Réponse
[
{
"public_id": "abc12345",
"public_url": "https://abc12345.{{.Domain}}",
"local_port": 3000,
"status": "active",
"custom_domains": ["example.com"],
"created_at": "2025-01-15T10:30:00Z"
}
]
API Domains
Lister vos domaines custom
Ajouter un domaine custom
curl -X POST https://{{.Domain}}/api/domains \
-H "X-API-Key: votre-cle-api" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com", "tunnel_id": "abc12345"}'
Supprimer un domaine custom
API Statistics
Statistiques globales du serveur (public)
# Réponse
{
"total_requests": 15420,
"total_bytes_in": 5242880,
"total_bytes_out": 104857600,
"active_tunnels": 12,
"total_connects": 156,
"uptime_seconds": 86400
}
Statistiques d'un tunnel spécifique
Stream SSE des logs en temps réel
Protocole WebSocket
Le client communique avec le serveur via WebSocket. Voici le protocole utilisé :
Connexion et enregistrement
// Client -> Serveur
{
"type": "register",
"api_key": "votre-cle-api",
"local_port": 3000
}
// Serveur -> Client (succès)
{
"type": "register_response",
"success": true,
"public_id": "abc12345",
"public_url": "https://abc12345.{{.Domain}}"
}
Requête HTTP
// Serveur -> Client
{
"type": "http_request",
"request_id": "uuid",
"method": "GET",
"path": "/api/users",
"headers": {"Content-Type": "application/json"},
"body": null
}
// Client -> Serveur
{
"type": "http_response",
"request_id": "uuid",
"status_code": 200,
"headers": {"Content-Type": "application/json"},
"body": "base64_encoded_body"
}
Limites par plan
| Limite | Free | Pro | Business |
|---|---|---|---|
| Tunnels simultanés | 2 | 10 | 50 |
| Domaines custom | 0 | 5 | 20 |
| Requêtes/minute | 60 | 300 | 1000 |
| Bande passante/mois | 1 GB | 50 GB | Illimitée |
Dépannage
Le tunnel ne se connecte pas
Vérifiez que votre clé API est correcte et que vous n'avez pas atteint la limite de tunnels de votre plan.
Erreur "Rate limit exceeded"
Vous avez dépassé le nombre de requêtes par minute autorisé. Attendez quelques secondes ou passez à un plan supérieur.
Le tunnel se déconnecte fréquemment
- Vérifiez votre connexion Internet
- Le client se reconnecte automatiquement après 5 secondes
- Vérifiez les logs du client pour plus de détails
Certificat SSL invalide sur domaine custom
- Vérifiez que votre DNS pointe bien vers
72.62.146.228 - Attendez quelques minutes pour la propagation DNS
- Le certificat est généré automatiquement à la première requête
Contactez-nous à contact@t-hoster.cloud ou ouvrez une issue sur GitHub.