HTTPS-Zugriff (SSL-Proxy)

Dieses FAQ erklärt, wie Sie Ihre Webanwendungen (z.B. Gradio, FastAPI, Streamlit, Flask) über HTTP(S) auf Trooper.AI GPU-Servern öffentlich zugänglich machen können. Dies ist besonders nützlich für Dashboards, APIs und Benutzeroberflächen, die innerhalb Ihres Blibs oder Ihrer Vorlage ausgeführt werden.

Wir empfehlen, den in allen Vorlagen enthaltenen SSL-Proxy zu verwenden, um Ihre Anwendungen einfach zu sichern. Weitere Informationen finden Sie unten!

Wie viele öffentliche Ports erhalte ich?

Jeder Server auf Trooper.AI wird mit mindestens 10 öffentliche Ports pro GPUDas bedeutet:

  • Eine 1×GPU-Maschine → 10 öffentliche Ports
  • Eine 4×GPU-Maschine → 40 öffentliche Ports
  • Eine 8×GPU-Maschine → 80 öffentliche Ports

Alle öffentlichen Ports sind durch unseren SSL-Proxy gesichert. Die meisten Benutzer benötigen nur 2–4 Ports (z. B. einer für ihre Anwendung, einer für die Überwachung, einer für WebSocket/API-Zugriff).

Sie können Ihre verfügbaren Ports im Dashboard überprüfen oder eine vollständige Liste vom Support anfordern.

Public Ports on Tempalte Installs
Öffentliche Ports auf Template-Installationen

In diesem Screenshot: Von oben nach unten und von links nach rechts sehen Sie:

  • Öffentlicher Portbereich
  • Öffentlicher Hostname
  • Vorlagenname
  • Schloss-Symbol bedeutet, dass eine sichere HTTPS-Verbindung möglich ist (klicken Sie darauf, um die WebUI der Vorlage zu öffnen). Weitere Informationen zum SSL HTTPS Proxy finden Sie weiter unten!
  • Info-Symbol für die Dokumentation der Vorlage
  • Einstellungen für die Vorlage

🚀 Wie stelle ich meine App für das Internet bereit?

  1. Starten Sie Ihre Anwendung im Listening-Modus 0.0.0.0, nicht 127.0.0.1 und einem Ihrer zugewiesenen öffentlichen Ports wie 11307

Beispiel (Python/Flask):

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

Beispiel (Gradio):

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

Beispiel (Starten einer Gradio-App über die Shell):

bash
python your_app.py --server-name 0.0.0.0 --server-port 11307

Beispiel (Docker):

bash
docker run -p 11307:8080 your-ai-webapp-image
  1. Verwenden Sie einen Ihrer zugewiesenen öffentlichen Portswie zum Beispiel 11307

Ihre Anwendung ist erreichbar unter:

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

Kann ich Port 80 oder 443 verwenden?

No. Direkter Zugriff auf Port 80 (HTTP) und 443 (HTTPS) ist nicht verfügbar aus Sicherheitsgründen.

Wenn Sie einen sicheren HTTPS-Endpunkt benötigen (z. B. für die Einbettung in das Frontend oder für OAuth-Umleitungen):

