Self-Hosting SuiteCRM with Docker Compose
What Is SuiteCRM?
SuiteCRM is an open-source CRM forked from SugarCRM in 2013. It covers sales pipeline management, marketing campaigns, customer support cases, reporting, and workflow automation. With over 4 million downloads, it’s the most widely deployed open-source CRM and a genuine Salesforce alternative for teams that want full data control without per-seat licensing.
Prerequisites
- A Linux server (Ubuntu 22.04+ recommended)
- Docker and Docker Compose installed (guide)
- 4 GB of RAM recommended (2 GB minimum)
- 10 GB of free disk space
- A domain name (recommended for production use)
Docker Image Situation
SuiteCRM does not publish an official Docker image. The Bitnami image (bitnami/suitecrm) was the standard choice for years with 9 million+ Docker Hub pulls, but Broadcom moved it to bitnamilegacy/suitecrm in late 2025 — a frozen archive with no security updates. Updated images are only available through Bitnami’s paid “Secure Images” subscription.
The legacy image is pinned at SuiteCRM 8.1.2 while the upstream project is at 8.9.2 (January 2026). Community Docker projects exist (jontitmus-code/SuiteCRM8_docker, LibreCodeCoop/suitecrm-docker) but none are widely adopted or production-hardened. For production use, a traditional LAMP installation on a VM remains the most supported path.
The Docker Compose below uses the legacy Bitnami image, which works for evaluation and small teams. SuiteCRM 7.15.0 ESR (extended support until ~2027) is also available for teams that need stability over new features.
Docker Compose Configuration
Create a docker-compose.yml file:
services:
suitecrm:
image: bitnamilegacy/suitecrm:8.8.1-debian-12-r3
container_name: suitecrm
restart: unless-stopped
ports:
- "8080:8080"
- "8443:8443"
environment:
# Database
SUITECRM_DATABASE_HOST: suitecrm-db
SUITECRM_DATABASE_PORT_NUMBER: "3306"
SUITECRM_DATABASE_NAME: suitecrm
SUITECRM_DATABASE_USER: suitecrm
SUITECRM_DATABASE_PASSWORD: change-this-password # CHANGE THIS
# Admin account
SUITECRM_USERNAME: admin
SUITECRM_PASSWORD: change-admin-password # CHANGE THIS
SUITECRM_EMAIL: [email protected]
# Application
SUITECRM_HOST: crm.example.com # CHANGE to your domain
ALLOW_EMPTY_PASSWORD: "no"
volumes:
- suitecrm-data:/bitnami/suitecrm
depends_on:
- suitecrm-db
networks:
- suitecrm
suitecrm-db:
image: mariadb:11.4
container_name: suitecrm-db
restart: unless-stopped
environment:
MARIADB_USER: suitecrm
MARIADB_DATABASE: suitecrm
MARIADB_PASSWORD: change-this-password # Must match above
MARIADB_ROOT_PASSWORD: change-root-password # CHANGE THIS
volumes:
- suitecrm-db:/var/lib/mysql
networks:
- suitecrm
volumes:
suitecrm-data:
suitecrm-db:
networks:
suitecrm:
driver: bridge
Start the stack:
docker compose up -d
First startup takes 2-5 minutes as SuiteCRM runs its installation routine. Access the CRM at http://your-server-ip:8080.
Important note: The bitnamilegacy/suitecrm image is frozen at version 8.1.2 (formerly labeled 8.8.1) and receives no security updates. The upstream SuiteCRM is at version 8.9.2. For production deployments, run SuiteCRM directly on a VM with PHP 8.2+ and Apache/Nginx. The Docker route works well for evaluation and small teams who accept the version gap.
Initial Setup
- Log in with the admin credentials you set in the environment variables
- Complete the setup wizard if prompted
- Configure your organization details under Admin → System Settings
Key first-time configuration:
| Setting | Location | Purpose |
|---|---|---|
| Company info | Admin → Company Information | Name, logo, address |
| Email settings | Admin → Email Settings | SMTP for notifications |
| Scheduler | Admin → Schedulers | Ensure cron jobs run for workflows |
| Currency | Admin → Currencies | Add your operating currency |
| User roles | Admin → Role Management | Configure access levels |
Configuration
SMTP for email notifications:
environment:
SUITECRM_SMTP_HOST: smtp.example.com
SUITECRM_SMTP_PORT: "587"
SUITECRM_SMTP_USER: [email protected]
SUITECRM_SMTP_PASSWORD: smtp-password
SUITECRM_SMTP_PROTOCOL: tls
PHP tuning for larger deployments:
environment:
PHP_MEMORY_LIMIT: "512M"
PHP_POST_MAX_SIZE: "100M"
PHP_UPLOAD_MAX_FILESIZE: "100M"
Reverse Proxy
Point your reverse proxy to http://suitecrm:8080. Set the SUITECRM_HOST environment variable to match your external domain so generated URLs are correct.
For a dedicated reverse proxy setup, see Reverse Proxy Guide.
Backup
Back up the MariaDB database and the SuiteCRM data volume:
# Database
docker exec suitecrm-db mariadb-dump -u suitecrm -p suitecrm > suitecrm-backup.sql
# Application data (config, uploads, custom modules)
docker run --rm -v suitecrm-data:/data -v $(pwd):/backup alpine tar czf /backup/suitecrm-data.tar.gz /data
For general backup strategies, see Backup Strategy.
Troubleshooting
Slow Initial Page Load
Symptom: First page load after startup takes 30-60 seconds.
Fix: This is normal — SuiteCRM compiles its metadata cache on first access. Subsequent loads are much faster. If slowness persists, increase PHP_MEMORY_LIMIT to 512M or higher.
Scheduler Jobs Not Running
Symptom: Workflows, email reminders, and campaign emails don’t trigger.
Fix: SuiteCRM requires its scheduler to run. Check Admin → Schedulers — all jobs should show “Active.” The Bitnami image includes a cron configuration, but verify it’s running: docker exec suitecrm cat /etc/cron.d/suitecrm.
”File Permission” Errors After Container Restart
Symptom: Permission denied errors in SuiteCRM after upgrading or restarting the container.
Fix: The Bitnami image expects specific ownership on the data volume. Run: docker exec -u root suitecrm chown -R 1001:1001 /bitnami/suitecrm.
Resource Requirements
- RAM: ~400-600 MB idle, ~1-2 GB under active use with multiple users
- CPU: 2 cores minimum, CPU-intensive during report generation
- Disk: 2 GB for the application, 10+ GB recommended with database and attachments
SuiteCRM is a full enterprise CRM — it’s heavier than lightweight contact managers but handles thousands of accounts and contacts without issues.
Verdict
SuiteCRM is the most feature-complete open-source CRM available. Sales pipelines, marketing campaigns, customer support cases, reporting, and workflow automation — it covers the full Salesforce feature set without per-seat licensing. The learning curve is steep (enterprise CRM complexity is inherent, not a software problem), and the Docker situation is the weakest part: no official image, the Bitnami legacy image is frozen, and community Docker projects are immature.
For smaller teams that just need contact management and basic sales tracking, Twenty or EspoCRM offer a more modern UX with simpler Docker setup. SuiteCRM is the answer when you need the full enterprise CRM toolkit and are willing to either accept the legacy Docker image or deploy on a traditional LAMP stack.
Related
- SuiteCRM vs EspoCRM: Which CRM to Self-Host?
- SuiteCRM vs Salesforce: Self-Hosted Alternative?
- Twenty vs SuiteCRM: Which Should You Self-Host?
- How to Self-Host Twenty CRM
- How to Self-Host EspoCRM
- Best Self-Hosted CRM Tools
- Docker Compose Basics
- Reverse Proxy Guide
- Backup Strategy
- Best Self-Hosted Invoicing Tools
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments