Dowolny Docker

Ten szablon umożliwia wdrażanie zarówno kontenerów Docker z akceleracją GPU, takich jak ComfyUI, jak i kontenerów bez obsługi GPU, takich jak n8n. Ta elastyczność pozwala na szeroki zakres zastosowań, od generowania obrazów AI po zautomatyzowane przepływy pracy, wszystko w jednym, łatwym w zarządzaniu środowisku. Skonfiguruj i uruchom żądane kontenery Docker bez wysiłku, wykorzystując moc i wygodę tego wszechstronnego szablonu.

Chociaż możesz preferować bezpośrednie zarządzanie konfiguracjami Dockera, zalecamy skorzystanie z naszego szablonu „Any Docker”. do konfiguracji początkowejKonfigurowanie Dockera z obsługą GPU może być skomplikowane, a ten szablon oferuje usprawnioną podstawę do budowania i wdrażania Twoich kontenerów.

🚨 Ważne uwagi dotyczące wielu kontenerów Docker!

Aby zapewnić prawidłowe działanie podczas uruchamiania wielu kontenerów Docker na serwerze GPU, konieczne jest przypisanie każdemu kontenerowi unikalnej nazwy i katalogu danych. Na przykład, zamiast używać „my_docker_container”, określ nazwę taką jak „my_comfyui_container” i ustaw katalog danych na unikalną ścieżkę, taką jak /home/trooperai/docker_comfyui_dataTen prosty krok pozwoli na uruchomienie wielu kontenerów Docker bez konfliktów.


Przykład 1: Serwer LLM kompatybilny z OpenAI via HF

Ten przykład wyjaśnia krok po kroku jak uruchomić API kompaty kompatybilne z vLLM OpenAI używając Trooper.AI jakikolwiek-docker template.
Napisane w sposób zrozumiały nawet dla osób z niewielką wiedzą na temat Dockera lub sztucznej inteligencji.

Ta konfiguracja wykorzystuje Qwen/Qwen3-4Bktóry obsługiwane i działające na wszystkich serwerach GPU Trooper.AI.

Co robi ta konfiguracja

  • Uruchamia serwer vLLM wewnątrz Dockera
  • Wczytuje model Qwen/Qwen3-4B z Hugging Face
  • Udostępnia Interfejs HTTP kompatybilny z OpenAI
  • Działa na nowoczesne sterowniki NVIDIA (CUDA 13 / 580+)

Dlaczego ta konfiguracja jest potrzebna

Na nowszych sterownikach NVIDIA starsze obrazy Docker vLLM mogą się zawieszać z błędami CUDA podczas uruchamiania.
Aby tego uniknąć, szablon any-docker:

  • Używa dzienna kompilacja vLLM
  • Wymusza załadowanie bibliotek NVIDIA hosta przez Dockera biblioteki sterowników NVIDIA hosta

Nie musisz modyfikować tej logiki — po prostu użyj konfiguracji poniżej.

Zmienne szablonu

Zobacz tutaj zrzut ekranu, jak skonfigurować oraz pełny tekst do skopiowania i wklejenia poniżej.

Config vLLM Any Docker 1/2
Konfiguracja vLLM Any Docker 1/2

Config vLLM Any Docker 2/2
Konfiguracja vLLM Dowolny Docker 2/2

Zmienna Wartość Co to oznacza
app_args --model Qwen/Qwen3-4B Określa, który model ma załadować vLLM.
container_name my_vllm_api Nazwa kontenera Docker.
docker_reprotag vllm/vllm-openai:nightly Obraz vLLM z poprawkami dla nowoczesnych sterowników NVIDIA.
docker_port 8000 Port wewnętrzny używany przez vLLM.
gpus all Udostępnia wszystkie GPU dla Dockera.
host_network YES Udostępnia API bezpośrednio w sieci hosta.
keep_alive NO Normalny cykl życia kontenera (zalecane).
local_data_dir /home/trooperai/.cache/huggingface Katalog pamięci podręcznej modelu na hoście.
docker_data_dir /root/.cache/huggingface Katalog pamięci podręcznej modelu wewnątrz kontenera.
start_args -e LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/nvidia/lib:/usr/lib/x86_64-linux-gnu --ipc=host --env HF_TOKEN=… Wymagana poprawka dla CUDA i pamięci współdzielonej.

Ważna uwaga dotycząca LD_LIBRARY_PATH

Ta konfiguracja jest obowiązkowy na systemach CUDA 13.
Bez tego vLLM może nie uruchomić się z powodu niezgodności sterowników NVIDIA.

Nie usuwaj tego.

Jak sprawdzić, czy to działa

Example response
Przykładowa odpowiedź

Uruchom następujące polecenie:

bash
curl https://XXXXXXXX.apps01.trooper.ai/v1/models

