🌍 Dostęp HTTPS (Proxy SSL)

Ta strona wyjaśnia, jak udostępnić aplikacje na serwerach GPU Trooper.AI. Możesz publikować pulpity nawigacyjne, API, aplikacje AI, punkty końcowe modeli oraz interfejsy użytkownika działające w szablonach lub własnych projektach.

Twoje serwery Blib GPU oferują od 10 do 40 publicznych portów otwartych na internet. Wszystkie usługi powiązane z tymi portami będą dostępne z zewnątrz sieci wewnętrznej za pomocą publicznej nazwy hosta Twojego serwera.

Trooper.AI zapewnia dwie ścieżki dostępu:

1️⃣ Bezpośrednie surowe porty publiczne

Natychmiastowe połączenie bez konfiguracji.

2️⃣ 🔐 Bezpieczny HTTPS przez Webproxy (Zalecane)

Szyfrowane udostępnianie aplikacji internetowe i API w standardzie produkcyjne. Działa domyślnie dla wszystkich szablonów i dla własnych aplikacji. Proxy WWW z SSL


🌐 Przydział Portów Publicznych

Każdy serwer GPU zawiera publiczne porty TCP+UDP przypisane automatycznie do szablonów i dostępne dla niestandardowych aplikacji. UDP musi zostać aktywowany za pośrednictwem panelu zarządzania, jeśli jest to rzeczywiście wymagane.

Bezpośredni adres URL:

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

Przykładowy widok panelu sterowania:

Public Ports on Template Installs
Publiczne porty na zainstalowanych szablonach

W tym widoku:

  • Zakresy portów publicznych
  • Publiczne nazwy hostów
  • Nazwy szablonów
  • Ikona kłódki = dostępne bezpieczne HTTPS
  • Info = link do dokumentacji
  • Ustawienia = konfiguracja

🤖 Przekierowanie portów jest zautomatyzowanym procesem z wbudowanymi kontrolami. Zleć swojemu Agentowi AI skupienie się na konfiguracji i powiązaniu portów, ponieważ przekierowanie portów działa poprawnie. Problemy z NAT są niemożliwe, jeśli status maszyny jest zielony.


🚀 Bezpośredni Dostęp do Surowego Portu (Szybka Opcja)

Powiąż swoją aplikację z 0.0.0.0 używając dowolnego z przypisanych portów publicznych:

Przykład Flask:

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

Przykład Gradio:

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

Wynik:

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

To podejście pozostaje dostępne do szybkiego testowania i wygody wewnętrznej. Surowe porty nie są szyfrowane; dowiedz się więcej o HTTPS.


🔐 Bezpieczny HTTPS z Webproxy (Zalecane)

W przypadku produkcji, uwierzytelniania, interfejsów użytkownika, osadzania, monitorowania paneli kontrolnych i użytkowania API:

1️⃣ Uruchom aplikację wewnętrznie na bezpiecznym, wewnętrznym porcie:

Kod
0.0.0.0:8080

2️⃣ Zainstaluj szablon Webproxy

3️⃣ Skonfiguruj:

  • port wewnętrzny → port aplikacji (np. 8080)
  • zewnętrzny port Webproxy → wybrany podczas instalacji

4️⃣ Publiczny HTTPS utworzony:

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

📌 Zalety:

  • automatyczne certyfikaty SSL
  • Obsługa WebSocket
  • tylko routingu wewnętrznego (bezpieczne przekierowanie)
  • brak konieczności konfiguracji nginx
  • brak potrzeby konfigurowania lokalnych serwerów proxy

Każdy szablon zawiera wstępnie skonfigurowany, bezpieczny Webproxy i powiązany punkt końcowy. Aby bezpiecznie udostępnić niestandardowe aplikacje wdrożone na Twoim serwerze GPU, skorzystaj z szablonu Webproxy: Proxy WWW z SSL


⚠️ Użycie portów 80 / 443

Bezpośrednie przypisywanie do portów 80 or 443 nie jest automatycznie wystawiany do publicznego internetu. Wykorzystaj szablon Webproxy, aby ustanowić punkty końcowe HTTPS. Instalacja niestandardowych certyfikatów SSL nie jest obsługiwana; zalecamy użycie portu 8080 dla Twojej aplikacji, co jest powszechnie preferowanym wyborem wśród programistów.

Czytaj więcej: Proxy WWW z SSL


⏱️ Klasy limitu czasu proxy

Warstwa routingu HTTPS/Webproxy automatycznie dostosowuje zachowanie w oparciu o typ ruchu. Zapewnia to szybkie działanie krótkich, interaktywnych wywołań, a jednocześnie stabilność zadań AI/strumieniowania.

Typ ruchu Metoda wykrywania Limit czasu
HTTP standardowy standardowa żądanie/odpowiedź 60s
Czat / Streaming (SSE/NDJSON) /api/chat, /chat/completions, /api/generate, /generate, /stream, /events, or Accept: text/event-stream / nagłówki NDJSON 10 minut
Pobieranie dużych plików typ pliku, Range nagłówki, załączniki, transfer binarny 30 minut
WebSocket Wykrywanie aktualizacji WS/WSS brak limitu czasu bezczynności

💡 Proxy dynamicznie dostosowuje się, jeśli zmieniają się warunki odpowiedzi. Przykład: Obsługa pliku = automatyczne zwiększenie limitu czasu pobierania.

📝 Wymagania aplikacji

Dla strumieniowania SSE/NDJSON

Wyślij poprawny typ zawartości:

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

Wysyłaj sygnał pulsu co 15–30 sekund.

Dla WebSocketów

Utrzymuj aktywność ping/pong (typowe 20–30 sekund).

Dla pobierania

Wsparcie Range żądania i status 206. Add Content-Disposition: attachment w razie potrzeby


🧪 Testowanie trybów strumieniowania

Przykład zapytania cURL dla SSE:

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

Przykład NDJSON:

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

Przykład wznowialnego pobierania:

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

🧪 Testy dostępności portów

Wewnętrznie:

bash
ss -tlnp | grep :11307

Zewnętrznie:

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

Surowe porty wymagają jedynie:

  • uruchomiona aplikacja
  • powiązanie 0.0.0.0
  • prawidłowe użycie portu

🔁 Porty Publiczne & Szablony

Porty publiczne są przypisywane automatycznie i wyświetlane w panelu obok zainstalowanych szablonów.

W przypadku własnych projektów użyj:

Kod
8080→ Webproxy → HTTPS endpoint

🧯 Rozwiązywanie problemów

Częste problemy podczas nawiązywania w pełni funkcjonalnego połączenia HTTPS często wynikają z prostych szczegółów konfiguracji.

❌ Niedostępne: sprawdź port i powiązanie
❌ Zły port: użyj tylko przypisanych portów
❌ Brak HTTPS: użyj szablonu Webproxy
❌ Zapora ogniowa wewnątrz kontenera: wyłącz lub dostosuj
❌ UDP nieaktywowane: TCP jest naszym standardem, aktywuj UDP przez panel zarządzania, jeśli naprawdę go potrzebujesz.
❌ Długie zadania obliczeniowe: przesył strumieniowy danych wyjściowych lub użycie trybu SSE/NDJSON
❌ Próba połączenia z własną domeną: Nie obsługujemy własnych domen.


🧑‍💻 Przykład: FastAPI z Webproxy

Aplikacja wewnętrzna:

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

Publiczny HTTPS:

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

Czytaj więcej: Proxy WWW z SSL


Przydatne linki