👉 Sie erhalten automatisch SSL für jede Vorlage oder kontaktieren Sie den Support, um Hilfe zu erhalten. Dies wird Ihren öffentlichen Port (z.B. 11307zu einem sicheren HTTPS-Endpunkt wie:

Code
https://ssl-access-id.app.trooper.ai/

Dieser SSL-Proxy ist in allen GPU-Plänen enthalten und wird automatisch bei jeder Template-Installation aktiviert. Daten werden sicher über unser internes Netzwerk geleitet, was die Sicherheit erhöht und sicherstellt, dass die Zertifikate spezifisch für die Netzwerkumgebung Ihres GPU Server Blibs sind.


🔒 Wie kann ich meine HTTP-App sichern?

Sie haben vier Hauptoptionen:

  1. Nutzen Sie unseren verwalteten HTTPS-Proxy Wird automatisch bei der Vorlageninstallation bereitgestellt. Der Datenverkehr wird vollständig im internen Netzwerk direkt zu Ihrem GPU Server Blib geleitet!

  2. Betreiben Sie Ihren eigenen Reverse-Proxy (z.B. nginx mit Let’s Encrypt) auf Ihrem öffentlichen Frontend (Web)-Server. Hinweis: Sie verwenden weiterhin einen nicht standardmäßigen Port wie 11306 auf dem GPU-Server. Stellen Sie sicher, dass WebSockets bei Bedarf unterstützt werden.

  3. Verwenden Sie einen Tunneling-Dienst wie SSH-Tunnel, ngrok oder Cloudflare Tunnel. Dies verschafft Ihnen schnell eine öffentliche HTTPS-Domain, erschwert jedoch die Wartung. Verwenden Sie dies nur während der schnellen Entwicklung.

  4. Über API kommunizieren (Branchenstandard) Kommunizieren Sie ausschließlich über die API von Ihrem öffentlichen Server mit Ihrem GPU-Server. Dies kann mit (1) dem HTTPS-Proxy oder (3) dem SSH-Tunnel kombiniert werden. Dies ist der Branchenstandard und wird von produktiven Diensten verwendet.


So verwenden Sie unseren SSL HTTPS Proxy korrekt

Unser SSL-Proxy stellt immer HTTPS bereit on https://<ssl-id>.app.trooper.ai und leitet den Datenverkehr über unser internes Netzwerk an den Port Ihrer Anwendung weiter. erkennt automatisch was Sie tun (reguläres HTTP, Streaming/Chat, große Downloads, WebSockets) und wendet ein intelligentes Timeout an, damit lange Jobs nicht abgebrochen werden – aber inaktive/unterbrochene Verbindungen nicht ewig hängen bleiben.

Timeout-Klassen (Standardeinstellungen)

Verkehrsart Wie es erkannt wird Proxy-Timeout
Reguläre HTTP-Anfrage/Antwort Alles, was unten nicht übereinstimmt 60s (STANDARD)
Chat/Streaming (SSE / NDJSON) Pfad enthält /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / application/x-ndjson 10 Min. (LANG)
Große Datei-Downloads Range Header, dateiähnlicher Pfad/Erweiterung Accept: application/octet-stream 30 Min. (HERUNTERLADEN)
WebSockets HTTP-Upgrade auf WS/WSS Kein Proxy-Leerlauf-Timeout

Der Proxy passt Timeouts auch dynamisch auf der Antwort an. Antwort (z.B. wenn Ihr Server sendet 206 or Content-Disposition: attachmenterhöht es sich auf HERUNTERLADEN Timeout, auch wenn die Anfrage ursprünglich nicht als Download klassifiziert wurde.

Was Sie in Ihrer App tun sollten

Für Chat/Streaming (SSE/NDJSON)

  • Senden Sie die richtigen Header, damit der Proxy weiß, dass es sich um einen Stream handelt:

    • SSE: Content-Type: text/event-stream
    • NDJSON: Content-Type: application/x-ndjson
  • Senden Sie mindestens alle 15–30 Sekunden ein Heartbeat. SSE kann eine Kommentarzeile senden :\n; NDJSON kann eine leere Zeile senden). Dies hält die Verbindung während langer Modellläufe warm.

Für WebSockets

  • Halten Sie Ping/Pong aktiviert (typischerweise alle 20–30 Sekunden). Der Proxy beendet die WS-Verbindung nicht; Ihre Anwendung muss sie aufrechterhalten.

Für große Downloads

  • Support HTTP Range Anfragen (Fortsetzen, partielle Übertragungen) und Rückgabe 206 Partial Content gegebenenfalls.
  • Hinzufügen Content-Disposition: attachment für herunterladbare Dateien.
  • Verwenden Sie einen spezifischen Content-Type (oder lassen Sie Clients dies anfordern mit Accept: application/octet-streamdamit der Proxy es als Download klassifiziert und ein längeres Fenster anwendet.

Schnelle Tests

SSE-Stream (curl):

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

NDJSON-Stream:

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

Fortsetzbarer Download:

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

Tücken (und Lösungen)

  • Lange Berechnung ohne Ausgabees wird als normales HTTP behandelt und kann das Limit erreichen 60s Leerlaufzeitlimit. Beheben Sie dies durch Streaming von Teilergebnissen/Heartbeats (oder wechseln Sie zum SSE/NDJSON-Endpunkt).
  • Downloads ohne Dateiendungen: set Content-Disposition: attachment und einen korrekten Content-Typeoder den Client Accept: application/octet-stream senden lassen Accept: application/octet-streamDies gewährleistet. 30 Min. Download-Fenster

Wie kann ich testen, ob der Port erreichbar ist?

Von Ihrem Server aus:

bash
ss -tlnp | grep :11307

Sie sollten Folgendes sehen:

Code
LISTEN 0 128 0.0.0.0:11307 ...

Von Ihrem lokalen Rechner:

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

Wenn der Port hängen bleibt oder die Verbindung fehlschlägt:

  • Stellen Sie sicher, dass Ihre Anwendung läuft.
  • Überprüfen Sie, ob es auf lauscht 0.0.0.0
  • Stellen Sie sicher, dass Sie einen gültigen zugewiesenen Port verwenden.

🧰 Beispiel: Portweiterleitung mit socat

Wenn Ihre Anwendung nur auf localhost:8000Sie können es weiterleiten:

bash
sudo socat TCP-LISTEN:11307,fork TCP:localhost:8000

Dies macht verfügbar localhost:8000 extern als connectXX.trooper.ai:11307.


🔁 Port-Remapping und zusätzliche Ports

Öffentliche Portbereiche werden automatisch zugewiesen und können nicht geändert werden.

Wenn Ihre Anwendung mehr Ports benötigt als die Standardzuordnung (z. B. für parallele Anwendungen oder Multi-Tenant-Bereitstellungen), kontaktieren Sie bitte unser Support-Team, nachdem Sie unsere Dokumentation sorgfältig geprüft haben. Es ist wichtig zu verstehen, dass GPU-Server nicht als öffentlich zugängliche Webserver gedacht sind und wir keine Möglichkeit bieten, zusätzliche öffentliche Ports zu öffnen.


🧯 Fehlerbehebung

  • App nicht erreichbarÜberprüfen Sie, ob es an 0.0.0.0 gebunden ist 0.0.0.0
  • Falscher PortVerwenden Sie ausschließlich die Ihrem Server zugewiesenen Ports.
  • Kein HTTPSÜberprüfen Sie die automatische Erstellung eines SSL-Proxys während der Vorlageninstallation.
  • Firewall innerhalb des ContainersDeaktivieren oder öffnen Sie interne Regeln (verwenden Sie UFW überhaupt nicht!)
  • App stürzt sofort abProtokolle und Systemressourcen überprüfen
  • UDP-VerbindungenWir unterstützen nur zustandsbehaftete TCP-Verbindungen aus Sicherheitsgründen.

🧑‍💻 Beispiel: FastAPI auf einem öffentlichen Port

Python
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=11308)

Greifen Sie darauf zu unter:

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

HTTPS benötigt? Sie sollten automatisch das Schlosssymbol bei Ihren Template-Installationen sehen, das auf folgende Adresse verweist:

Code
https://ssl-token.apps.trooper.ai/

📎 Nützliche Links


Haben Sie noch Fragen?

Wir sind für Sie da. Bitte bereiten Sie diese Informationen vor, bevor Sie uns kontaktieren:

  • Ihre Server-ID (e.g. aiXX_trooperai_000XXX)
  • Der Portnummer Sie verwenden
  • A Screenshot oder Terminalausgabe, die Ihr Problem zeigt
  • Go to: Support-Kontakte