Jeśli widzisz Qwen/Qwen3-4B w odpowiedzi, serwer działa poprawnie.

Przykład użycia z curl

bash
curl https://XXXXXXXX.apps01.trooper.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer dummy-key" \
  -d '{
    "model": "Qwen/Qwen3-4B",
    "messages": [
      { "role": "user", "content": "What is Trooper.AI?" }
    ]
  }'

Przykład użycia z Node.js

Proste żądanie

js
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "dummy-key",
  baseURL: "https://XXXXXXXX.apps01.trooper.ai/v1",
});

const result = await client.chat.completions.create({
  model: "Qwen/Qwen3-4B",
  messages: [{ role: "user", content: "What is Trooper.AI?" }],
});

console.log(result.choices[0].message.content);

Test obciążeniowy współbieżny Node.js (16 równoległych żądań)

Ten przykład wysyła 16 równoczesnych żądań do API i wyświetla proste podsumowanie przepustowości.

js
import OpenAI from "openai";
import crypto from "crypto";

const client = new OpenAI({
  apiKey: "dummy-key",
  baseURL: "https://XXXXXXXX.apps01.trooper.ai/v1",
});

const CONCURRENCY = 16;

function randomPrompt() {
  return `Explain this random concept in one sentence: ${crypto.randomUUID()}`;
}

const startTime = Date.now();

const requests = Array.from({ length: CONCURRENCY }, () =>
  client.chat.completions.create({
    model: "Qwen/Qwen3-4B",
    messages: [{ role: "user", content: randomPrompt() }],
  })
);

const responses = await Promise.all(requests);

const endTime = Date.now();
const durationSeconds = (endTime - startTime) / 1000;

let totalTokens = 0;
for (const r of responses) {
  totalTokens += r.usage.total_tokens;
}

const tokensPerSecond = (totalTokens / durationSeconds).toFixed(2);

console.log(
  `${tokensPerSecond} token/s of total ${totalTokens} tokens in ${durationSeconds.toFixed(
    2
  )} seconds on ${CONCURRENCY} concurrent connections`
);

Ten test jest przydatny do:

  • weryfikacja współbieżności
  • szacowanie przepustowości
  • szybkie testy poprawności działania

Jak uzyskać wsparcie dla serwera GPU vLLM?

W przypadku jakichkolwiek problemów z vLLM, skontaktuj się z naszym wsparciem, mamy duże doświadczenie w korzystaniu z vLLM: Kontakty z wsparciem

Zapoznaj się z naszą Sekcja z wynikami testów aby porównać instalację vLLM z naszymi testami wydajności, koncentrując się na wynikach dotyczących współbieżności.

Dodatkowe informacje o autoryzacji vLLM: jak ustawić i używać klucza API

vLLM uruchamia API kompatybilne z OpenAI, ale domyślnie nie wymaga prawdziwego klucza API.

Masz dwie opcje:

Opcja 1: Użyj klucza zastępczego (domyślnie, najłatwiejsze)

Jeśli uwierzytelnianie jest nie wymuszono, możesz użyć dowolny ciąg znaków jako klucz API.

curl

bash
-H "Authorization: Bearer dummy-key"

Node.js

js
apiKey: "dummy-key"

Jest to wystarczające dla większości wdrożeń wewnętrznych, prywatnych lub zabezpieczonych sieci.

Opcja 2: Ustaw prawdziwy klucz API (zalecane dla publicznych punktów końcowych)

Możesz wymusić użycie klucza API, ustawiając go jako zmienną środowiskową podczas uruchamiania kontenera.

W szablonie any-docker (start_args):

tekst
--env OPENAI_API_KEY=your-secret-key

vLLM wtedy wymagany jest ten klucz w każdym żądaniu.

Przykładowe żądanie curl:

bash
curl https://your-endpoint/v1/models \
  -H "Authorization: Bearer your-secret-key"

Przykład Node.js:

js
const client = new OpenAI({
  apiKey: "your-secret-key",
  baseURL: "https://your-endpoint/v1",
});

Jak obracać lub zmieniać klucz

  • Aktualizuj OPENAI_API_KEY w szablonie
  • Kliknij na „zaktualizuj szablon”
  • Stare klucze natychmiast przestają działać

Podsumowanie

  • Klucz nie jest wymagany → użyj dummy-key
  • Punkt końcowy publiczny → ustaw OPENAI_API_KEY
  • Klucz to nigdy nie generowany automatycznieto definiujesz Ty

To utrzymuje uwierzytelnianie proste i jednoznaczne.


Przykład 2: Uruchamianie Qdrant na serwerze GPU

