Unabhängige Tests Aktualisiert August 2026 387 Self-Hosting-Guides 5 VPS-Anbieter getestet

guide

So hosten Sie Jan Server selbst auf einem VPS (Komplettanleitung)

Jan Server per Docker Compose auf einem VPS bereitstellen: Assistenten ausführen, Remote- oder lokale Inferenz wählen, Keycloak zuerst absichern.

Jan Server ist die selbst hostbare Hälfte des Jan-Projekts: eine Reihe von Go-Microservices, die eine OpenAI-kompatible API bereitstellen, mit MCP-Tool-Integration, Keycloak-Authentifizierung und einem vorgeschalteten Kong-Gateway. Es ist kein einzelner Container, und das Deployment spiegelt das wider.

Die gute Nachricht: Das Projekt liefert einen Einrichtungsassistenten mit, der die Konfiguration für Sie schreibt. Die wichtigste Entscheidung dabei ist, wo die Inferenz läuft.

Bevor Sie beginnen

Die meisten günstigen VPS-Pläne haben 4 GB und reichen nicht aus. Diese hier erreichen die Grenze:

AnbieterPlanvCPU / RAM / FestplattePreisLink
ContaboCloud VPS 44 / 8 GB / 100 GB5,50 EUR/Monat zzgl. MwSt.Contabo
Hetzner CloudCX334 / 8 GB / 80 GB NVMe8,49 EUR/Monat zzgl. MwSt.Hetzner Cloud
DigitalOcean8-GB-Droplet-Tarif8 GBaktuellen Preis prüfenDigitalOcean
Vultr8-GB-Instanz-Tarif8 GBaktuellen Preis prüfenVultr
Linode8-GB-Shared-Tarif8 GBaktuellen Preis prüfenLinode

Eine ausführlichere Aufschlüsselung dieser Pläne finden Sie in unserem VPS-Vergleich.

Schritt 1: Verbinden und Abhängigkeiten installieren

ssh user@your-vps-ip
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-v2 make git
sudo systemctl enable --now docker

Bestätigen Sie, dass Sie tatsächlich Compose v2 haben, denn die Compose-Datei von Jan Server nutzt den Schlüssel include:, den v1 nicht kennt:

docker compose version

Schritt 2: Repository klonen

Anders als bei den meisten selbst gehosteten Apps schreiben Sie hier keine eigene docker-compose.yml. Die Compose-Datei des Repositorys zieht Fragmente für Infrastruktur, die API-Dienste, MCP-Tools, die Web-App und die Inferenz hinzu.

git clone https://github.com/janhq/server.git
cd server

Schritt 3: Den Einrichtungsassistenten ausführen

make quickstart

Der Assistent schreibt eine einzelne .env im Root-Verzeichnis und startet danach Compose. Er fragt drei Dinge ab:

Können Sie den Assistenten nicht interaktiv ausführen, kopieren Sie stattdessen die Vorlage und befüllen Sie sie:

cp .env.template .env
nano .env
make setup

make setup prüft Abhängigkeiten, legt Verzeichnisse an und zieht die Basis-Images, ohne etwas zu starten.

Schritt 4: Den Stack starten

make up-full

Sobald sich die Container eingependelt haben, stehen Ihnen zur Verfügung:

DienstPortZweck
API-Gateway (Kong)8000Der Einstiegspunkt für alles
LLM API8080OpenAI-kompatible Chat Completions
Response API8082Mehrstufige Tool-Orchestrierung
Media API8285Uploads und Medien-IDs
MCP Tools8091Suche, Scraping, Codeausführung
Web-Chat-UI3001Der Browser-Client
Keycloak8085Authentifizierungskonsole

Die API-Dokumentation wird unter http://your-vps-ip:8000/api/swagger/index.html bereitgestellt.

Schritt 5: Absichern, bevor Sie es exponieren

Diesen Schritt sollten Sie nicht überspringen. Zwei Standardeinstellungen sind auf einem öffentlichen Server unsicher:

  1. Die Keycloak-Konsole wird mit admin / admin ausgeliefert. Ändern Sie das sofort unter Port 8085. Keycloak stellt die Tokens aus, die Kong validiert — diese eine Zugangsdaten schützt also die gesamte API-Oberfläche.
  2. Nur Port 8000 sollte von außen erreichbar sein. Kong erzwingt die JWT- und API-Key-Prüfungen, die dahinterliegenden Dienst-Ports tun das nicht. Binden Sie den Rest an localhost oder blockieren Sie ihn per Firewall.
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable

