Strapi
Generated on 17 Dec 2025 from the Strapi catalog page
Strapi 1-Click Application
Deploy Strapi, the leading open-source headless CMS, on DigitalOcean with this 1-Click application. Strapi gives developers the freedom to use their favorite tools and frameworks while allowing editors to manage and distribute their content using an intuitive admin interface.
What is Strapi?
Strapi is a flexible, open-source headless CMS that gives developers the freedom to choose their favorite tools and frameworks and allows editors to manage and distribute their content using their application’s admin panel. Built with modern JavaScript technologies, Strapi offers:
- Headless CMS - RESTful and GraphQL APIs for seamless integration with any frontend
- Customizable Admin Panel - User-friendly interface for content management
- Content Types Builder - Create and manage data structures without coding
- Role-Based Access Control - Fine-grained permissions for users and teams
- Plugins & Extensions - Extend functionality with official and community plugins
- Self-hosted - Complete control over your data and infrastructure
Key Features
- Modern, intuitive admin panel
- RESTful and GraphQL API support
- Flexible content modeling with visual builder
- Media library with image optimization
- Role-based access control (RBAC)
- Internationalization (i18n) support
- Draft & publish system
- API documentation generation
- Webhooks for third-party integrations
- Docker-based deployment for easy management
- PostgreSQL database for reliability and performance
System Components
This 1-Click includes:
- Strapi v5.0.0 - Latest version of the headless CMS
- Node.js 22 - JavaScript runtime (Alpine Linux-based)
- PostgreSQL 16 - Production-ready relational database
- Docker & Docker Compose - Container orchestration
- Ubuntu 24.04 LTS - Long-term support base system
- UFW Firewall - Pre-configured for security
System Requirements
Strapi is packaged as Docker containers and runs on your DigitalOcean Droplet. Use this guide to choose the appropriate size:
| Use Case | RAM | CPU | Recommended Droplet |
|---|---|---|---|
| Development/Small | 2GB | 1CPU | s-1vcpu-2gb |
| Small Production | 4GB | 2CPU | s-2vcpu-4gb |
| Medium Production | 8GB | 4CPU | s-4vcpu-8gb |
| Large Production | 16GB | 8CPU | s-8vcpu-16gb |
Note: The minimum recommended configuration is 2GB RAM and 2 CPUs for production use.
Software Included
This Marketplace listing does not include a detailed software list.
Creating an App using the Control Panel
Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
Creating an App using the API
In addition to creating a Droplet from the Strapi 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB Strapi Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.
curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"sharklabs-strapi1click"}' \
"https://api.digitalocean.com/v2/droplets"Getting Started After Deploying Strapi
Initial Setup
- Deploy the Droplet - Select this 1-Click App from the DigitalOcean Marketplace
- Wait for initialization - The first boot takes 2-3 minutes to generate security keys and start services
- Access Strapi - Navigate to your Droplet’s IP address in a web browser:
http://your-droplet-ip
Create Your Admin Account
On first access to the admin panel, you’ll need to create your administrator account:
- Navigate to
http://your-droplet-ip/admin - Fill in the registration form:
- First name and last name
- Email address
- Password (minimum 8 characters)
- Click “Let’s start” to complete setup
Building Your First Content Type
- Log into the admin panel at
/admin - Navigate to Content-Type Builder in the sidebar
- Click Create new collection type
- Define your content structure (e.g., Article, Product, Blog Post)
- Add fields to your content type (text, media, relations, etc.)
- Click Save and restart Strapi when prompted
- Navigate to Content Manager to create your first entry
Accessing Your API
Once you’ve created content types and entries:
- REST API:
http://your-droplet-ip/api/[content-type-plural] - API Documentation:
http://your-droplet-ip/documentation(if enabled) - GraphQL Playground:
http://your-droplet-ip/graphql(if GraphQL plugin is installed)
Important: By default, API endpoints are protected. Configure permissions in Settings > Users & Permissions > Roles > Public to allow public access.
Configuration
Environment Configuration
Modify the Strapi configuration by editing the environment file:
nano /opt/strapi/.env
After making changes, restart Strapi:
systemctl restart strapi
# or use the convenience script:
/opt/restart-strapi.sh
Database Access
The PostgreSQL database is accessible within the Docker network. To connect directly:
docker exec -it strapiDB psql -U strapi -d strapi
Database credentials are stored in /opt/strapi/.env
Domain and SSL Configuration
For production use with a custom domain:
-
Point your domain to the Droplet
- Create an A record pointing to your Droplet’s IP address
- Wait for DNS propagation (5-15 minutes)
-
Set up a reverse proxy (recommended for SSL/TLS)
- Install Nginx or Caddy as a reverse proxy
- Configure automatic SSL certificates with Let’s Encrypt
- Proxy traffic to port 80 where Strapi is running
-
Update Strapi configuration
- Edit
/opt/strapi/.env - Set
PUBLIC_URL=https://your-domain.com - Restart Strapi:
systemctl restart strapi
- Edit
Management Commands
Service Control
# Start Strapi
systemctl start strapi
# or
/opt/start-strapi.sh
# Stop Strapi
systemctl stop strapi
# or
/opt/stop-strapi.sh
# Restart Strapi
systemctl restart strapi
# or
/opt/restart-strapi.sh
# Check status
systemctl status strapi
Viewing Logs
# View all Strapi logs
docker compose -f /opt/strapi/docker-compose.yml logs -f
# View Strapi application logs only
docker logs -f strapi
# View database logs
docker logs -f strapiDB
Updating Strapi
To update Strapi to the latest version:
/opt/update-strapi.sh
This script will:
- Stop the current Strapi service
- Pull the latest Docker images
- Restart the service with updated containers
Note: Always backup your data before updating.
Backup and Data Management
Database Backup
Create a backup of your PostgreSQL database:
docker exec strapiDB pg_dump -U strapi -d strapi > strapi_backup_$(date +%Y%m%d).sql
Restore Database
Restore from a backup:
cat strapi_backup_YYYYMMDD.sql | docker exec -i strapiDB psql -U strapi -d strapi
Volume Management
Strapi data is stored in Docker volumes:
strapi-data- PostgreSQL database filesstrapi-app- Strapi application codestrapi-uploads- Media library uploads
View volumes:
docker volume ls
Plugins and Extensions
Installing Plugins
- Access the admin panel at
/admin - Navigate to Settings > Marketplace
- Browse available plugins
- Click Download on desired plugins
- Follow installation instructions for each plugin
Popular plugins include:
- GraphQL - Add GraphQL support
- Documentation - Auto-generate API documentation
- Email - Email functionality (SendGrid, Amazon SES, etc.)
- Upload - Enhanced media management
Custom Plugins
To develop custom plugins:
- Access the Strapi application in the container
- Use Strapi’s plugin development tools
- Refer to Strapi Plugin Development Guide
Security Best Practices
-
Change Default Port (Optional)
- Edit
/opt/strapi/.envand modifyPORTvariable - Update docker-compose port mappings if needed
- Restart Strapi
- Edit
-
Use SSL/TLS in Production
- Always use HTTPS for production deployments
- Configure a reverse proxy with Let’s Encrypt
-
Strong Passwords
- Use strong, unique passwords for admin accounts
- Enable two-factor authentication if available
-
Regular Updates
- Keep Strapi and system packages updated
- Monitor security advisories
-
Firewall Configuration
- UFW is pre-configured to allow only necessary ports
- Modify with:
ufw allow [port]/tcp
-
Database Security
- Database is only accessible within Docker network
- Credentials are randomly generated on first boot
Troubleshooting
Strapi Won’t Start
Check service status:
systemctl status strapi
View detailed logs:
docker compose -f /opt/strapi/docker-compose.yml logs -f
Cannot Access Admin Panel
- Verify Strapi is running:
systemctl status strapi - Check firewall rules:
ufw status - Ensure port 80 is accessible from your location
- Wait 2-3 minutes after first boot for full initialization
Database Connection Issues
- Check if database container is running:
docker ps - Verify database credentials in
/opt/strapi/.env - Check database logs:
docker logs strapiDB
Out of Memory Errors
Strapi requires at least 2GB RAM. If experiencing memory issues:
- Resize your Droplet to a larger size
- Check running processes:
htop - Review Docker logs for memory-related errors
Resources
- Strapi Documentation: https://docs.strapi.io/
- Strapi Community: https://discord.strapi.io/
- GitHub Repository: https://github.com/strapi/strapi
- API Reference: https://docs.strapi.io/dev-docs/api/rest
- Tutorials: https://strapi.io/tutorials
Support
For issues specific to this 1-Click application, please contact DigitalOcean support.
For Strapi-specific questions:
- Visit the Strapi Documentation
- Join the Strapi Discord Community
- Browse Stack Overflow
License
Strapi is open-source software licensed under the MIT License.