Qdrant to wysokowydajna baza danych wektorowa, która obsługuje wyszukiwanie podobieństwa, wyszukiwanie semantyczne i osadzanie w dużej skali.
Wdrożony na serwerze Trooper.AI z GPU, Qdrant może indeksować i wyszukiwać miliony wektorów niezwykle szybko — idealnie nadaje się do systemów RAG, pamięci LLM, silników personalizacji i systemów rekomendacji.

Poniższy przewodnik pokazuje jak uruchomić Qdrant przez Docker, jak wygląda w panelu sterowania, i jak prawidłowo go zapytywać używając Node.js.

Uruchamianie kontenera Docker Qdrant

Możesz łatwo uruchomić oficjalny qdrant/qdrant Kontener Dockera z ustawieniami przedstawionymi poniżej.
Te zrzuty ekranu pokazują typową konfigurację używaną na serwerach GPU Trooper.AI, w tym:

  • Udostępniony port REST API
  • Dostęp do panelu sterowania
  • Trwałość danych
  • Opcjonalne przyspieszenie GPU (jeśli włączone w Twoim środowisku)

qdrant config settings for docker 1/2
ustawienia konfiguracji qdrant dla dockera 1/2

qdrant config settings for docker 2/2
ustawienia konfiguracji qdrant dla dockera 2/2

Po uruchomieniu będziesz miał natychmiastowy dostęp zarówno do Panel Qdrant oraz interfejs API REST API.

Podgląd panelu Qdrant

Panel umożliwia przeglądanie kolekcji, wektorów, ładunków i indeksów.
Typowa konfiguracja panelu wygląda następująco:

Quadrant dashboard
Panel Qdrant

Stąd możesz:

  • Utwórz kolekcje
  • Dodaj wektory
  • Uruchom przykładowe wyszukiwania
  • Sprawdź metadane
  • Monitorowanie wydajności

Pytania do Qdrant z Node.js

Poniżej znajduje się działające i poprawione Przykład Node.js wykorzystujący API REST Qdrant.

Ważne poprawki w stosunku do oryginalnego przykładu:

  • Qdrant wymaga wywołania punktu końcowego takiego jak:
    /collections/<collection_name>/points/search
  • vector musi być tablica, nie (a, b, c)
  • Nowoczesny Node.js posiada natywne fetchwięc nie ma potrzeby node-fetch

PRZYKŁAD NODEJS

javascript
// Qdrant Vector Search Example – fully compatible with Qdrant 1.x and 2.x

async function queryQdrant() {
  // Replace "my_collection" with your actual collection name
  const url = 'https://AUTOMATIC-SECURE-URL.trooper.ai/collections/my_collection/points/search';

  const payload = {
    vector: [0.1, 0.2, 0.3, 0.4],  // Must be an array
    limit: 5
  };

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(payload)
    });

    if (!response.ok) {
      throw new Error(`Qdrant request failed with status: ${response.status}`);
    }

    const data = await response.json();
    console.log('Qdrant Response:', data);
    return data;

  } catch (error) {
    console.error('Error querying Qdrant:', error);
    return null;
  }
}

queryQdrant();

Poprawny ładunek zapytania do Qdrant

Qdrant oczekuje treści JSON w następującym formacie:

json
{
  "vector": [0.1, 0.2, 0.3, 0.4],
  "limit": 5
}

Gdzie:

  • wektor → twoje osadzenie
  • limit → maksymalna liczba zwróconych wyników

Możesz również dodać zaawansowane filtry, jeśli zajdzie potrzeba:

json
{
  "vector": [...],
  "limit": 5,
  "filter": {
    "must": [
      { "key": "category", "match": { "value": "news" } }
    ]
  }
}

Uwagi dla użytkowników Trooper.AI

  • Zastąp AUTOMATIC-SECURE-URL.trooper.ai z Twoim przydzielonym bezpiecznym punktem końcowym
  • Upewnij się, że Twoja kolekcja istnieje przed wysłaniem zapytania.

Przykład: Uruchamianie N8N z Any Docker

W tym przykładzie skonfigurujmy Any Docker z Twoją konfiguracją dla N8N i trwałą pamięcią masową, aby restarty były możliwe z zachowaniem danych. Ta konfiguracja nie obejmuje webhooków. Jeśli potrzebujesz webhooków, przejdź do dedykowanego, wstępnie skonfigurowanego szablonu: n8n

Ten przewodnik służy wyłącznie do wyjaśnienia. Możesz uruchomić dowolny kontener dockerowy, który chcesz.

Zobacz zrzuty ekranu konfiguracji poniżej:

N8N any docker setup 1/4
Konfiguracja dowolnego dockera N8N 1/4

N8N any docker setup 2/4
Konfiguracja dowolnego docker'a N8N 2/4

N8N any docker setup 3/4
Konfiguracja docker dla N8N 3/4

N8N any docker setup 4/4 - result
Konfiguracja docker dla N8N 4/4 - wynik

