🌍 Accès HTTPS (Proxy SSL)

Cette page explique comment rendre les applications sur les serveurs GPU Trooper.AI accessibles au public. Vous pouvez publier des tableaux de bord, des API, des applications d'IA, des points de terminaison de modèles et des interfaces utilisateur fonctionnant dans des modèles ou vos propres projets.

Vos GPU Server Blibs fournissent de 10 à 40 ports publics exposés à Internet. Tout service lié à ces ports sera accessible depuis l’extérieur du réseau interne en utilisant le nom d’hôte public de votre serveur.

Trooper.AI propose deux options d'accès :

1️⃣ Ports publics bruts directs

Connectivité instantanée sans configuration.

2️⃣ 🔐 HTTPS sécurisé via Webproxy (Recommandé)

Exposition chiffrée de niveau production pour les applications web et les API. Activé sur tous les modèles par défaut et pour vos propres applications, utilisez ceci : Proxy web avec SSL


🌐 Allocation de ports publics

Chaque serveur GPU inclut des ports TCP+UDP publics attribués automatiquement aux modèles et disponibles pour les applications personnalisées. UDP doit être activé via le tableau de bord de gestion si cela est réellement nécessaire.

URL directe brute :

Code
http://connectXX.trooper.ai:PORT

Exemple de vue du tableau de bord :

Public Ports on Template Installs
Ports publics sur les installations de modèles

Dans cette vue :

  • Plages de ports publics
  • Noms d’hôtes publics
  • Noms des modèles
  • Icône de verrou = HTTPS sécurisé disponible
  • Infos = lien de documentation
  • Paramètres = configuration

🤖 Le transfert de port est un processus automatisé avec des vérifications intégrées. Veuillez demander à votre Agent IA de se concentrer sur la configuration et la liaison des ports, car le transfert de port fonctionne correctement. Aucun problème NAT n'est possible si le statut de votre machine est vert.


Accès direct aux ports bruts (Option rapide)

Lie votre application à 0.0.0.0 en utilisant l'un des ports publics attribués :

Exemple Flask :

bash
flask run --host=0.0.0.0 --port=11307

Exemple Gradio :

python
app.launch(server_name="0.0.0.0", server_port=11307)

Résultat :

Code
http://connectXX.trooper.ai:11307

Cette approche reste disponible pour des tests rapides et une commodité interne. Les ports bruts ne sont pas chiffrés ; lisez la suite pour plus d'informations sur HTTPS.


🔐 HTTPS sécurisé avec Webproxy (Recommandé)

Pour la production, l'authentification, les interfaces utilisateur, les embeddings, les tableaux de bord de surveillance et l'utilisation de l'API :

1️⃣ Exécuter l’application en interne sur un port interne sécurisé :

Code
0.0.0.0:8080

2️⃣ Installez le modèle Webproxy

3️⃣ Configurer :

  • port interne → port de l’application (par exemple 8080)
  • port Webproxy externe → sélectionné lors de l'installation

4️⃣ HTTPS public créé :

Code
https://<token>.secure.trooper.ai

📌 Avantages :

  • certificats SSL automatiques
  • Support WebSocket
  • routage interne uniquement (chemin sécurisé)
  • aucune configuration Nginx nécessaire
  • Aucun proxy inverse local requis

Chaque modèle inclut un Webproxy sécurisé préconfiguré et son point de terminaison associé. Pour exposer en toute sécurité des applications personnalisées déployées sur votre serveur GPU, utilisez le modèle Webproxy : Proxy web avec SSL


⚠️ Utilisation des ports 80 / 443

Liaison directe aux ports 80 or 443 n'est pas automatiquement exposé à l'internet public. Utilisez le modèle Webproxy pour établir des points de terminaison HTTPS. L'installation de certificats SSL personnalisés n'est pas prise en charge ; nous vous recommandons d'utiliser le port 8080 pour votre application, un choix couramment préféré par les développeurs.

En savoir plus : Proxy web avec SSL


Classes de délai d'expiration du proxy

La couche de routage HTTPS/Webproxy ajuste automatiquement le comportement en fonction du type de trafic. Cela garantit que les appels interactifs courts restent rapides, tandis que les tâches d'IA/streaming restent stables.

Type de trafic Méthode de détection Expiration
HTTP standard requête/réponse standard 60s
Chat / Streaming (SSE/NDJSON) /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / en-têtes NDJSON 10 minutes
Téléchargements volumineux type de fichier Range en-têtes, pièces jointes, transfert binaire 30 minutes
WebSockets Détection de mise à niveau WS/WSS pas de délai d'inactivité

💡 Le proxy s'ajuste dynamiquement si les conditions de réponse changent. Exemple : Servir un fichier = mise à niveau automatique du délai d'expiration du téléchargement.

📝 Exigences applicatives

Pour le streaming SSE/NDJSON

Envoyer le bon type de contenu :

  • text/event-stream
  • application/x-ndjson

Inclure une sortie de battement de cœur toutes les 15 à 30 secondes.

Pour les WebSockets

Maintenir l'activité ping/pong (20–30s typique).

Pour les téléchargements

Support Range requêtes et statut 206. Add Content-Disposition: attachment si nécessaire.


Tests des modes de diffusion en continu

Exemple de commande curl SSE :

bash
curl -N -H "Accept: text/event-stream" https://<ssl-id>.secure.trooper.ai/api/stream

Exemple NDJSON :

bash
curl -N -H "Accept: application/x-ndjson" https://<ssl-id>.secure.trooper.ai/generate

Exemple de téléchargement reprenable :

bash
curl -O -H "Range: bytes=0-" https://<ssl-id>.secure.trooper.ai/files/model.bin

Tests de connectivité du port

Interne :

bash
ss -tlnp | grep :11307

Externe :

bash
curl http://connectXX.trooper.ai:11307

Les ports bruts ne nécessitent que :

  • application en cours d'exécution
  • liaison 0.0.0.0
  • utilisation correcte du port

🔁 Ports et modèles publics

Les ports publics sont attribués automatiquement et affichés dans le tableau de bord à côté des installations de modèles.

Pour vos propres projets, utilisez :

Code
8080→ Webproxy → HTTPS endpoint

🧯 Dépannage

Les problèmes courants rencontrés lors de l'établissement d'une connexion HTTPS entièrement fonctionnelle sont souvent liés à des détails de configuration simples.

❌ Non accessible : vérifiez le port et la liaison
❌ Mauvais port : utilisez uniquement les ports attribués
❌ Pas de HTTPS : utilisez le modèle Webproxy
❌ Pare-feu à l'intérieur du conteneur : désactiver ou ajuster
❌ UDP non activé : TCP est notre configuration par défaut, activez UDP via le tableau de bord de gestion si vous en avez vraiment besoin.
❌ Tâches de calcul longues : diffusez la sortie ou utilisez le mode SSE/NDJSON
❌ Tentative de connexion avec votre propre domaine : nous ne prenons pas en charge les domaines personnalisés.


🧑‍💻 Exemple : FastAPI avec Webproxy

Application interne :

python
uvicorn.run("main:app", host="0.0.0.0", port=8080)

HTTPS public

Code
https://<token>.secure.trooper.ai

En savoir plus : Proxy web avec SSL


📎 Liens utiles