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

  1. Log in with the admin credentials you set in the environment variables
  2. Complete the setup wizard if prompted
  3. Configure your organization details under Admin → System Settings

Key first-time configuration:

SettingLocationPurpose
Company infoAdmin → Company InformationName, logo, address
Email settingsAdmin → Email SettingsSMTP for notifications
SchedulerAdmin → SchedulersEnsure cron jobs run for workflows
CurrencyAdmin → CurrenciesAdd your operating currency
User rolesAdmin → Role ManagementConfigure 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.

Comments