Jan Server is a multi-service platform rather than a single application, and its requirements reflect that. The projectโs README sets the floor at 8 GB RAM minimum, 12 GB recommended, which rules out the 4 GB plans that dominate budget VPS comparisons.
What follows breaks that figure down and shows which parts move when your configuration changes.
Where the memory goes
A default deployment starts roughly nine containers. None is individually enormous, but they add up:
- Go microservices โ the LLM API, Response API, Media API, MCP tools and a service template
- PostgreSQL โ conversation and message persistence
- Keycloak โ OIDC authentication, running from
quay.io/keycloak/keycloak:24.0.5, and a JVM application with a real memory footprint - Kong v3.5 โ the API gateway that validates every request
- Web chat UI โ a React app on port 3001
Keycloak and Postgres are the two that make 4 GB uncomfortable. On an 8 GB server the stack runs with room to spare; below that, containers get OOM-killed during startup and the failure looks like a random crash rather than a memory problem.
The 12 GB recommendation applies when you enable everything, including the Media API and the optional observability stack of OpenTelemetry, Prometheus, Jaeger and Grafana.
CPU
The Go services are not CPU-bound. They spend their time waiting on the database and on whatever model endpoint you configured, so 4 vCPU is comfortable for the whole stack and 2 vCPU works for a single-user install.
That changes completely if you run inference on the same machine. The CPU vLLM profile exists precisely so you can, and it will use every core you give it while producing tokens far slower than a GPU. Treat CPU inference as a way to verify the deployment works, not as the configuration you serve people from.
Disk
Budget 40 GB minimum with remote inference. Three things consume it:
- Container images โ several gigabytes across the services, Keycloak, Kong and Postgres
- PostgreSQL data โ grows with conversation and message history
- Media storage โ only if you enable the Media API and keep files locally rather than in S3
Local model weights are the wildcard. The default model for the vLLM profiles is janhq/Jan-v1-4B, which is modest, but a model cache volume is still the fastest way to fill a small disk. If local inference is anywhere in your plans, start at 100 GB.
GPU
Required only for the vLLM GPU profile, which reserves an NVIDIA device through the Compose deploy.resources block and refuses to start without one. Standard VPS plans from the providers below do not include a GPU, so the practical options are a remote OpenAI-compatible endpoint, the slow CPU profile, or a separate GPU host that Jan Server calls out to.
Provider entry plans against these requirements
| Provider | Entry plan | RAM | CPU | Disk | Meets 8 GB floor? |
|---|---|---|---|---|---|
| Contabo | Cloud VPS 4 โ 5.50 EUR/mo excl. VAT | 8 GB | 4 vCPU | 100 GB SSD | Yes |
| Hetzner | CX23 โ 5.49 EUR/mo excl. VAT | 4 GB | 2 vCPU | 40 GB NVMe | No, step up to CX33 |
| DigitalOcean | Basic droplet โ 6 USD/mo | 1 GB | 1 vCPU | 25 GB SSD | No |
| Vultr | Cloud Compute โ 5 USD/mo | 1 GB | 1 vCPU | 25 GB SSD | No |
| Linode | Nanode โ 5 USD/mo | 1 GB | 1 vCPU | 25 GB SSD | No |
Only one entry plan on that list qualifies. Contaboโs cheapest tier has been 8 GB since the lineup was renamed, which is unusual at this price and makes it the default recommendation for Jan Server. Hetzner reaches the same 8 GB with CX33 at 8.49 EUR/mo excl. VAT, on 80 GB of NVMe rather than 100 GB of SATA SSD.
The US providers all start at 1 GB, so hosting Jan Server there means climbing several tiers rather than buying the entry plan.
Sizing summary
| Configuration | RAM | vCPU | Disk |
|---|---|---|---|
| Single user, remote inference | 8 GB | 2 | 40 GB |
| Team use, all services enabled | 12 GB | 4 | 80 GB |
| Local CPU inference, testing only | 12 GB+ | 4+ | 100 GB |
| Local GPU inference | Per model | Per model | 100 GB+ and an NVIDIA GPU |
Pick the row that matches how you intend to run inference, and remember that the 8 GB figure is a documented minimum rather than a comfortable target. For current plans and prices across providers, see our VPS comparison.
Frequently asked questions
What is the minimum RAM for running Jan Server on a VPS?
Eight gigabytes. That figure comes from the project's own README, which also recommends 12 GB to run the full set of services comfortably. It covers the Go microservices, Postgres, Keycloak and the Kong gateway, and assumes inference is happening somewhere else rather than on the same box.
How much disk space should I allocate for Jan Server?
Start at 40 GB if you use a remote inference endpoint. The container images alone run to several gigabytes across the services, Postgres, Keycloak and Kong, and Postgres then grows with your conversation history. Enabling the Media API with local storage or caching model weights changes that number substantially.
Does Jan Server need an NVIDIA GPU?
Only if you run inference locally through the vLLM GPU profile, which reserves an NVIDIA device and will not start without one. Pointing Jan Server at a remote OpenAI-compatible endpoint removes the requirement completely, and that is the normal arrangement on a VPS.