Denne FAQ forklarer, hvordan du gør dine webapplikationer (f.eks. Gradio, FastAPI, Streamlit, Flask) offentligt tilgængelige på Trooper.AI GPU-servere via HTTP(S). Dette er især nyttigt for dashboards, API'er og brugergrænseflader, der kører inde i din Blib eller skabelon.
Vi anbefaler at bruge den inkluderede SSL-proxy i alle skabeloner for nemt at sikre dine apps. Læs mere nedenfor!
Hver server på Trooper.AI leveres med minimum 10 offentlige porte pr. GPUDet betyder:
Alle offentlige porte er sikret af vores SSL-proxy. De fleste brugere behøver kun 2–4 porte (f.eks. en til deres app, en til overvågning, en til WebSocket/API-adgang).
Du kan tjekke dine tilgængelige porte i dashboardet eller anmode om en fuld liste fra support.
På dette skærmbillede: Fra top til bund og fra venstre til højre kan du se:
0.0.0.0, ikke 127.0.0.1 og en af dine tildelte offentlige porte som 11307Eksempel (Python/Flask):
flask run --host=0.0.0.0 --port=11307
Eksempel (Gradio):
app.launch(server_name="0.0.0.0", server_port=11307)
Eksempel (start en Gradio-app fra shell):
python your_app.py --server-name 0.0.0.0 --server-port 11307
Eksempel (Docker):
docker run -p 11307:8080 your-ai-webapp-image
11307Din app vil være tilgængelig på:
http://connectXX.trooper.ai:11307
No. Direkte adgang til port 80 (HTTP) og 443 (HTTPS) er ikke tilgængelig af sikkerhedsmæssige årsager.
Hvis du har brug for et sikkert HTTPS-endepunkt (f.eks. til frontend-indlejring eller OAuth-omdirigering):
👉 Du får automatisk SSL til enhver skabelon eller kontakt support for at få hjælp
Dette vil mappe din offentlige port (f.eks. 11307til en sikker HTTPS-slutpunkt som:
https://ssl-access-id.app.trooper.ai/
Denne SSL-proxy er inkluderet i alle GPU-planer og aktiveres automatisk ved hver skabeloninstallation. Data dirigeres sikkert på vores interne netværk, hvilket giver øget sikkerhed og sikrer, at certifikater er specifikke for dit GPU Server Blib's netværksmiljø.
Du har fire hovedmuligheder:
Brug vores administrerede HTTPS-proxy (anbefales, se næste kapitel) Automatisk implementeret ved skabeloninstallation. Trafik dirigeres fuldt ud i det interne netværk direkte til din GPU Server Blib!
Kør din egen reverse proxy (f.eks. nginx med Let's Encrypt) på din offentlige frontend (web)server
Bemærk: Du vil stadig bruge en ikke-standard port som 11306 på GPU-serveren. Sørg for at understøtte WebSockets, hvis det er nødvendigt.
Brug en tunneleringstjeneste som SSH-tunnel, ngrok eller Cloudflare Tunnel Dette giver dig et offentligt HTTPS-domæne hurtigt, men gør det vanskeligt at vedligeholde. Brug kun under hurtig udvikling.
Kommuniker via API (industristandard) Kommuniker kun via API fra din offentlige server med din GPU-server. Dette kan kombineres med (1) en HTTPS-proxy eller (3) en SSH-tunnel. Dette er industristandarden og anvendes af produktive tjenester.
Vores SSL-proxy serverer altid HTTPS on https://<ssl-id>.app.trooper.ai og videresender trafik over vores interne netværk til din apps port. auto-detekterer hvad du laver (almindelig HTTP, streaming/chat, store downloads, WebSockets) og anvender en smart timeout, så lange jobs ikke afbrydes – men inaktive/brudte forbindelser hænger ikke fast for evigt.
| Trafiktype | Hvordan det opdages | Proxy timeout |
|---|---|---|
| Almindelig HTTP-anmodning/svar | Alt der ikke matcher nedenfor | 60s (STANDARD) |
| Chat/Streaming (SSE / NDJSON) | Stien indeholder /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / application/x-ndjson |
10 min (LANG) |
| Store filneddownloadninger | Range header, fil-lignende sti/udvidelse Accept: application/octet-stream |
30 min (DOWNLOAD) |
| WebSockets | HTTP-opgradering til WS/WSS | Ingen proxy inaktivitetstimeout |
Proxyen opgraderer også timeouts dynamisk på svar (f.eks. hvis din server sender
206orContent-Disposition: attachment, øges den til DOWNLOAD selv hvis anmodningen ikke oprindeligt blev klassificeret som en download).
For chat/streaming (SSE/NDJSON)
Send de korrekte headere, så proxyen ved, at det er en stream:
Content-Type: text/event-streamContent-Type: application/x-ndjsonSend et heartbeat mindst hvert 15–30 sekund (SSE kan sende en kommentar linje :\n; NDJSON kan sende en tom linje). Dette holder forbindelsen varm under lange modelkørsler.
For WebSockets
For store downloads
206 Partial Content hvis relevantContent-Disposition: attachment til downloadbare filer.Content-Type (eller lad klienter anmode om med Accept: application/octet-streamså klassificerer proxyen det som en download og anvender det længere vindue.SSE stream (curl):
curl -N -H "Accept: text/event-stream" https://<ssl-id>.app.trooper.ai/api/stream
NDJSON-stream:
curl -N -H "Accept: application/x-ndjson" https://<ssl-id>.app.trooper.ai/generate
Genoptagelig download:
curl -O -H "Range: bytes=0-" https://<ssl-id>.app.trooper.ai/files/big-model.bin
Content-Disposition: attachment and a proper Content-Type, or have the client send Accept: application/octet-stream. This ensures the 30 min download window.From inside your server:
ss -tlnp | grep :11307
You should see:
LISTEN 0 128 0.0.0.0:11307 ...
From your local machine:
curl http://connectXX.trooper.ai:11307
If the port hangs or times out:
0.0.0.0socatIf your app only runs on localhost:8000, you can forward it:
sudo socat TCP-LISTEN:11307,fork TCP:localhost:8000
This exposes localhost:8000 externally as connectXX.trooper.ai:11307.
Public port ranges are automatically assigned and cannot be modified.
If your application requires more ports than the standard allocation (such as for parallel applications or multi-tenant deployments), please contact our support team after reviewing our documentation thoroughly. It is important to understand that GPU servers are not intended to function as public-facing web servers, and we do not offer the ability to open additional public ports.
0.0.0.0import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=11308)
Access it at:
http://connectXX.trooper.ai:11308
Need HTTPS? You should automatically see the lock icon on your template installs pointing to:
https://ssl-token.apps.trooper.ai/
We’re here to help. Please prepare these information before contacting us:
aiXX_trooperai_000XXX)