Strapi

Strapi
- Version: 5.0.0
- OS: Ubuntu 24.04
- Category: Blogs and Forums
Description
Strapi is the leading open-source headless CMS. It gives developers the freedom to use any frontend framework or tool, while content editors manage and publish content through an intuitive admin panel. Strapi exposes your content via RESTful and GraphQL APIs automatically, making it easy to power websites, mobile apps, or any digital product from a single content backend.
This VPS image runs Strapi v5 inside Docker containers backed by a PostgreSQL 16 database. Security keys are generated automatically on first boot, and the entire stack is managed via systemd service scripts for easy day-to-day operations.
Software Included
| Package | Version | License |
|---|---|---|
| Strapi | 5.0.0 | MIT |
| Node.js | 22 (Alpine) | MIT |
| PostgreSQL | 16 | PostgreSQL License |
| Docker | Bundled | Apache 2.0 |
| Docker Compose | Bundled | Apache 2.0 |
| UFW Firewall | Bundled | GPL |
Key Features
- Headless CMS with auto-generated REST and GraphQL APIs
- Visual Content-Type Builder — define your data structures without writing code
- Intuitive admin panel for editors to create and publish content
- Media library with image optimization
- Role-based access control (RBAC) for fine-grained permissions
- Internationalization (i18n) support for multilingual content
- Draft and publish workflow
- Webhooks for triggering third-party integrations
- Plugin marketplace for extending functionality
- PostgreSQL database for reliable, production-grade storage
System Requirements
| Environment | RAM | CPU |
|---|---|---|
| Development / Small | 2 GB | 1 vCPU |
| Small Production | 4 GB | 2 vCPU |
| Medium Production | 8 GB | 4 vCPU |
| Large Production | 16 GB | 8 vCPU |
The minimum recommended configuration for production is 2 GB RAM and 2 vCPU.
Getting Started
1. Deploy Strapi on an EasyCloudify VPS
Deploy this app from the EasyCloudify Marketplace. The first boot takes 2–3 minutes to generate security keys and start all services.
2. Access the Admin Panel
Open a browser and navigate to your VPS IP address:
http://your-vps-ip/admin
3. Create Your Administrator Account
On first access you will be prompted to register:
- First name and last name
- Email address
- Password (minimum 8 characters)
Click Let's start to complete the setup.
4. Build Your First Content Type
- In the admin panel, navigate to Content-Type Builder in the sidebar.
- Click Create new collection type.
- Name your type (e.g., Article, Product, Blog Post).
- Add fields: text, rich text, media, relations, numbers, dates, etc.
- Click Save and restart Strapi when prompted.
- Navigate to Content Manager to create your first entry.
5. Access Your API
Once you have created content types and published entries, your APIs are available at:
- REST:
http://your-vps-ip/api/[content-type-plural] - GraphQL Playground:
http://your-vps-ip/graphql(requires GraphQL plugin) - API Docs:
http://your-vps-ip/documentation(requires Documentation plugin)
By default, API endpoints are protected. To allow public access, go to Settings > Users & Permissions > Roles > Public and enable the relevant permissions.
Configuration
Environment Variables
Edit the Strapi environment file to change database credentials, JWT secrets, or the public URL:
bashnano /opt/strapi/.env
After any change, restart Strapi:
bashsystemctl restart strapi
Set a Custom Domain
- Create a DNS A record pointing your domain to your VPS IP and wait for propagation.
- Set up a reverse proxy (Nginx or Caddy) to proxy traffic to port 80 with Let's Encrypt SSL.
- Update the environment file:
bashnano /opt/strapi/.env # Set: PUBLIC_URL=https://your-domain.com
- Restart Strapi:
bashsystemctl restart strapi
Database Access
Connect directly to the PostgreSQL database inside the container:
bashdocker exec -it strapiDB psql -U strapi -d strapi
Database credentials are stored in /opt/strapi/.env.
Service Management
bash# Start systemctl start strapi # Stop systemctl stop strapi # Restart systemctl restart strapi # Status systemctl status strapi
Convenience scripts are also available:
bash/opt/start-strapi.sh /opt/stop-strapi.sh /opt/restart-strapi.sh
Viewing Logs
bash# All services docker compose -f /opt/strapi/docker-compose.yml logs -f # Strapi application only docker logs -f strapi # PostgreSQL database docker logs -f strapiDB
Updating Strapi
Always back up your data before updating, then run:
bash/opt/update-strapi.sh
The script stops the current service, pulls the latest Docker images, and restarts.
Backup and Restore
Create a database backup:
bashdocker exec strapiDB pg_dump -U strapi -d strapi > strapi_backup_$(date +%Y%m%d).sql
Restore from backup:
bashcat strapi_backup_YYYYMMDD.sql | docker exec -i strapiDB psql -U strapi -d strapi
Docker volumes containing Strapi data:
| Volume | Contents |
|---|---|
strapi-data | PostgreSQL database files |
strapi-app | Strapi application code |
strapi-uploads | Media library uploads |
Security Best Practices
- Always use HTTPS in production — configure a reverse proxy with Let's Encrypt.
- UFW is pre-configured to allow only required ports; add rules with
ufw allow [port]/tcp. - Database credentials are randomly generated on first boot and stored only in
/opt/strapi/.env. - Keep Strapi and system packages updated regularly.
- Use strong, unique passwords for all admin accounts.
Troubleshooting
Strapi will not start:
bashsystemctl status strapi docker compose -f /opt/strapi/docker-compose.yml logs -f
Cannot access the admin panel:
- Verify Strapi is running:
systemctl status strapi - Check firewall:
ufw status - Ensure port 80 is reachable from your location.
- Wait 2–3 minutes after first boot for full initialization.
Out of memory errors: Strapi requires at least 2 GB RAM. Resize your VPS if needed and check with free -m.
Support Details
- Hours: 24/7 Community Support
- Support URL: https://docs.strapi.io/
Resources
- Documentation: https://docs.strapi.io/
- REST API Reference: https://docs.strapi.io/dev-docs/api/rest
- Plugin Development: https://docs.strapi.io/dev-docs/plugins-development
- Tutorials: https://strapi.io/tutorials
- Discord Community: https://discord.strapi.io/
- GitHub: https://github.com/strapi/strapi