Polecenie Docker ‘Pod maską’

Szablon ten automatyzuje kompletne ustawienie kontenera Docker z obsługą GPU, w tym instalację wszystkich niezbędnych pakietów Ubuntu i zależności dla obsługi NVIDIA GPU. Upraszcza to proces, szczególnie dla użytkowników przyzwyczajonych do wdrożonych Docker dla serwerów internetowych, które często wymagają bardziej złożonej konfiguracji.

Poniższy docker run polecenie jest generowane automatycznie przez szablon w celu uruchomienia wybranego kontenera GPU. Zawiera ono wszystkie niezbędne ustawienia dla optymalnej wydajności i kompatybilności z serwerem Trooper.AI.

Polecenie to służy jako przykład ilustracyjny, aby zapewnić programistom wgląd w podstawowe procesy:

bash
docker run -d \
  --name ${CONTAINER_NAME} \
  --restart always \
  --gpus ${GPUS} \
  --add-host=host.docker.internal:host-gateway \
  -p ${PUBLIC_PORT}:${DOCKER_PORT} \
  -v ${LOCAL_DATA_DIR}:/home/node/.n8n \
  -e N8N_SECURE_COOKIE=false \
  -e N8N_RUNNERS_ENABLED=true \
  -e N8N_HOST=${N8N_HOST} \
  -e WEBHOOK_URL=${WEBHOOK_URL} \
  docker.n8n.io/n8nio/n8n \
  tail -f /dev/null

Nie używaj tego polecenia ręcznie, jeśli nie jesteś ekspertem od Dockera! Po prostu zaufaj szablonowi.

Co umożliwia N8N na prywatnym serwerze GPU?

n8n odblokowuje potencjał do uruchamiania złożonych przepływów pracy bezpośrednio na serwerze GPU Trooper.AI. Oznacza to, że możesz zautomatyzować zadania związane z przetwarzaniem obrazów/wideo, analizą danych, interakcjami LLM i innymi – wykorzystując moc GPU dla przyspieszonej wydajności.

Konkretnie możesz uruchamiać przepływ pracy dla:

  • Edycja obrazu/wideo: Automatyzuj zmianę rozmiaru, dodawanie znaków wodnych, wykrywanie obiektów i inne zadania wizualne.
  • Przetwarzanie danych: Wyodrębnij, przekształć i załaduj dane z różnych źródeł.
  • Integracja LLM: Połącz się z dużymi modelami językowymi i współpracuj z nimi w celu wykonywania zadań takich jak generowanie tekstu, tłumaczenie i analiza sentymentu.
  • Automatyzacja sieci: Zautomatyzuj zadania na różnych stronach internetowych i interfejsach API.
  • Niestandardowe przepływy pracy: Utwórz i wdroż dowolny zautomatyzowany proces dostosowany do Twoich potrzeb.

Pamiętaj, że będziesz musiał zainstalować narzędzia AI, takie jak ComfyUI i Ollama, aby zintegrować je z Twoimi przepływami pracy N8N na serwerze lokalnie. Dodatkowo potrzebujesz wystarczającej ilości pamięci GPU VRAM, aby obsługiwać wszystkie modele. Nie przydzielaj tych GPU do dockera działającego z N8N.

Co to jest Docker w kontekście serwera GPU?

Na serwerze GPU Trooper.AI Docker pozwala na pakowanie aplikacji z ich zależnościami w standaryzowane jednostki zwane kontenerami. Jest to szczególnie potężne dla obciążeń przyspieszonych przez GPU, ponieważ zapewnia spójność w różnych środowiskach i upraszcza wdrożenia. Zamiast instalować zależności bezpośrednio na systemie operacyjnym hosta, kontenery Docker zawierają wszystko, co jest potrzebne do uruchomienia aplikacji - w tym biblioteki, narzędzia systemowe, środowisko wykonawcze i ustawienia.

Dla aplikacji GPU Docker umożliwia efektywne wykorzystanie zasobów GPU serwera. Dzięki wykorzystaniu NVIDIA Container Toolkit kontenery mogą uzyskiwać dostęp do GPU hosta, umożliwiając przyspieszone obliczenia dla zadań takich jak uczenie maszynowe, wnioskowanie głębokiego uczenia się i analityka danych. Ta izolacja również poprawia bezpieczeństwo i zarządzanie zasobami, umożliwiając wielu aplikacjom współdzielenie GPU bez wzajemnego zakłócania. Wdrożenie i skalowanie aplikacji opartych na GPU staje się znacznie łatwiejsze dzięki Dockerowi na serwerze Trooper.AI.

Więcej Dockera do uruchomienia

Możesz łatwo uruchomić wiele kontenerów Docker i poprosić o pomoc poprzez: Kontakty z wsparciem