🌍 HTTPS-Zugriff (SSL-Proxy)

Diese Seite erklärt, wie Sie Anwendungen auf Trooper.AI GPU-Servern öffentlich zugänglich machen können. Sie können Dashboards, APIs, KI-Anwendungen, Modell-Endpunkte und Benutzeroberflächen veröffentlichen, die in Vorlagen oder Ihren eigenen Projekten ausgeführt werden.

Ihre GPU Server Blibs stellen 10 bis 40 öffentliche Ports bereit, die dem Internet zugänglich sind. Alle an diese Ports gebundenen Dienste sind über den öffentlichen Hostnamen Ihres Servers von außerhalb des internen Netzwerks aus erreichbar.

Trooper.AI bietet zwei Zugriffspfade:

1️⃣ Direkte rohe öffentliche Ports

Sofortige Konnektivität ohne Einrichtung.

2️⃣ 🔐 Sicheres HTTPS über Webproxy (Empfohlen)

Produktionsreife verschlüsselte Bereitstellung für Web-Apps und APIs. Standardmäßig auf allen Vorlagen aktiv und für eigene Apps verfügbar. Web Proxy mit SSL


🌐 Öffentliche Portzuweisung

Jeder GPU-Server beinhaltet öffentliche TCP+UDP-Ports, die automatisch Vorlagen zugewiesen werden und für benutzerdefinierte Anwendungen verfügbar sind. UDP muss über das Management-Dashboard aktiviert werden, falls erforderlich.

Direkte Roh-URL:

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

Beispiel-Dashboard-Ansicht:

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

In dieser Ansicht:

  • Öffentlicher Portbereich
  • Öffentliche Hostnamen
  • Vorlagenname
  • Schloss-Symbol = sicheres HTTPS verfügbar
  • Info = Dokumentationslink
  • Einstellungen = Konfiguration

🤖 Die Portweiterleitung ist ein automatisierter Prozess mit integrierten Prüfungen. Bitte weisen Sie Ihren KI-Agenten an, sich auf die Portkonfiguration und -bindung zu konzentrieren, da die Portweiterleitung ordnungsgemäß funktioniert. Es sind keine NAT-Probleme möglich, wenn der Maschinenstatus grün ist.


🚀 Direkter roher Portzugriff (Schnelloption)

Binden Sie Ihre Anwendung an 0.0.0.0 einen der zugewiesenen öffentlichen Ports verwenden:

Beispiel 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)

Ergebnis:

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

Dieser Ansatz ist weiterhin für schnelle Tests und interne Bequemlichkeit verfügbar. Rohe Ports sind nicht verschlüsselt; lesen Sie mehr über HTTPS.


🔐 Sicheres HTTPS mit Webproxy (Empfohlen)

Für Produktion, Authentifizierung, Benutzeroberflächen, Einbettungen, Überwachungs-Dashboards und API-Nutzung:

1️⃣ Führen Sie die App intern auf einem sicheren internen Port aus:

Code
0.0.0.0:8080

2️⃣ Installieren Sie die Webproxy-Vorlage

3️⃣ Konfigurieren:

  • interner Port → App-Port (z.B. 8080)
  • externer Webproxy-Port → bei Installation ausgewählt

4️⃣ Öffentliches HTTPS erstellt:

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

📌 Vorteile:

  • automatische SSL-Zertifikate
  • WebSocket-Unterstützung
  • nur interne Weiterleitung (sichere Pfadfindung)
  • Keine Nginx-Konfiguration erforderlich
  • Es sind keine lokalen Reverse-Proxies erforderlich.

Jede Vorlage enthält einen vorkonfigurierten, sicheren Webproxy und den zugehörigen Endpunkt. Um benutzerdefinierte Anwendungen, die auf Ihrem GPU-Server bereitgestellt werden, sicher freizugeben, verwenden Sie die Webproxy-Vorlage: Web Proxy mit SSL


⚠️ Nutzung von Port 80 / 443

Direkte Bindung an Ports 80 or 443 ist nicht automatisch für das öffentliche Internet zugänglich. Verwenden Sie die Webproxy-Vorlage, um HTTPS-Endpunkte einzurichten. Die Installation benutzerdefinierter SSL-Zertifikate wird nicht unterstützt; wir empfehlen die Verwendung von Port 8080 für Ihre Anwendung, eine häufig bevorzugte Wahl unter Entwicklern.

Mehr dazu: Web Proxy mit SSL


⏱️ Proxy-Timeout-Klassen

Die HTTPS/Webproxy-Routing-Schicht passt das Verhalten automatisch an den Verkehrstyp an. Dies stellt sicher, dass kurze interaktive Anrufe schnell bleiben, während KI-/Streaming-Jobs stabil bleiben.

Verkehrsart Erkennungsmethode Zeitüberschreitung
Normaler HTTP Standard-Anfrage/Antwort 60s
Chat / Streaming (SSE/NDJSON) /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / NDJSON-Header 10 Minuten
Große Downloads Dateibankähnlicher Typ Range Header, Anhänge, binäre Übertragung 30 Minuten
WebSockets WS/WSS Upgrade-Erkennung kein Leerlauf-Timeout

💡 Der Proxy passt sich dynamisch an, wenn sich die Antwortbedingungen ändern. Beispiel: Ausliefern einer Datei = automatische Erhöhung des Download-Timeouts.

📝 Anwendungsanforderungen

Für SSE/NDJSON-Streaming

Korrekten Content-Type senden:

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

Senden Sie alle 15–30 Sekunden ein Heartbeat-Signal.

Für WebSockets

Ping/Pong-Verbindungen aktiv halten (typischerweise 20–30 Sekunden).

Für Downloads

Support Range Anfragen und Status 206. Add Content-Disposition: attachment bei Bedarf


🧪 Testen der Stream-Modi

Beispiel SSE curl:

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

Beispiel NDJSON:

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

Beispiel für einen wiederaufnehmbaren Download:

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

🧪 Port Erreichbarkeitstests

Intern:

bash
ss -tlnp | grep :11307

Extern:

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

Rohports benötigen lediglich:

  • ausführende App
  • Bindung 0.0.0.0
  • korrekte Portnutzung

🔁 Öffentliche Ports & Vorlagen

Öffentliche Ports werden automatisch zugewiesen und im Dashboard neben den Template-Installationen angezeigt.

Für eigene Projekte verwenden Sie:

Code
8080→ Webproxy → HTTPS endpoint

🧯 Fehlerbehebung

Häufige Probleme bei der Einrichtung einer voll funktionsfähigen HTTPS-Verbindung hängen oft mit einfachen Konfigurationsdetails zusammen.

❌ Nicht erreichbar: Überprüfen Sie Port & Bindung
❌ Falscher Port: Verwenden Sie nur die zugewiesenen Ports.
❌ Kein HTTPS: Verwenden Sie die Webproxy-Vorlage
❌ Firewall innerhalb des Containers: deaktivieren oder anpassen
❌ UDP nicht aktiviert: TCP ist unser Standard, aktivieren Sie UDP über das Management-Dashboard, wenn Sie es wirklich benötigen.
❌ Lange Rechenjobs: Streamen Sie die Ausgabe oder verwenden Sie den SSE/NDJSON-Modus
❌ Versuch, eine eigene Domain zu verbinden: Wir unterstützen keine eigenen Domains.


🧑‍💻 Beispiel: FastAPI mit Webproxy

Interne Anwendung:

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

Öffentliches HTTPS:

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

Mehr dazu: Web Proxy mit SSL


📎 Nützliche Links