---
title: "Best VPS for Strapi 2026: Self-Host Your Headless CMS"
description: "Find the best VPS for Strapi. Compare hosting options, set up your own headless CMS, and run Strapi in production for under $10/month."
source: "https://1vps.com/best-vps-for-strapi/"
date: "2026-03-09"
---
# Best VPS for Strapi in 2026

Strapi is the leading open-source headless CMS — flexible, developer-friendly, and API-first. Self-host it on a VPS and own your content infrastructure instead of paying Strapi Cloud fees.

## Why Self-Host Strapi?

| Factor | Strapi Cloud | Self-Hosted VPS |
|--------|-------------|-----------------|
| Pro Price | $99/mo | ~$5/mo |
| Team Price | $499/mo | ~$10/mo |
| Custom Plugins | Limited | Unlimited |
| Database Choice | Managed | Any (PostgreSQL, MySQL, SQLite) |
| API Customization | ✅ | ✅ Full control |
| Data Ownership | Their servers | Your server |
| Media Storage | Included | Your choice (local, S3, etc.) |

Self-hosting Strapi saves $90-490+/month while giving you full control over plugins, database, and deployment.

## VPS Requirements

Strapi runs on [Node.js](https://1vps.com/best-vps-for-nodejs/) and needs a database:

**Minimum:**
- 1 vCPU
- 2GB RAM
- 20GB storage

**Recommended:**
- 2 vCPU
- 4GB RAM
- 40GB storage

**Production (High Traffic):**
- 4 vCPU
- 8GB RAM
- 80GB+ storage

Strapi's admin panel and content API are memory-hungry compared to simpler CMSes. 2GB RAM is the practical minimum for a smooth experience.

## Best VPS for Strapi

### 1. Hetzner CX23 (Best Value)

| Spec | Value |
|------|-------|
| vCPU | 2 |
| RAM | 4GB |
| Storage | 40GB NVMe |
| Price | €5.49/mo |

Hetzner delivers the best price-to-performance for Strapi. 4GB RAM handles the admin panel, API, and [PostgreSQL](https://1vps.com/best-vps-for-postgresql/) comfortably. EU data centers mean GDPR compliance out of the box.

**Why it works:** Strapi benefits from fast NVMe storage for media uploads and enough RAM for the Node.js process plus database. Hetzner nails both.

### 2. Hostinger KVM 2 (Best for Beginners)

| Spec | Value |
|------|-------|
| vCPU | 2 |
| RAM | 8GB |
| Storage | 100GB NVMe |
| Price | $10.99/mo |

Hostinger makes VPS hosting approachable. Their control panel, one-click OS installs, and 24/7 support lower the barrier. 8GB RAM gives Strapi plenty of headroom for plugins and media processing.

**Why it works:** If you're new to self-hosting, Hostinger's managed experience reduces friction. The generous RAM means you won't hit memory issues even with heavy plugin use.

### 3. DigitalOcean (Best Developer Experience)

| Spec | Value |
|------|-------|
| vCPU | 4 |
| RAM | 4GB |
| Storage | 80GB SSD |
| Price | $24/mo |

DigitalOcean has excellent documentation and a one-click marketplace. Their managed databases pair well with Strapi if you want to separate your DB from your app server.

**Why it works:** Great docs, App Platform as a fallback, and managed PostgreSQL if you want a hands-off database layer.

### 4. Contabo VPS M (Best for Large Projects)

| Spec | Value |
|------|-------|
| vCPU | 6 |
| RAM | 16GB |
| Storage | 100GB SSD |
| Price | €8.99/mo |

Running Strapi with dozens of content types, thousands of entries, and heavy media? Contabo gives you enterprise-tier resources at budget prices.

**Why it works:** Massive RAM and storage for the price. Ideal when your Strapi instance manages a large content library with many media assets.

### 5. Vultr High Performance (Best for Speed)

| Spec | Value |
|------|-------|
| vCPU | 2 |
| RAM | 4GB |
| Storage | 60GB NVMe |
| Price | $24/mo |

Vultr's high-performance line uses AMD EPYC processors and NVMe storage. If API response time is critical — say, powering a high-traffic frontend — Vultr delivers.

**Why it works:** Fastest single-thread performance in this list. Strapi's API responses benefit directly from CPU speed.

## Quick Comparison

| Provider | RAM | Storage | Price | Best For |
|----------|-----|---------|-------|----------|
| Hetzner | 4GB | 40GB NVMe | €5.49/mo | Best overall value |
| Hostinger | 8GB | 100GB NVMe | $10.99/mo | Beginners |
| DigitalOcean | 4GB | 80GB SSD | $24/mo | Developer experience |
| Contabo | 16GB | 100GB SSD | €8.99/mo | Large projects |
| Vultr | 4GB | 60GB NVMe | $24/mo | Raw speed |

## How to Set Up Strapi on a VPS

### 1. Prepare Your Server

```bash
# Update system
sudo apt update && sudo apt upgrade -y

# Install Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Verify
node -v  # v20.x
npm -v
```

### 2. Install PostgreSQL

```bash
sudo apt install -y postgresql postgresql-contrib

# Create database and user
sudo -u postgres psql -c "CREATE USER strapi WITH PASSWORD 'your-secure-password';"
sudo -u postgres psql -c "CREATE DATABASE strapi_db OWNER strapi;"
```

### 3. Create Your Strapi Project

```bash
npx create-strapi-app@latest my-project --quickstart --no-run

cd my-project
```

### 4. Configure Database

Edit `config/database.js`:

```javascript
module.exports = ({ env }) => ({
  connection: {
    client: 'postgres',
    connection: {
      host: env('DATABASE_HOST', '127.0.0.1'),
      port: env.int('DATABASE_PORT', 5432),
      database: env('DATABASE_NAME', 'strapi_db'),
      user: env('DATABASE_USERNAME', 'strapi'),
      password: env('DATABASE_PASSWORD', 'your-secure-password'),
      ssl: env.bool('DATABASE_SSL', false),
    },
  },
});
```

### 5. Set Up PM2 for Production

```bash
# Install PM2
sudo npm install -g pm2

# Build admin panel
NODE_ENV=production npm run build

# Start with PM2
pm2 start npm --name strapi -- run start
pm2 save
pm2 startup
```

### 6. Configure Nginx Reverse Proxy

```nginx
server {
    listen 80;
    server_name your-domain.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:1337;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}
```

### 7. Add SSL with Certbot

```bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
```

Your Strapi instance is now live at `https://your-domain.com/admin`.

## Strapi with Docker

Prefer containers? Use [Docker](https://1vps.com/best-vps-for-docker/):

```yaml
version: '3'
services:
  strapi:
    image: strapi/strapi
    environment:
      DATABASE_CLIENT: postgres
      DATABASE_HOST: db
      DATABASE_PORT: 5432
      DATABASE_NAME: strapi
      DATABASE_USERNAME: strapi
      DATABASE_PASSWORD: strapi
    ports:
      - '1337:1337'
    volumes:
      - ./app:/srv/app
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: strapi
      POSTGRES_USER: strapi
      POSTGRES_PASSWORD: strapi
    volumes:
      - strapi-data:/var/lib/postgresql/data

volumes:
  strapi-data:
```

```bash
docker compose up -d
```

## Performance Tips

1. **Use PostgreSQL, not SQLite** — SQLite works for dev but doesn't handle concurrent API requests well
2. **Enable response caching** — Use the `strapi-plugin-rest-cache` or a CDN for API responses
3. **Offload media to S3** — Install `@strapi/provider-upload-aws-s3` to keep your VPS storage lean
4. **Set `NODE_ENV=production`** — Always. Dev mode eats significantly more resources
5. **Use a CDN** — Cloudflare in front of Strapi reduces server load dramatically
6. **Monitor memory** — Strapi can leak memory with heavy admin usage; restart PM2 on a schedule if needed

## Strapi vs Other Headless CMS Options

| Feature | Strapi | [Ghost](https://1vps.com/best-vps-for-ghost/) | Directus | Payload |
|---------|--------|-------|----------|---------|
| API-First | ✅ REST + GraphQL | ✅ Content API | ✅ REST + GraphQL | ✅ REST + GraphQL |
| Content Types | Custom builder | Blog-focused | Custom builder | Code-defined |
| Auth | Built-in | Members | Built-in | Built-in |
| Plugin Ecosystem | Large | Moderate | Moderate | Growing |
| Resource Usage | Medium-High | Low-Medium | Medium | Medium |
| Best For | Custom APIs | Publishing | Data management | TypeScript devs |

## FAQ

### How much RAM does Strapi need?
2GB minimum for production. 4GB recommended. The admin panel is the biggest memory consumer — API-only usage needs less.

### Can I run Strapi on a 1GB VPS?
Technically yes with SQLite and swap space, but it'll be slow. The admin panel will struggle. Spend the extra $2/month for 2GB+.

### Should I use SQLite or PostgreSQL?
PostgreSQL for production, always. SQLite is fine for local development and prototyping.

### How do I update Strapi?
```bash
cd my-project
npm install @strapi/strapi@latest @strapi/plugin-*@latest
npm run build
pm2 restart strapi
```

Always backup your database before upgrading.

### Can Strapi handle high traffic?
Yes, with proper setup. Use a CDN, enable caching, and consider horizontal scaling with multiple app servers behind a load balancer for very high traffic.

## Bottom Line

For most Strapi deployments, **Hetzner** offers the best value — 4GB RAM and NVMe storage at under €4/month is hard to beat. If you're new to VPS hosting, **Hostinger** makes the setup easier with better support and a more generous resource allocation.

Start with 4GB RAM, use PostgreSQL, and put Cloudflare in front. You'll have a production-ready headless CMS for a fraction of what Strapi Cloud charges.
