---
title: Installation
description: Install and deploy Jan Server on Kubernetes using minikube and Helm.
---

# Prerequisites

Jan Server requires the following tools installed on your system:

- **Docker**: For building container images
- **minikube**: Local Kubernetes cluster for development
- **Helm**: Package manager for Kubernetes applications
- **kubectl**: Kubernetes command-line tool (installed with minikube)

Jan Server currently supports minikube for local development. Production Kubernetes deployments are planned for future releases.

## Quick Start


1. **Clone the repository**
   ```bash
   git clone https://github.com/janhq/jan-server
   cd jan-server
   ```

2. **Start minikube**
   ```bash
   minikube start
   ```

3. **Configure Docker environment**
   ```bash
   eval $(minikube docker-env)
   alias kubectl="minikube kubectl --"
   ```

4. **Deploy Jan Server**
   ```bash
   ./scripts/run.sh
   ```

5. **Access the API**
   
   The script automatically forwards port 8080. Access the Swagger UI at:
   ```
   http://localhost:8080/api/swagger/index.html#/
   ```


## Manual Installation

### Build Docker Images

Build both required Docker images:

```bash
# Build API Gateway
docker build -t jan-api-gateway:latest ./apps/jan-api-gateway

# Build Inference Model
docker build -t jan-inference-model:latest ./apps/jan-inference-model
```

The inference model image downloads the Jan-v1-4B model from Hugging Face during build. This requires an internet connection and several GB of download.

### Deploy with Helm

Install the Helm chart:

```bash
# Update Helm dependencies
helm dependency update ./charts/umbrella-chart

# Install Jan Server
helm install jan-server ./charts/umbrella-chart
```

### Port Forwarding

Forward the API gateway port to access from your local machine:

```bash
kubectl port-forward svc/jan-server-jan-api-gateway 8080:8080
```

## Verify Installation

Check that all pods are running:

```bash
kubectl get pods
```

Expected output:
```
NAME                                               READY   STATUS    RESTARTS
jan-server-jan-api-gateway-xxx                     1/1     Running   0
jan-server-jan-inference-model-xxx                 1/1     Running   0
jan-server-postgresql-0                            1/1     Running   0
```

Test the API gateway:
```bash
curl http://localhost:8080/health
```

## Uninstalling

To remove Jan Server:

```bash
helm uninstall jan-server
```

To stop minikube:

```bash
minikube stop
```

## Troubleshooting

### Common Issues

**Pods in `ImagePullBackOff` state**
- Ensure Docker images were built in the minikube environment
- Run `eval $(minikube docker-env)` before building images

**Port forwarding connection refused**
- Verify the service is running: `kubectl get svc`
- Check pod status: `kubectl get pods`
- Review logs: `kubectl logs deployment/jan-server-jan-api-gateway`

**Inference model download fails**
- Ensure internet connectivity during Docker build
- The Jan-v1-4B model is approximately 2.4GB

### Resource Requirements

**Minimum System Requirements:**
- 8GB RAM
- 20GB free disk space
- 4 CPU cores

**Recommended System Requirements:**
- 16GB RAM
- 50GB free disk space  
- 8 CPU cores
- GPU support (for faster inference)

The inference model requires significant memory. Ensure your minikube cluster has adequate resources allocated.
