🌍 HTTPS Adgang (SSL Proxy)

Denne side forklarer, hvordan du gør applikationer på Trooper.AI GPU-servere offentligt tilgængelige. Du kan publicere dashboards, API'er, AI-apps, modelendepunkter og brugergrænseflader, der kører i skabeloner eller dine egne projekter.

Dine GPU Server Blibs leverer 10 til 40 offentlige porte eksponeret til internettet. Enhver service bundet til disse porte vil være tilgængelig udefra det interne netværk ved hjælp af din servers offentlige værtsnavn.

Trooper.AI tilbyder to adgangsveje:

1️⃣ Direkte rå offentlige porte

Øjeblikkelig forbindelse uden opsætning.

2️⃣ 🔐 Sikker HTTPS via Webproxy (Anbefales)

Sikker krypteret eksponering for webapps og API'er. Aktiveret på alle templates som standard og til egne apps kan du bruge dette: Web Proxy med SSL


🌐 Offentlig portallokering

Hver GPU-server inkluderer offentlige TCP+UDP-porte, der automatisk tildeles skabeloner og er tilgængelige for brugerdefinerede apps. UDP skal aktiveres via administrationsdashboardet, hvis det er nødvendigt.

Rå direkte URL:

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

Eksempel på dashboard-visning:

Public Ports on Template Installs
Offentlige porte på skabeloninstallationer

I dette view:

  • Offentlige portområder
  • Offentlige værtsnavne
  • Skabelonsnavne
  • Låseikon = sikker HTTPS tilgængelig
  • Info = dokumentationslink
  • Indstillinger = konfiguration

🤖 Portvideresendelse er en automatiseret proces med indbyggede kontroller. Bed din AI-agent om at fokusere på portkonfiguration og binding, da portvideresendelse fungerer korrekt. Der kan ikke opstå NAT-problemer, hvis din maskines status er grøn.


🚀 Direkte rå portadgang (hurtig mulighed)

Bind din applikation til 0.0.0.0 ved hjælp af en af de tildelte offentlige porte:

Eksempel Flask:

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

Eksempel Gradio:

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

Resultat:

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

Denne tilgang er stadig tilgængelig for hurtig test og intern bekvemmelighed. Rå porte er ikke krypterede; læs mere om HTTPS.


🔐 Sikker HTTPS med Webproxy (Anbefalet)

Til produktion, autentificering, brugergrænseflader, indlejringer, overvågningsdashboards og API-brug:

1️⃣ Kør appen internt på en sikker intern port:

Kode
0.0.0.0:8080

2️⃣ Installer Webproxy-skabelonen

❸ Konfigurer:

  • intern port → app port (f.eks. 8080)
  • ekstern Webproxy-port → valgt ved installation

4️⃣ Offentlig HTTPS oprettet:

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

📌 Fordele:

  • automatiske SSL-certifikater
  • WebSocket-understøttelse
  • kun intern routing (sikker rute)
  • Opsætning af nginx ikke nødvendig
  • Ingen lokale reverse proxies påkrævet

Hver skabelon inkluderer en forudkonfigureret, sikker Webproxy og tilhørende endpoint. For at sikkert eksponere brugerdefinerede applikationer, der er implementeret på din GPU-server, skal du bruge Webproxy-skabelonen: Web Proxy med SSL


⚠️ Brug af port 80 / 443

Direkte binding til porte 80 or 443 eksponeres ikke automatisk til det offentlige internet. Brug Webproxy-skabelonen til at oprette HTTPS-slutpunkter. Installation af brugerdefinerede SSL-certifikater understøttes ikke; vi anbefaler at bruge port 8080 til din applikation, hvilket er et almindeligt foretrukket valg blandt udviklere.

Læs mere: Web Proxy med SSL


⏱️ Proxy Timeout Klasser

Det automatiske routinglag for HTTPS/Webproxy justerer adfærden baseret på trafiktypen. Dette sikrer, at korte interaktive kald forbliver hurtige, mens AI/streaming-opgaver forbliver stabile.

Trafiktype Detektionsmetode Timeout
Almindelig HTTP standard forespørgsel/svar 60s
Chat / Streaming (SSE/NDJSON) /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / NDJSON-headere 10 minutter
Store downloads fil-lignende type Range headers, vedhæftninger, binær overførsel 30 minutter
WebSockets WS/WSS opgraderingsdetektion ingen inaktiv timeout

💡 Proxyen justeres dynamisk, hvis responsbetingelserne ændres. Eksempel: Servering af en fil = automatisk opgradering til download-timeout.

📝 Applikationskrav

For SSE/NDJSON-streaming

Send korrekt indholdstype:

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

Inkluder heartbeat output hvert 15–30 sekund.

For WebSockets

Hold ping/pong aktiv (typisk 20-30 sekunder).

Til downloads

Support Range anmodninger og status 206. Add Content-Disposition: attachment når det er nødvendigt


🧪 Test af streamingtilstande

Eksempel på SSE curl:

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

Eksempel NDJSON:

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

Eksempel på genoptagelig download:

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

🧪 Portnåelighedstests

Intern:

bash
ss -tlnp | grep :11307

Udefra:

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

Rå porte kræver kun:

  • kørende app
  • binding 0.0.0.0
  • korrekt portbrug

🔁 Offentlige porte & skabeloner

Offentlige porte tildeles automatisk og vises i dashboardet ved siden af skabeloninstallationer.

Til egne projekter, brug:

Kode
8080→ Webproxy → HTTPS endpoint

🧯 Fejlfinding

Almindelige problemer, der opstår ved etablering af en fuldt funktionel HTTPS-forbindelse, skyldes ofte simple konfigurationsdetaljer.

❌ Ikke tilgængelig: tjek port og binding
❌ Forkert port: brug kun tildelte porte
❌ Ingen HTTPS: brug Webproxy-skabelonen
❌ Firewall inde i container: deaktiver eller juster
❌ UDP ikke aktiveret: TCP er vores standard, aktiver UDP via administrationsdashboardet, hvis du virkelig har brug for UDP
❌ Lange beregningsopgaver: stream output eller brug SSE/NDJSON mode
❌ Forsøg på at tilslutte eget domæne: Vi understøtter ikke egne domæner.


🧑‍💻 Eksempel: FastAPI med Webproxy

Intern app:

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

Offentlig HTTPS:

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

Læs mere: Web Proxy med SSL


📎 Nyttige links