Back to all templates
Concrete CMS logo

Concrete CMS

Application512MB+ RAM

User-friendly CMS with drag-and-drop editing

cmsphpdrag-dropenterprise

Deploy Concrete CMS in 3 Steps

1

Connect Your VPS

Add your server credentials to Server Compass

2

Select Concrete CMS

Choose from our template library

3

Deploy & Configure

Fill in settings and click Deploy

No Docker knowledge required
Step-by-step deployment guide

Deploy Concrete CMS on a VPS with Server Compass

Use the Concrete CMS template in Server Compass to deploy a self-hosted flexible content management system on your VPS, then verify the Concrete CMS install wizard in a browser.

About 7 minutesBrowser verified
1
Step 1

Open the server Apps tab

Select your VPS, open the Apps tab, and start a new app deployment. Keep sensitive server details hidden before capturing or sharing screenshots.

Server Compass Apps tab before creating a Concrete CMS app
2
Step 2

Choose an app template

Click New App and choose the template deployment path so Server Compass can load the built-in catalog.

Choosing to deploy an app from a Server Compass template
3
Step 3

Search for Concrete CMS

Use the template picker search to find Concrete CMS in the Server Compass template catalog.

Searching for Concrete CMS in the Server Compass template picker
4
Step 4

Select the Concrete CMS template

Choose the Concrete CMS template. Server Compass fills the Concrete CMS image, MySQL service, persistent site volumes, database settings, and required secret value.

Concrete CMS template selected in Server Compass
5
Step 5

Review the Concrete CMS settings

Confirm the app name and compose services. In this run, the app was named concrete5-demo and used host port 3001.

Reviewing Concrete CMS project settings and compose services
6
Step 6

Deploy Concrete CMS

Review the generated environment values, keep the database password masked, confirm the port is available, and click Deploy Now.

Reviewing Concrete CMS environment variables and port before deployment
7
Step 7

Watch the deployment progress

Keep the deployment modal open while Server Compass uploads the compose file, pulls the Concrete CMS and MySQL images, starts the containers, and verifies the stack.

Server Compass deploying the Concrete CMS template on the VPS
8
Step 8

Confirm Concrete CMS is running

After deployment finishes, return to the Apps tab and confirm the Concrete CMS app is marked Running with its application URL available.

Concrete CMS template running in the Server Compass Apps tab
9
Step 9

Open Concrete CMS in the browser

Click Open Application or open the application URL in a browser. The Concrete CMS install wizard confirms the deployed app is reachable and ready for the database credentials.

The deployed Concrete CMS install wizard loaded in a browser

After Concrete CMS Opens

  • Complete the Concrete CMS installer with the generated MySQL password from Server Compass.
  • Keep the database password masked in screenshots and docs.
  • Add a domain and HTTPS before inviting users or publishing content publicly.
  • Create roles and permissions before publishing editorial workflows.
  • Back up both the Concrete CMS application volume and the MySQL data volume before storing production content.

Verified Result

The Concrete CMS app loaded successfully in a browser and displayed the install wizard.

Concrete CMS deployment questions

What does the Concrete CMS template deploy?

It deploys Concrete CMS with a MySQL 8.0 database and persistent application and database volumes.

Which port did the tutorial use?

The tutorial used host port 3001, which maps to the Concrete CMS Apache web server on container port 80.

Why does the browser verification stop at the install wizard?

A fresh Concrete CMS deployment is considered reachable when the install wizard loads. Continuing further would require entering generated database credentials, so the public guide verifies the safe pre-install wizard.

Should this become a blog post?

No. The deployment guide should live on the Concrete CMS template detail page and be linked from the reusable template deployment docs page.

Manual Deployment Guide

Manual Concrete CMS Setup

For terminal enthusiasts: deploy Concrete CMS manually with these simple steps.

1

Open a Terminal Connection

Start by opening a terminal window and connecting to your VPS via SSH.

terminal
# Connect to your VPS
ssh root@your-server-ip

# Or with a specific SSH key
ssh -i ~/.ssh/your-key root@your-server-ip

First time? Docker required! Install it with: curl -fsSL https://get.docker.com | sh

2

Create Application Directory

Create a dedicated space for your application deployment.

terminal
# Create and navigate to project directory
mkdir -p ~/apps/concrete5
cd ~/apps/concrete5
3

Create Deployment Configuration

Create a docker-compose.yml file with the following configuration:

