Install

This guide shows you how to install and set up LeadCMS using Docker Compose. Follow these steps to get a local instance running quickly.

System requirements

Before installing LeadCMS, ensure your machine meets these minimum requirements:

  • Docker: Version 20.10 or higher
  • Docker Compose: Version 2.10 or higher
  • RAM: At least 4 GB (8 GB recommended)
  • Storage: 10 GB free disk space (for development)
  • CPU: 2 cores minimum
  • OS: Linux, macOS or Windows

These requirements cover running the LeadCMS core application and its default PostgreSQL database in containers. No additional services like Elasticsearch are required for a basic installation.

Prerequisites

  • Docker installed and running
  • Docker Compose (included with Docker Desktop)
  • Terminal access with bash/zsh

Quick start

Get LeadCMS running in minutes:

Clone the deployment repository

git clone https://github.com/LeadCMS/leadcms.deploy.git
cd leadcms.deploy

Generate environment variables

chmod +x generate-env.sh
./generate-env.sh

This script reads .env.sample, generates secure secrets and writes a new .env file. If a .env file already exists, you'll be asked before overwriting it.

Start the stack with Docker Compose

docker compose up -d

After the last step, your LeadCMS instance will be running at http://localhost:8080. The Docker Compose stack includes:

  • LeadCMS Core – the .NET API and admin UI
  • PostgreSQL – the primary database (no external setup required)

Environment configuration

The generated .env file contains all configuration options. Review and customise these settings as needed:

Email settings

# Email configuration for notifications
EMAIL__USERNAME=your-smtp-username
EMAIL__PASSWORD=your-smtp-password
EMAIL__SERVER=smtp.your-provider.com
EMAIL__PORT=587
EMAIL__USESSL=true

Supported languages

# Configure supported languages
SUPPORTEDLANGUAGES__0=en
SUPPORTEDLANGUAGES__1=de
SUPPORTEDLANGUAGES__2=fr
# Add more languages by incrementing the index

CORS origins

# Allow your frontend origins
CORS__ALLOWEDORIGINS__0=http://localhost:3000
CORS__ALLOWEDORIGINS__1=https://yourdomain.com

Default admin user

# Default admin credentials – change these immediately
DEFAULTUSERS__0__USERNAME=admin
DEFAULTUSERS__0__EMAIL=admin@yourcompany.com
DEFAULTUSERS__0__PASSWORD=SecurePassword123
Security warning

Always change the default admin credentials before using your instance in production. While credentials are stored securely in the .env file, you should set strong, unique values.

Verifying your installation

After the containers start, verify everything is running correctly:

Check running services

# List containers and their status
docker compose ps

# View LeadCMS logs
docker compose logs leadcms

Access LeadCMS

  1. Admin interface – open http://localhost:8080 in your browser and log in with the default admin credentials (from the .env file).
  2. API documentation – visit http://localhost:8080/swagger to see the automatically generated Swagger UI.

Test the API

# Retrieve the API version
curl http://localhost:8080/api/version

Troubleshooting

Here are some common issues and their resolutions:

Port already in use

If port 8080 is occupied:

# Find which process is using port 8080
lsof -i :8080

# Change the external port by editing docker-compose.yml
services:
  leadcms:
    ports:
      - "8081:8080"

Database connection issues

If LeadCMS cannot connect to PostgreSQL:

# Check PostgreSQL logs
docker compose logs postgres

# Recreate the database (this will delete all data)
docker compose down -v
docker compose up -d

Development vs production

Development setup

The provided Docker Compose configuration is intended for development, evaluation and local use. For production deployments, see the Static Export and Deploying documentation for guidance on using managed databases, setting up SSL, backups, monitoring, and high‑availability architectures.

Next steps

You're now ready to explore the LeadCMS admin UI and begin building your project. Continue with: