Skip to content

Deploying a SuiteCRM App

Introduction

SuiteCRM is an open-source customer relationship management platform built on PHP. Deploying SuiteCRM with a Dockerfile on Klutch.sh provides reproducible builds, managed secrets, and persistent storage—all configured from klutch.sh/app. This guide covers installation, Dockerfile setup, environment variables, storage, Nixpacks overrides, and sample checks to verify your CRM is live.


Prerequisites

  • A Klutch.sh account (sign up)
  • A GitHub repository containing your SuiteCRM Dockerfile (GitHub is the only supported git source)
  • External MariaDB/MySQL database
  • Domain and TLS for secure access

Architecture and ports

  • SuiteCRM (Bitnami image) serves HTTP on internal port 8080. Choose HTTP traffic in Klutch.sh and set the internal port to 8080.
  • Persistent storage is required for application data and uploaded files; primary database data resides in MariaDB/MySQL.

Repository layout

suitecrm/
├── Dockerfile # Must be at repo root for auto-detection
└── README.md

Keep secrets out of Git; store them in Klutch.sh environment variables.


Installation (local) and starter commands

Build and run locally (ensure MariaDB/MySQL is reachable):

Terminal window
docker build -t suitecrm-local .
docker run -p 8080:8080 \
-e MARIADB_HOST=localhost \
-e MARIADB_PORT_NUMBER=3306 \
-e SUITECRM_DATABASE_NAME=suitecrm \
-e SUITECRM_DATABASE_USER=suitecrm \
-e SUITECRM_DATABASE_PASSWORD=changeme \
-e SUITECRM_USERNAME=admin \
-e SUITECRM_PASSWORD=admin123 \
-e SUITECRM_EMAIL=admin@example.com \
suitecrm-local

Dockerfile for SuiteCRM (production-ready)

Place this at the repo root; Klutch.sh auto-detects Dockerfiles.

FROM bitnami/suitecrm:latest
ENV APACHE_HTTP_PORT_NUMBER=8080
EXPOSE 8080
CMD ["/opt/bitnami/scripts/suitecrm/run.sh"]

Notes:

  • Pin to a specific tag (e.g., bitnami/suitecrm:8.6.1) for stability.
  • The Bitnami entrypoint starts Apache/PHP-FPM on the configured port.

Environment variables (Klutch.sh)

Set these before deploying:

  • PORT=8080
  • APACHE_HTTP_PORT_NUMBER=8080
  • Database:
    • MARIADB_HOST=<db-host>
    • MARIADB_PORT_NUMBER=3306
    • SUITECRM_DATABASE_NAME=<db-name>
    • SUITECRM_DATABASE_USER=<db-user>
    • SUITECRM_DATABASE_PASSWORD=<db-password>
  • App admin:
    • SUITECRM_USERNAME=<admin-user>
    • SUITECRM_PASSWORD=<strong-password>
    • SUITECRM_EMAIL=<admin-email>
  • Optional: SUITECRM_SKIP_BOOTSTRAP=no (keep defaults), mail settings as needed

If deploying without the Dockerfile and relying on Nixpacks:

  • NIXPACKS_START_CMD=/opt/bitnami/scripts/suitecrm/run.sh

Attach persistent volumes

Add storage in Klutch.sh (path and size only):

  • /bitnami/suitecrm — application data and uploads.
  • /bitnami/php — PHP configuration/cache (optional).

Ensure paths are writable inside the container.


Deploy SuiteCRM on Klutch.sh (Dockerfile workflow)

  1. Push your repository—with the Dockerfile at the root—to GitHub.
  2. Open klutch.sh/app, create a project, and add an app.
  3. Select HTTP traffic and set the internal port to 8080.
  4. Add the environment variables above (database, admin credentials, email, and optional mail settings).
  5. Attach volumes at /bitnami/suitecrm (and /bitnami/php if desired) sized for your data.
  6. Deploy. Access your CRM at https://example-app.klutch.sh and complete the initial setup screens.

Sample checks

Landing page:

Terminal window
curl -I https://example-app.klutch.sh

Login page (expect HTML response):

Terminal window
curl -I https://example-app.klutch.sh/index.php

Health checks and production tips

  • Add an HTTP readiness probe to / to confirm Apache responds.
  • Keep DB credentials and admin passwords in Klutch.sh secrets; rotate regularly.
  • Pin image versions and test upgrades in staging before production rollout.
  • Back up MariaDB and the /bitnami/suitecrm volume regularly.

SuiteCRM on Klutch.sh delivers reproducible Docker builds, managed secrets, and persistent storage—without extra YAML or CI steps. Configure ports, env vars, and volumes, then launch your CRM.