LLM selbst hosten: vLLM mit Caddy sicher per HTTPS betreiben

Inhalt
Um Ihr eigenes LLM sicher per HTTPS zu betreiben, stellen Sie das Modell mit vLLM bereit und setzen den Webserver Caddy als Reverse Proxy davor. vLLM ist ein schneller Open-Source-Inferenzserver mit OpenAI-kompatibler API. Er kann HTTPS bereitstellen, wenn Sie ihm Zertifikatsdateien geben, beantragt und erneuert die Zertifikate aber nicht selbst. Das übernimmt Caddy automatisch. Diese Anleitung richtet beides Schritt für Schritt in Docker ein.
Warum überhaupt selbst hosten? Vertrauenswürdige Plattformen wie Microsoft Azure bieten LLMs als Dienst an, mit allgemein anerkannten Sicherheits- und Datenschutzrichtlinien. Für manche Anwendungen führt an einem selbst gehosteten LLM aber kein Weg vorbei. Sie behalten die volle Kontrolle über Ihre Daten und können das Modell flexibel an Ihre Anforderungen anpassen. Für viele Unternehmen im DACH-Raum ist das vor allem eine Frage des Datenschutzes: Daten, die unter die DSGVO fallen, bleiben auf Ihrem eigenen Server, ob im eigenen Rechenzentrum oder bei einem Hoster Ihrer Wahl in der EU.
vLLM ist für seine sehr gute Inferenzleistung bekannt: hoher Durchsatz zu vertretbaren Kosten. Und wie wir gleich sehen, ist es auch sehr einfach einzurichten. Ein aktuelles Open-Source-Modell zu betreiben, ist nur einen einzigen Befehl entfernt.
Was viele dabei auslassen, ist die HTTPS-Verschlüsselung. Sie betreiben gern ihre eigenen Modelle, verschlüsseln aber den Übertragungsweg nicht. Ironischerweise sind ihre Daten damit weniger sicher als bei fertigen KI-Diensten. Caddy behebt das. Der Webserver ist auf einfache Bedienung ausgelegt und von Haus aus sicher konfiguriert.
Diese Anleitung zeigt, wie Sie vLLM installieren, Caddy konfigurieren und beides verbinden, um HTTPS zu aktivieren. Sie setzt voraus, dass Sie mit Befehlen im Terminal vertraut sind.
Voraussetzungen
Bevor es losgeht, brauchen Sie Folgendes:
- Einen Server mit öffentlicher IP-Adresse
- Optional: Für die beste Leistung sollte Ihr Server eine GPU haben
- Einen Domainnamen, der auf die öffentliche IP-Adresse des Servers zeigt
- Docker ist auf dem Server installiert
Das Grundprinzip: Ihr LLM per HTTPS betreiben
Um Ihr eigenes LLM per HTTPS zu betreiben, brauchen Sie drei Bausteine:
- Das Modell selbst
- Einen Inferenzserver, der die Anfragen an das Modell abwickelt. Sie könnten das Modell auch direkt aufrufen, aber ein Inferenzserver bietet eine Web-API und, wichtiger noch, Optimierungen für parallele Anfragen und schnellere Antwortzeiten.
- Einen Webserver, der die HTTPS-Verschlüsselung übernimmt und Anfragen an
den Inferenzserver weiterleitet. Sie könnten den Inferenzserver auch
direkt ansprechen. vLLM kann sogar selbst HTTPS bereitstellen
(
--ssl-certfileund--ssl-keyfile), dann müssen Sie die Zertifikate aber selbst beschaffen und alle paar Monate erneuern. Ein Reverse Proxy erledigt das für Sie, und der Inferenzserver muss nie auf einem öffentlichen Port lauschen.
In dieser Anleitung ist vLLM der Inferenzserver, der das Modell bereitstellt, und Caddy der Webserver. vLLM läuft in einem Docker-Container, Caddy als Reverse Proxy davor. Caddy übernimmt die HTTPS-Verschlüsselung und leitet Anfragen an vLLM weiter.
Was ist vLLM?
vLLM ist ein leistungsstarker Open-Source-Inferenzserver für große Sprachmodelle. Er ist auf einfache Bedienung und hohen Durchsatz ausgelegt. Im Launch-Beitrag des vLLM-Teams vom Juni 2023 erreichte vLLM bis zu 24-mal so viel Durchsatz wie Hugging Face Transformers (HF) und bis zu 3,5-mal so viel wie Text Generation Inference (TGI). Im Diagramm unten (LLaMA-13B auf einer A100-40GB-GPU) verarbeitet vLLM 154,2 Anfragen pro Minute, TGI 61,8 und HF 6,4.
Durchsatz von vLLM im Vergleich zu HF und TGI für LLaMA-13B auf einer A100-40GB
vLLM bietet folgende Vorteile:
- Integration mit gängigen Modellen von Hugging Face
- Hoher Durchsatz mit verschiedenen Decoding-Verfahren, darunter Parallel Sampling, Beam Search und mehr
- Tensor-Parallelismus für verteilte Inferenz
- Streaming von Ausgaben
- Unterstützung für NVIDIA- und AMD-GPUs
- OpenAI-kompatibler API-Server
Der letzte Punkt ist besonders interessant: vLLM bietet dieselbe API wie OpenAI. Sie können also dieselben Clientbibliotheken und Werkzeuge verwenden, die Sie auch mit den Modellen von OpenAI nutzen würden.
Was ist Caddy?
Caddy ist ein Webserver, der auf einfache Bedienung ausgelegt und von Haus aus sicher konfiguriert ist. Er erzeugt und erneuert SSL-Zertifikate automatisch und hat keine externen Abhängigkeiten. Caddy gilt außerdem als stabil und performant.
Vorbereitung: NVIDIA Container Toolkit installieren
vLLM braucht eine GPU. Weil wir mit Docker arbeiten, benötigen wir eine Docker-Runtime, die GPUs ansprechen kann, etwa das NVIDIA Container Toolkit.
Installieren Sie das NVIDIA Container Toolkit mit diesen Befehlen:
Schritt 1: vLLM in einem Docker-Container starten
Hinweis: Als wir diesen Beitrag geschrieben haben, lief vLLM nicht auf Macs mit Arm-Prozessor. Inzwischen gibt es experimentelle CPU-Unterstützung für Apple Silicon, wenn Sie vLLM aus dem Quellcode bauen. Das Docker-Setup in dieser Anleitung braucht aber eine NVIDIA-GPU. vLLM läuft sehr gut auf Consumer-GPUs wie einer NVIDIA 3080 oder 3090.
vLLM bereitzustellen ist fast zu einfach für einen eigenen Blogbeitrag: vLLM-Docker-Container starten, Modell angeben, fertig.
Welche Modelle aktuell unterstützt werden, steht hier: Modellunterstützung von vLLM
Wir legen ein eigenes Docker-Netzwerk für den vLLM-Server an, damit der Caddy-Server im selben Netzwerk laufen und mit vLLM sprechen kann.
Mit dem Flag ipc=host oder dem Flag --shm-size erlauben Sie dem
Container den Zugriff auf den Shared Memory des Hosts. vLLM nutzt PyTorch,
und PyTorch tauscht intern Daten zwischen Prozessen über Shared Memory aus,
vor allem bei tensor-paralleler Inferenz.
Dieser Befehl startet den vLLM-Server und stellt ihn auf Port 8000 bereit,
gebunden nur an 127.0.0.1. So können Sie ihn vom Server selbst aus testen,
der unverschlüsselte Port ist von außen aber nicht erreichbar. Externer
Verkehr läuft über Caddy, das vLLM über das Docker-Netzwerk erreicht. Das im
Parameter model angegebene Modell lädt der Server automatisch herunter und
stellt es bereit. Mistral-7B-OpenOrca ist ein Modell aus dem Jahr 2023;
neuere Modelle aus der Liste der unterstützten Modelle starten Sie mit
demselben Befehl. Sie können jetzt POST-Anfragen an http://localhost:8000
schicken. Testen Sie das mit einer einfachen Anfrage:
Wichtig: Ein vLLM-Server stellt ein Basismodell bereit (dazu optional LoRA-Adapter). In der Anfrage muss deshalb das Modell stehen, mit dem der Server gestartet wurde. Für mehrere Modelle starten Sie einen Container pro Modell und verteilen die Anfragen davor, wie es die FAQ von vLLM empfiehlt.
Schritt 2: Caddy als HTTPS-Reverse-Proxy einrichten
Der Inferenzserver läuft, jetzt brauchen wir einen sicheren Weg, um ihn zu erreichen. Caddy übernimmt die HTTPS-Verschlüsselung und leitet Anfragen an den Inferenzserver weiter.
Konkret betreiben wir einen Caddy-Webserver in Docker und leiten alle Anfragen, die auf Port 443 ankommen, an Port 8000 weiter. Die Verbindung auf Port 443 ist dabei mit HTTPS-Zertifikaten abgesichert. Dafür braucht es zwei Dinge: ein Caddyfile mit der Caddy-Konfiguration und den Caddy-Server als Docker-Container.
Ein Caddyfile anlegen
Das Caddyfile legt fest, wie Caddy eingehende Anfragen behandelt. Unseres leitet alle Anfragen von Port 443 an den internen vLLM-Dienst auf Port 8000 weiter. Um die HTTPS-Zertifikate kümmert sich Caddy selbst.
So sieht die Beispielkonfiguration aus:
Ersetzen Sie yourdomain.com durch Ihren tatsächlichen Domainnamen. Mit
dieser Konfiguration nimmt Caddy HTTPS-Verbindungen für yourdomain.com
entgegen und leitet die Anfragen an Port 8000 des Containers vllm-server
weiter.
Caddy starten
Jetzt starten wir den Caddy-Server als Docker-Container. Wir binden das
Caddyfile in den Container ein und geben Port 443 frei. Damit die automatisch
erzeugten SSL-Zertifikate erhalten bleiben, legen wir zwei Volumes an,
caddy_data und caddy_config, die auf die Verzeichnisse /data und
/config im Caddy-Container zeigen.
Weitere Hinweise
- Caddy beantragt und erneuert die SSL-Zertifikate für Ihre Domain automatisch über Let's Encrypt, sofern Ihre Domain korrekt auf den Server zeigt, auf dem Caddy läuft.
- Stellen Sie sicher, dass die Firewall Ihres Servers und gegebenenfalls vorhandene Security Groups Verkehr auf Port 443 zulassen.
Fazit
Sie haben jetzt ein selbst gehostetes LLM, das per HTTPS erreichbar ist: vLLM stellt das Modell in einem Docker-Container bereit, und Caddy terminiert HTTPS mit automatischen Let's-Encrypt-Zertifikaten und leitet die Anfragen über ein gemeinsames Docker-Netzwerk an vLLM weiter. Weil die API von vLLM OpenAI-kompatibel ist, können Sie bestehende OpenAI-Clients oder eine Chatoberfläche wie Open WebUI oder LibreChat auf Ihre Domain zeigen lassen. Wie Sie ein größeres Reasoning-Modell auf eigener Hardware betreiben, zeigt unsere Anleitung zu DeepSeek R1 mit SGLang (auf Englisch).
Wenn Sie für Ihr Unternehmen ein selbst gehostetes LLM oder eine eigene Chatanwendung planen, etwa damit sensible Daten in Ihrer Infrastruktur bleiben, bauen wir solche Setups im Rahmen unserer KI-Beratung für Sie auf.
Weiterlesen
- Wie man Wissen mit LLMs verbindet (auf Englisch)
- RAG-Qualität messen mit RAGAS
- GLM-4.7-Flash lokal auf einer 16-GB-GPU mit llama.cpp betreiben
- LLM-Routing: Kosten sparen mit einem starken und einem schwachen Modell
- Unsichere Prompts und Antworten mit Llama Guard 2 filtern (auf Englisch)
Sie möchten zuverlässige KI-Agenten-Systeme bauen?
Wir haben auf Basis aktueller Forschung einen ausführlichen Leitfaden (auf Englisch) erstellt, wie Sie robuste KI-Agenten-Systeme bauen, die auch im produktiven Betrieb funktionieren. Der Leitfaden behandelt:
- die 14 systematischen Fehlerquellen in Multi-Agenten-Systemen
- belegte Best Practices für das Design von Agenten
- strukturierte Kommunikationsprotokolle und Prüfmechanismen