Terminieren Sie TLS anschließend mit Caddy, Traefik oder Nginx und leiten Sie an Port 8000 weiter. Ein unauthentifizierter LLM-Endpunkt im offenen Internet wird gefunden und von jemand anderem genutzt — meist innerhalb weniger Tage.

Inferenz lokal betreiben

Haben Sie lokales vLLM gewählt, definiert das Inferenz-Fragment zwei Profile. Das GPU-Profil betreibt vllm/vllm-openai:v0.11.2 mit janhq/Jan-v1-4B als Standardmodell und reserviert ein NVIDIA-Gerät — es startet also nicht auf einem typischen VPS. Das CPU-Profil läuft ohne GPU und eignet sich durchaus zum Testen, aber die Token-Generierung auf geteilten vCPUs ist so langsam, dass Sie es keinen Nutzern vorsetzen sollten.

GPU-Kapazität zu mieten und Jan Server als entfernten Endpunkt darauf zeigen zu lassen, ist meist günstiger als ein GPU-Server, der zwischen Prompts untätig herumsteht.

Betrieb im Alltag

Auf eine neuere Version aktualisieren:

git pull
docker compose pull
make up-full

Sichern Sie das Postgres-Volume und Ihre .env im Root-Verzeichnis. Die .env enthält die vom Assistenten generierten Secrets, und stellen Sie eine Datenbank ohne sie wieder her, bleiben Sitzungen zurück, die Sie nicht entschlüsseln können.

Prüfen Sie, was ein Dienst gerade tut, mit docker compose logs -f llm-api, wobei Sie den jeweiligen Dienst einsetzen, der Sie interessiert.

Häufige Probleme

SymptomUrsache
include ist kein gültiger Compose-SchlüsselDocker Compose v1 ist installiert; Sie brauchen v2
Container werden beim Start beendetUnter 8 GB RAM wird der Stack per OOM-Killer beendet
Jeder API-Aufruf liefert 401Anfragen treffen direkt einen Dienst-Port statt Kong auf 8000
Der vLLM-Container wird nie healthyDas GPU-Profil ist auf einem Host ohne NVIDIA-Gerät aktiv

Jan Server verlangt mehr von einem VPS als eine typische selbst gehostete App, vor allem weil es sein eigenes Gateway, seinen eigenen Identity-Provider und seine eigene Datenbank mitbringt, statt vorauszusetzen, dass Sie diese schon haben. Dimensionieren Sie für 8 GB, legen Sie Kong hinter TLS, und ändern Sie vor allem anderen das Keycloak-Passwort.

Frequently asked questions

Brauche ich eine GPU, um Jan Server selbst auf einem VPS zu hosten?

Nicht, wenn Sie im Einrichtungsassistenten bei der Frage nach dem LLM-Anbieter einen entfernten OpenAI-kompatiblen Endpunkt wählen. Der VPS betreibt dann nur noch API-, Orchestrierungs- und Auth-Dienste. Die lokale vLLM-Option hat ein GPU-Profil, das eine NVIDIA-Karte erwartet, und ein CPU-Profil, das ohne GPU läuft, aber deutlich langsamer ist.

Warum akzeptiert die Keycloak-Konsole admin als Benutzername und Passwort zugleich?

Das sind die Standardzugangsdaten, mit denen das Compose-Setup ausgeliefert wird — auf einem Laptop unproblematisch, auf einem öffentlichen Server aber nicht. Ändern Sie sie, bevor Sie irgendeinen Port ins Internet öffnen, denn der Keycloak-Realm schützt jede API-Route hinter dem Kong-Gateway.

Welchen Port sollte ich hinter meinen Reverse Proxy legen?

Port 8000, das Kong-API-Gateway. Das ist der dokumentierte Einstiegspunkt, und er erzwingt die JWT- und API-Key-Prüfungen vor den einzelnen Diensten. Würden Sie die Dienst-Ports direkt veröffentlichen, könnten Aufrufer das Gateway und dessen Authentifizierung komplett umgehen.