Diese Vorlage ermöglicht Ihnen die Bereitstellung sowohl GPU-beschleunigter Docker-Container wie ComfyUI als auch Container ohne GPU-Unterstützung, wie z.B. n8n. Diese Flexibilität ermöglicht eine breite Palette von Anwendungen, von der KI-Bildgenerierung bis hin zu automatisierten Workflows, alles in einer einzigen, überschaubaren Umgebung. Konfigurieren und starten Sie Ihre gewünschten Docker-Container mühelos und nutzen Sie die Leistung und den Komfort dieser vielseitigen Vorlage.
Auch wenn Sie Docker-Konfigurationen lieber direkt verwalten, empfehlen wir die Verwendung unserer "Any Docker"-Vorlage. für die erste EinrichtungDie Konfiguration von Docker mit GPU-Unterstützung kann komplex sein, und diese Vorlage bietet eine optimierte Grundlage für den Aufbau und die Bereitstellung Ihrer Container.
Um die ordnungsgemäße Funktion beim Ausführen mehrerer Docker-Container auf Ihrem GPU-Server sicherzustellen, ist es wichtig, jedem Container einen eindeutigen Namen und ein eindeutiges Datenverzeichnis zuzuweisen. Verwenden Sie beispielsweise anstelle von „my_docker_container“ einen Namen wie „my_comfyui_container“ und legen Sie das Datenverzeichnis auf einen eindeutigen Pfad fest, wie /home/trooperai/docker_comfyui_dataDieser einfache Schritt ermöglicht den gleichzeitigen Betrieb mehrerer Docker-Container ohne Konflikte.
Dieses Beispiel erklärt Schritt für Schritt wie man startet vLLM OpenAI-kompatible API unter Verwendung von Trooper.AI any-docker template.
Es ist so geschrieben, dass es auch mit geringen Vorkenntnissen in Docker oder KI verständlich ist.
Diese Einrichtung verwendet Qwen/Qwen3-4B, welches auf allen Trooper.AI GPU Servern unterstützt und lauffähig.
Bei neueren NVIDIA-Treibern können ältere vLLM-Docker-Images beim Start mit CUDA-Fehlern abstürzen.
Um dies zu vermeiden, verwendet die any-docker-Vorlage:
Sie müssen diese Logik nicht ändern – verwenden Sie einfach die untenstehende Konfiguration.
Konfiguration und vollständigen Text finden Sie in der Screenshot-Anleitung unten zum Kopieren und Einfügen.
| Variable | Wert | Was es bedeutet |
|---|---|---|
app_args |
--model Qwen/Qwen3-4B |
Definiert, welches Modell vLLM laden soll. |
container_name |
my_vllm_api |
Name des Docker-Containers. |
docker_reprotag |
vllm/vllm-openai:nightly |
vLLM-Image mit Fixes für moderne NVIDIA-Treiber. |
docker_port |
8000 |
Interner Port, der von vLLM verwendet wird. |
gpus |
all |
Stellt alle GPUs für Docker bereit. |
host_network |
YES |
Stellt die API direkt im Host-Netzwerk bereit. |
keep_alive |
NO |
Normaler Container-Lebenszyklus (empfohlen). |
local_data_dir |
/home/trooperai/.cache/huggingface |
Modell-Cache-Verzeichnis auf dem Host. |
docker_data_dir |
/root/.cache/huggingface |
Modell-Cache-Verzeichnis innerhalb des Containers. |
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=… |
Erforderliche Korrektur für CUDA + Shared Memory. |
LD_LIBRARY_PATHDiese Einstellung ist obligatorisch auf CUDA 13 Systemen.
Ohne diese Einstellung kann vLLM aufgrund von Inkompatibilitäten mit den NVIDIA-Treibern möglicherweise nicht gestartet werden.
Bitte nicht entfernen.
Führen Sie den folgenden Befehl aus:
curl https://XXXXXXXX.apps01.trooper.ai/v1/models
Wenn Sie dies sehen Qwen/Qwen3-4B in der Antwort läuft der Server korrekt.
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?" }
]
}'
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);
Dieses Beispiel sendet 16 gleichzeitige Anfragen an die API und gibt eine einfache Durchsatzübersicht aus.
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`
);
Dieser Test ist nützlich für:
Bei allen Problemen mit vLLM wenden Sie sich bitte an den Support. Wir haben große Erfahrung im Umgang mit vLLM. Support-Kontakte
Beziehen Sie sich auf unseren Abschnitt zur Leistungsermittlung um Ihre vLLM-Installation mit unseren Leistungstests zu vergleichen, wobei der Schwerpunkt auf Multithreading-Ergebnissen liegt.
vLLM führt eine OpenAI-kompatible API, aber benötigt standardmäßig keinen echten API-Schlüssel.
Sie haben zwei Optionen:
Wenn die Authentifizierung aktiviert ist nicht erzwungen, Sie können beliebiger String als API-Schlüssel.
curl
-H "Authorization: Bearer dummy-key"
Node.js
apiKey: "dummy-key"
Dies ist ausreichend für die meisten internen, privaten oder abgesicherten Netzwerkbereitstellungen.
Sie können einen API-Schlüssel erzwingen, indem Sie ihn als Umgebungsvariable beim Starten des Containers festlegen.
In der beliebigen Docker-Vorlage (start_args):
--env OPENAI_API_KEY=your-secret-key
vLLM benötigt dann diesen Schlüssel erforderlich in jeder Anfrage.
Beispiel-curl-Anfrage:
curl https://your-endpoint/v1/models \
-H "Authorization: Bearer your-secret-key"
Beispiel Node.js:
const client = new OpenAI({
apiKey: "your-secret-key",
baseURL: "https://your-endpoint/v1",
});
OPENAI_API_KEY in der Vorlagedummy-keyOPENAI_API_KEYDies hält die Authentifizierung einfach und explizit.
Qdrant ist eine hochperformante Vektordatenbank, die Ähnlichkeitssuche, semantische Suche und Skalierung von Embeddings unterstützt.
Wenn auf einem GPU-beschleunigten Trooper.AI-Server bereitgestellt, kann Qdrant Millionen von Vektoren extrem schnell indizieren und durchsuchen – perfekt für RAG-Systeme, LLM-Speicher, Personalisierungs-Engines und Empfehlungssysteme.
Die folgende Anleitung zeigt wie man Qdrant über Docker ausführt, wie es im Dashboard aussieht und wie man es mit Node.js richtig abfragt Node.js.
Sie können das offizielle problemlos ausführen qdrant/qdrant Docker-Container mit den unten gezeigten Einstellungen.
Diese Screenshots zeigen eine typische Konfiguration, die auf Trooper.AI GPU-Servern verwendet wird, einschließlich:
Sobald gestartet, haben Sie sofortigen Zugriff auf beides. Qdrant Dashboard und die REST-API.
Das Dashboard ermöglicht Ihnen die Überprüfung von Collections, Vektoren, Payloads und Indizes.
Eine typische Dashboard-Konfiguration sieht wie folgt aus:
Von hier aus können Sie:
Unten ist eine funktionsfähig und korrigiert Node.js Beispiel unter Verwendung der Qdrant REST API.
Wichtige Korrekturen des ursprünglichen Beispiels:
/collections/<collection_name>/points/searchvector muss ein Array sein Array, nicht (a, b, c)fetch, daher ist node-fetch nicht erforderlich node-fetch// 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();
Qdrant erwartet einen JSON-Body wie diesen:
{
"vector": [0.1, 0.2, 0.3, 0.4],
"limit": 5
}
Wo:
Sie können bei Bedarf auch erweiterte Filter hinzufügen:
{
"vector": [...],
"limit": 5,
"filter": {
"must": [
{ "key": "category", "match": { "value": "news" } }
]
}
}
AUTOMATIC-SECURE-URL.trooper.ai mit Ihrem zugewiesenen sicheren EndpunktIn diesem Beispiel konfigurieren wir Any Docker mit Ihren Einstellungen für N8N und persistenter Datenspeicherung, sodass Neustarts mit intakten Daten möglich sind. Diese Konfiguration beinhaltet keine Webhooks. Wenn Sie Webhooks benötigen, gehen Sie zum dedizierten vorkonfigurierten Template: n8n
Diese Anleitung dient nur zur Erklärung. Sie können jeden Docker-Container starten, den Sie möchten.
Konfigurationsabbildungen finden Sie unten:
Diese Vorlage automatisiert die vollständige Einrichtung eines GPU-fähigen Docker-Containers, einschließlich der Installation aller erforderlichen Ubuntu-Pakete und Abhängigkeiten für die NVIDIA-GPU-Unterstützung. Dies vereinfacht den Prozess, insbesondere für Benutzer, die mit Docker-Bereitstellungen für Webserver vertraut sind, welche oft eine komplexere Konfiguration erfordern.
Das Folgende docker run Der Befehl wird automatisch vom Template generiert, um Ihren ausgewählten GPU-Container zu starten. Er enthält alle erforderlichen Einstellungen für optimale Leistung und Kompatibilität mit Ihrem Trooper.AI Server.
Dieser Befehl dient als illustratives Beispiel, um Entwicklern Einblick in die zugrunde liegenden Prozesse zu geben:
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
Verwenden Sie diesen Befehl nicht manuell, wenn Sie kein Docker-Experte sind! Vertrauen Sie stattdessen der Vorlage.
n8n ermöglicht das Ausführen komplexer Workflows direkt auf Ihrem Trooper.AI GPU-Server. Das bedeutet, Sie können Aufgaben automatisieren, die Bild-/Videoverarbeitung, Datenanalyse, LLM-Interaktionen und mehr umfassen – wobei Sie die Leistung der GPU für beschleunigte Performance nutzen.
Konkret können Sie Workflows für Folgendes ausführen:
Beachten Sie, dass Sie KI-Tools wie ComfyUI und Ollama installieren müssen, um diese in Ihre N8N-Workflows auf dem Server zu integrieren. Sie benötigen außerdem ausreichend GPU-VRAM, um alle Modelle mit Strom zu versorgen. Weisen Sie die GPUs nicht dem Docker-Container zu, der N8N ausführt.
Auf einem Trooper.AI GPU-Server ermöglicht Docker das Verpacken von Anwendungen mit ihren Abhängigkeiten in standardisierte Einheiten, sogenannte Container. Dies ist besonders leistungsstark für GPU-beschleunigte Workloads, da es Konsistenz über verschiedene Umgebungen hinweg gewährleistet und die Bereitstellung vereinfacht. Anstatt Abhängigkeiten direkt auf dem Host-Betriebssystem zu installieren, enthalten Docker-Container alles, was eine Anwendung zum Ausführen benötigt – einschließlich Bibliotheken, Systemtools, Laufzeitumgebung und Einstellungen.
Für GPU-Anwendungen ermöglicht Docker Ihnen die effiziente Nutzung der GPU-Ressourcen des Servers. Durch die Verwendung des NVIDIA Container Toolkits können Container auf die GPUs des Hosts zugreifen, was beschleunigtes Computing für Aufgaben wie Machine Learning, Deep Learning Inference und Datenanalyse ermöglicht. Diese Isolation verbessert auch die Sicherheit und das Ressourcenmanagement, sodass mehrere Anwendungen die GPU gemeinsam nutzen können, ohne sich gegenseitig zu beeinträchtigen. Das Deployment und die Skalierung von GPU-basierten Anwendungen werden mit Docker auf einem Trooper.AI Server deutlich einfacher.
Sie können problemlos mehrere Docker-Container ausführen und sich bei Bedarf über folgende Kanäle Unterstützung holen: Support-Kontakte