docker-compose.yml
services:
  concrete:
    image: php:8.2-apache
    ports:
      - "8080:80"
    environment:
      - DB_SERVER=db
      - DB_DATABASE=concrete
      - DB_USERNAME=concrete
      - DB_PASSWORD=<your-db-password>
      - APACHE_DOCUMENT_ROOT=/var/www/html/public
    volumes:
      - concrete_data:/var/www/html
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    command: >
      bash -c "
        apt-get update -qq && apt-get install -y -qq unzip libzip-dev libpng-dev libjpeg-dev libfreetype6-dev libicu-dev libcurl4-openssl-dev libonig-dev libxml2-dev git > /dev/null 2>&1;
        docker-php-ext-configure gd --with-freetype --with-jpeg > /dev/null 2>&1;
        docker-php-ext-install pdo pdo_mysql mysqli zip gd intl curl mbstring exif fileinfo opcache > /dev/null 2>&1;
        a2enmod rewrite > /dev/null 2>&1;
        sed -ri -e 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/*.conf;
        sed -ri -e 's!/var/www/!/var/www/html/public!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf;
        if [ ! -f /var/www/html/public/index.php ]; then
          curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer;
          composer config --global audit.blocked-advisories false;
          if [ -f /var/www/html/composer.json ]; then
            cd /var/www/html && composer install --no-interaction;
          else
            rm -rf /var/www/html/* /var/www/html/.[!.]* 2>/dev/null || true;
            composer create-project concretecms/composer /var/www/html --no-interaction --prefer-dist;
          fi;
        fi;
        mkdir -p /var/www/html/public/application/files /var/www/html/public/updates;
        chown -R www-data:www-data /var/www/html;
        chmod -R 775 /var/www/html;
        apache2-foreground
      "

  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=<your-db-root-password>
      - MYSQL_DATABASE=concrete
      - MYSQL_USER=concrete
      - MYSQL_PASSWORD=<your-db-password>
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p$$MYSQL_ROOT_PASSWORD || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

volumes:
  concrete_data:
  db_data:
Environment Configuration
PORTHost port to expose(default: 8080)
DB_NAMEDatabase name(default: concrete)
DB_USERDatabase user(default: concrete)
DB_PASSWORDDatabase password
DB_ROOT_PASSWORDRoot password
4

Launch Your Application

Deploy the stack and monitor the startup process.

terminal
# Spin up containers
docker compose up -d

# Verify deployment
docker compose ps

# Check logs for errors
docker compose logs -f
5

Enable External Access

Set up firewall rules to permit incoming connections.

terminal
# Allow the application port through firewall
sudo ufw allow 8080/tcp
sudo ufw reload

# Access your app at:
# http://your-server-ip:8080
Skip the Terminal

Skip the command line. Deploy visually.

Deploy Concrete CMS without touching the command line. Server Compass gives you a clean UI for one-click deployments.

  • Visual config editor
  • Instant deployment
  • Automatic HTTPS
  • Smooth updates
  • Live monitoring
  • Quick rollbacks
Download Server Compass$29 one-time • Lifetime license

After Deployment

After deploying Concrete CMS with Server Compass, complete these steps to finish setup

1

Complete the installation wizard

2

Configure database connection

3

Create admin account

4

Start building pages with drag-and-drop

Need help? Check out our documentation for detailed guides.

Concrete CMS FAQ

Common questions about self-hosting Concrete CMS

How do I deploy Concrete CMS with Server Compass?

Simply download Server Compass, connect to your VPS, and select Concrete CMS from the templates list. Fill in the required configuration and click Deploy. The entire process takes under 3 minutes.

What are the system requirements for Concrete CMS?

Concrete CMS requires a minimum of 512MB RAM. We recommend a VPS with at least 1024MB RAM for optimal performance. Any modern Linux server with Docker support will work.

Can I migrate my existing Concrete CMS data?

Yes! Server Compass provides volume mapping that allows you to import existing data. You can also use standard Concrete CMS backup and restore procedures.

How do I update Concrete CMS to the latest version?

Server Compass makes updates easy. Simply click the Update button in your deployment dashboard, and the latest Concrete CMS image will be pulled and deployed with zero downtime.

Is Concrete CMS free to self-host?

Concrete CMS is open-source software. You only pay for your VPS hosting (typically $5-20/month) and optionally Server Compass ($29 one-time). No subscription fees or per-seat pricing.

Ready to Self-Host Concrete CMS?

Download Server Compass and deploy Concrete CMS to your VPS in under 3 minutes. No Docker expertise required.

Download Server Compass