
Self-hosting Strapi the easy way
Yulei ChenStrapi is the leading open-source headless CMS. It lets you build powerful APIs with a visual content editor, so you can manage content without touching code. Strapi Cloud works, but pricing starts at $29/month and scales up fast with usage and team size.
Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get Strapi up and running in minutes — no server setup, no reverse proxy config, no infrastructure headaches.
Prerequisites
Before deploying, ensure you have a Sliplane account (free trial available).
Quick start
Sliplane provides one-click deployment with presets.
- Click the deploy button above
- Select a project
- Select a server. If you just signed up you get a 48-hour free trial server
- Click Deploy!
About the preset
The one-click deploy above uses Sliplane's Strapi preset. Here's what it includes:
- Strapi v5 via the
elestio/strapi-productionimage (versionv5.41.1— check Docker Hub for newer stable versions) - SQLite as the default database — no external database service needed
- Persistent storage for your data (
.tmp), uploads (public/uploads), and content type schemas (src) - Auto-generated secrets for JWT, admin JWT, and app keys
- Telemetry disabled by default
Next steps
Once Strapi is running on Sliplane, access it using the domain Sliplane provided (e.g. strapi-xxxx.sliplane.app).
First-time setup
When you open Strapi for the first time, you'll see a registration form to create your admin account. Fill in your name, email, and password — this becomes the super admin user.
After that, you land in the Strapi admin panel where you can:
- Create Content Types (like blog posts, products, pages)
- Add and manage content entries
- Configure roles and permissions for your API
- Install plugins from the Strapi marketplace
Default paths
Here are the key paths inside the container:
| Path | Purpose |
|---|---|
/opt/app/.tmp | SQLite database (persisted via volume) |
/opt/app/public/uploads | Uploaded media files (persisted via volume) |
/opt/app/src | Content type schemas and customizations (persisted via volume) |
/opt/app/config | Configuration files |
Environment variables
The preset configures the essentials, but you might want to customize a few things:
| Variable | Default | Purpose |
|---|---|---|
DATABASE_CLIENT | sqlite | Database engine (sqlite, postgres, or mysql) |
NODE_ENV | production | Node environment |
STRAPI_TELEMETRY_DISABLED | true | Disable anonymous usage data |
HOST | 0.0.0.0 | Listen address |
PORT | 1337 | Listen port |
If you need PostgreSQL instead of SQLite (recommended for larger projects), deploy a PostgreSQL service on the same server and update these environment variables:
DATABASE_CLIENT=postgres
DATABASE_HOST=your-postgres-service.internal
DATABASE_PORT=5432
DATABASE_NAME=strapi
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=your-password
Logging
Strapi logs to STDOUT by default, which integrates nicely with Sliplane's built-in log viewer. For more verbose output, you can set STRAPI_LOG_LEVEL=debug in your environment variables. For general Docker log tips, check out our post on how to use Docker logs.
Troubleshooting
If Strapi takes a while to start on the first deploy, that's normal — it needs to build the admin panel and set up the database. Subsequent starts are much faster.
If you see connection errors, double-check your environment variables (especially database settings if you switched from SQLite to PostgreSQL).
Cost comparison
Of course you can also self-host Strapi with other cloud providers. Here is a pricing comparison for the most common ones:
| Provider | vCPU Cores | RAM | Disk | Estimated Monthly Cost | Notes |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 | charge per server |
| Render | 1 | 2 GB | 40 GB | ~$35–$45 | VM Small |
| Fly.io | 2 | 2 GB | 40 GB | ~$20–$25 | VM + volume |
| Railway | 2 | 2 GB | 40 GB | ~$15–$66 | Usage-based |
FAQ
Here are answers to the most common questions about running Strapi on Sliplane.
What can I build with Strapi?
Strapi is a headless CMS — it provides a content API that any frontend can consume. Common use cases include blogs, e-commerce product catalogs, documentation sites, mobile app backends, and any project where non-technical users need to manage structured content. It pairs well with frameworks like Next.js, Nuxt, Astro, or any frontend that can call a REST or GraphQL API.
How do I add plugins to Strapi?
You can install plugins through the Strapi admin panel under Marketplace, or manually by adding them to your project's package.json. Since the preset persists the /opt/app/src directory, plugin configurations survive redeployments. After installing a plugin, restart your service in Sliplane for it to take effect.
How do I update Strapi?
Change the image tag in your service settings (e.g. from v5.41.1 to a newer version) and redeploy. Check Docker Hub for the latest stable version. Always back up your data before major version updates — you can use Sliplane's volume backup feature for this.
Are there alternatives to Strapi?
Yes. Popular open-source headless CMS options include Directus (database-first approach, supports any SQL database), Payload CMS (TypeScript-native, code-first), and Ghost (focused on publishing and newsletters). Each has different strengths depending on your use case.
Can I use Strapi with a custom domain?
Yes. Once your Strapi service is running on Sliplane, you can add a custom domain in the service settings. Sliplane automatically handles TLS certificates via Let's Encrypt, so your Strapi instance will be served over HTTPS without any extra configuration.