Cette FAQ explique comment rendre vos applications web (par exemple, Gradio, FastAPI, Streamlit, Flask) accessibles publiquement sur les serveurs GPU Trooper.AI via HTTP(S). Ceci est particulièrement utile pour les tableaux de bord, les API et les interfaces utilisateur fonctionnant à l'intérieur de votre Blib ou de votre modèle.
Nous vous recommandons d'utiliser le proxy SSL inclus dans tous les modèles afin de sécuriser facilement vos applications. Lisez la suite ci-dessous !
Chaque serveur sur Trooper.AI est fourni avec au moins 10 ports publics par GPUCela signifie :
Tous les ports publics sont sécurisés par notre proxy SSL. La plupart des utilisateurs n'en ont besoin que de 2 à 4 ports (par exemple, un pour leur application, un pour la surveillance, un pour l'accès WebSocket/API).
Vous pouvez vérifier vos ports disponibles dans le tableau de bord ou demander une liste complète au support.
Sur cette capture d'écran : De haut en bas et de gauche à droite, vous voyez :
0.0.0.0, pas 127.0.0.1 et l'un de vos ports publics attribués comme 11307Exemple (Python/Flask) :
flask run --host=0.0.0.0 --port=11307
Exemple (Gradio) :
app.launch(server_name="0.0.0.0", server_port=11307)
Exemple (démarrer une application Gradio depuis le shell) :
python your_app.py --server-name 0.0.0.0 --server-port 11307
Exemple (Docker) :
docker run -p 11307:8080 your-ai-webapp-image
11307Votre application sera accessible à l'adresse :
http://connectXX.trooper.ai:11307
No. L'accès direct aux ports 80 (HTTP) et 443 (HTTPS) n'est pas disponible pour des raisons de sécurité.
Si vous avez besoin d'un point de terminaison HTTPS sécurisé (par exemple, pour l'intégration en frontend ou la redirection OAuth) :
👉 Vous obtenez automatiquement un certificat SSL pour n'importe quel modèle ou contactez le support pour obtenir de l'aide.
Cela mappera votre port public (par exemple, 11307) à un point de terminaison HTTPS sécurisé comme :
https://ssl-access-id.app.trooper.ai/
Ce proxy SSL est inclus avec tous les plans GPU et activé automatiquement lors de l'installation de chaque modèle. Les données sont acheminées en toute sécurité sur notre réseau interne, offrant une sécurité renforcée et garantissant que les certificats sont spécifiques à l'environnement réseau de votre GPU Server Blib.
Vous avez quatre options principales :
Utilisez notre proxy HTTPS géré (recommandé, voir le chapitre suivant) Déploiement automatique lors de l'installation du modèle. Le trafic est entièrement acheminé sur le réseau interne directement vers votre GPU Server Blib !
Exécutez votre propre proxy inverse (par exemple, nginx avec Let’s Encrypt) sur votre serveur frontal (web) public
Remarque : vous utiliserez toujours un port non standard comme 11306 sur le serveur GPU. Assurez-vous de prendre en charge les WebSockets si nécessaire.
Utilisez un service de tunneling comme SSH tunnel, ngrok ou Cloudflare Tunnel Cela vous donne un domaine HTTPS public rapidement, mais il est difficile à maintenir. À utiliser uniquement pendant le développement rapide.
Communiquer via l'API (standard de l'industrie) Communiquez uniquement via l'API depuis votre serveur public avec votre serveur GPU. Cela peut être combiné avec (1) le proxy HTTPS ou (3) le tunnel SSH. C'est la norme de l'industrie et est utilisé par les services en production.
Notre proxy SSL sert toujours HTTPS on https://<ssl-id>.app.trooper.ai et transmet le trafic sur notre réseau interne au port de votre application. détecte automatiquement ce que vous faites (HTTP standard, streaming/chat, téléchargements importants, WebSockets) et applique une temporisation intelligente afin que les tâches longues ne soient pas interrompues, mais que les connexions inactives ou rompues ne restent pas bloquées indéfiniment.
| Type de trafic | Comment c'est détecté | Délai d'attente du proxy |
|---|---|---|
| Requête/réponse HTTP standard | Tout ce qui ne correspond pas ci-dessous | 60s (PAR DÉFAUT) |
| Chat/Streaming (SSE / NDJSON) | Le chemin contient /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / application/x-ndjson |
10 min (LONG) |
| Téléchargements de fichiers volumineux | Range en-tête, chemin d'accès ou extension de fichier Accept: application/octet-stream |
30 min (TÉLÉCHARGEMENT) |
| WebSockets | Mise à niveau HTTP vers WS/WSS | Pas de délai d'inactivité du proxy |
Le proxy ajuste également dynamiquement les délais d'attente sur la réponse (par exemple, si votre serveur envoie
206orContent-Disposition: attachment, cela augmente le délai d'attente TÉLÉCHARGEMENT même si la requête n'avait pas été initialement classée comme un téléchargement).
Pour le chat/streaming (SSE/NDJSON)
Envoyez les en-têtes corrects pour que le proxy sache qu'il s'agit d'un flux :
Content-Type: text/event-streamContent-Type: application/x-ndjsonÉmettre un heartbeat au moins tous les 15–30 secondes (SSE peut envoyer une ligne de commentaire :\n; NDJSON peut pousser une ligne vide). Cela maintient la connexion active pendant les longues exécutions du modèle.
Pour les WebSockets
Pour les téléchargements importants
206 Partial Content le cas échéant.Content-Disposition: attachment pour les fichiers téléchargeables.Content-Type (ou laissez les clients demander avec Accept: application/octet-streamafin que le proxy le classifie comme un téléchargement et applique une fenêtre plus longue.Flux SSE (curl) :
curl -N -H "Accept: text/event-stream" https://<ssl-id>.app.trooper.ai/api/stream
Flux NDJSON :
curl -N -H "Accept: application/x-ndjson" https://<ssl-id>.app.trooper.ai/generate
Téléchargement reprenable :
curl -O -H "Range: bytes=0-" https://<ssl-id>.app.trooper.ai/files/big-model.bin
Content-Disposition: attachment et un type approprié Content-Type, ou que le client envoie Accept: application/octet-streamCela garantit que 30 min fenêtre de téléchargementDepuis l'intérieur de votre serveur :
ss -tlnp | grep :11307
Vous devriez voir :
LISTEN 0 128 0.0.0.0:11307 ...
Depuis votre machine locale :
curl http://connectXX.trooper.ai:11307
Si le port reste bloqué ou dépasse le délai imparti :
0.0.0.0socatSi votre application ne fonctionne que sur localhost:8000, vous pouvez le transférer :
sudo socat TCP-LISTEN:11307,fork TCP:localhost:8000
Cela expose localhost:8000 en externe connectXX.trooper.ai:11307.
Les plages de ports publics sont attribuées automatiquement et ne peuvent pas être modifiées.
Si votre application nécessite plus de ports que l'allocation standard (par exemple pour des applications parallèles ou des déploiements multi-locataires), veuillez contacter notre équipe de support après avoir consulté attentivement notre documentation. Il est important de comprendre que les serveurs GPU ne sont pas destinés à fonctionner comme des serveurs web publics et que nous n'offrons pas la possibilité d'ouvrir des ports publics supplémentaires.
0.0.0.0import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=11308)
Accessible à :
http://connectXX.trooper.ai:11308
Besoin de HTTPS ? Vous devriez automatiquement voir l'icône de verrouillage sur vos installations de modèles pointant vers :
https://ssl-token.apps.trooper.ai/
Nous sommes là pour vous aider. Veuillez préparer ces informations avant de nous contacter :
aiXX_trooperai_000XXX)