
Concrete CMS
User-friendly CMS with drag-and-drop editing
Deploy Concrete CMS in 3 Steps
Connect Your VPS
Add your server credentials to Server Compass
Select Concrete CMS
Choose from our template library
Deploy & Configure
Fill in settings and click Deploy
Manual Concrete CMS Setup
For terminal enthusiasts: deploy Concrete CMS manually with these simple steps.
Open a Terminal Connection
Start by opening a terminal window and connecting to your VPS via SSH.
# Connect to your VPS
ssh root@your-server-ip
# Or with a specific SSH key
ssh -i ~/.ssh/your-key root@your-server-ipFirst time? Docker required! Install it with: curl -fsSL https://get.docker.com | sh
Create Application Directory
Create a dedicated space for your application deployment.
# Create and navigate to project directory
mkdir -p ~/apps/concrete5
cd ~/apps/concrete5Create Deployment Configuration
Create a docker-compose.yml file with the following configuration:
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:
PORTHost port to expose(default: 8080)DB_NAMEDatabase name(default: concrete)DB_USERDatabase user(default: concrete)DB_PASSWORDDatabase passwordDB_ROOT_PASSWORDRoot passwordLaunch Your Application
Deploy the stack and monitor the startup process.
# Spin up containers
docker compose up -d
# Verify deployment
docker compose ps
# Check logs for errors
docker compose logs -fEnable External Access
Set up firewall rules to permit incoming connections.
# Allow the application port through firewall
sudo ufw allow 8080/tcp
sudo ufw reload
# Access your app at:
# http://your-server-ip:8080Skip 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
After Deployment
After deploying Concrete CMS with Server Compass, complete these steps to finish setup
Complete the installation wizard
Configure database connection
Create admin account
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


