Skip to content

Installation

Total CMS can be installed on any server running PHP 8.2 or higher. The setup wizard guides you through the process in under 5 minutes.

  • PHP 8.2 or higher (PHP 8.3 and 8.4 supported)
  • Required PHP extensions:
    • curl - HTTP requests (license validation, embeds)
    • exif - Image metadata extraction
    • fileinfo - File type detection
    • gd (with FreeType) - Image processing and text rendering
    • json - JSON parsing
    • mbstring - Multibyte string handling
    • openssl - HTTPS and encryption

These extensions enhance performance and enable additional features:

  • intl - Internationalization and locale support
  • imagick - Advanced image processing
  • opcache - PHP bytecode caching (strongly recommended)
  • apcu - High-performance in-memory caching
  • redis - Redis caching support
  • memcached - Memcached caching support

You only need one caching extension. APCu is recommended for single-server deployments.

  • Apache 2.4+ with mod_rewrite enabled
  • Nginx with PHP-FPM (see Nginx Configuration)
  • LiteSpeed or other PHP-compatible servers
  • Write access to the data directory
  • Recommended: 100MB+ free disk space (varies by content volume)
  • Chrome/Edge (latest 2 versions)
  • Firefox (latest 2 versions)
  • Safari (latest 2 versions)
  1. Download the Total CMS zip from totalcms.co
  2. Extract to your server (e.g., /var/www/example.com/tcms/)
  3. Point your web server’s document root to the public/ directory
  4. Visit your site in a browser — the setup wizard starts automatically

The wizard walks you through the installation:

Choose your preferred language for the admin interface. Currently supported: English, English (UK), Deutsch, Español, Nederlands.

The wizard verifies your server meets the requirements. All required checks must pass before you can continue. Optional checks are shown as recommendations.

Choose where Total CMS stores its data:

  • Document Root<docroot>/tcms-data (simplest, works everywhere)
  • Above Document Root (recommended) — <parent>/tcms-data (more secure, not web-accessible)
  • Custom Path — any absolute path on the server

The data directory is created with an .htaccess file that blocks direct web access.

Create your first administrator account with an email address and password.

Your license is automatically validated. New installations start with a free trial. If you’ve already purchased a license for your domain, it will be detected automatically.

After installation:

/var/www/example.com/
├── tcms/ # Total CMS application
│ ├── config/ # Configuration files
│ ├── public/ # Web root (point your server here)
│ │ ├── index.php # Entry point
│ │ └── assets/ # CSS, JS, images
│ ├── resources/ # Templates, schemas, translations, docs
│ ├── src/ # PHP source code
│ ├── vendor/ # Dependencies
│ └── version.json # Version info
├── tcms-data/ # Your content (separate from app)
│ ├── .schemas/ # Custom schema definitions
│ ├── .system/ # System files (settings, API keys)
│ ├── templates/ # Custom Twig templates
│ └── [collections]/ # Collection data

The key principle: tcms/ contains the application and tcms-data/ contains your content. Updates only touch tcms/ — your content is never affected.

Total CMS includes .htaccess files for URL rewriting. Ensure mod_rewrite is enabled:

Terminal window
a2enmod rewrite

Your virtual host should point to the public/ directory:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com/tcms/public
<Directory /var/www/example.com/tcms/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

See the Nginx Configuration guide for detailed setup.

After installation, Total CMS includes a CLI tool:

Terminal window
php tcms/resources/bin/tcms info

See the CLI Commands reference for the full list.

Setup wizard doesn’t appear — Ensure your web server points to tcms/public/, not the tcms/ folder itself.

Permission denied errors — The web server user (e.g., www-data) needs write access to tcms-data/, tcms/cache/, tcms/logs/, and tcms/tmp/.

Required extension missing — Install the missing PHP extension and restart your web server. On Ubuntu: apt install php8.2-{extension}.

Blank page or 500 error — Check tcms/logs/ for error logs. Verify PHP version is 8.2+ and all required extensions are installed.

404 errors on all pages — Verify mod_rewrite is enabled (Apache) or check your Nginx try_files directive.

License validation fails — Verify curl is installed, firewall allows outbound HTTPS, and domain matches your license.

  1. Check the Community Forum
  2. Review the Configuration guide
  3. Check PHP error logs for specific error messages