
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, and 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 that provides a content API 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.