Installation Guide

Get SovereignCMS up and running in minutes. Choose the installation method that works best for you.

Manual Install (Git)

Clone the repository and configure manually. For developers who want full control.

Jump to guide

Hosting Providers

Deploy on popular hosting platforms with one-click options coming soon.

Learn more

Requirements

Before installing SovereignCMS, make sure your system meets these requirements:

Node.js
Version 18 or higher
MySQL / MariaDB
Version 5.7+ / 10.3+
Git
Any recent version
RAM
512MB minimum, 1GB+ recommended
Optional: Redis

For production sites with high traffic, Redis is recommended for session storage and caching. SovereignCMS works without it, using MySQL for sessions by default.

Setting Up MySQL (It's Easier Than You Think!)

MySQL might sound technical, but it's included free with most hosting and takes just a few clicks to set up locally.

On Shared Hosting (Hostinger, Bluehost, SiteGround, etc.)

Good news: MySQL is already installed and free! Just create a database:

  1. Log into cPanel

    Find "MySQL Databases" in your hosting control panel.

  2. Create a Database

    Enter a name like "mysite_cms" and click Create.

  3. Create a User

    Create a database user with a strong password.

  4. Assign User to Database

    Give the user "All Privileges" on your database. Done!

That's it - no terminal commands needed. Your host handles all the server setup.

On Your Computer (Local Development)

These free tools bundle MySQL with a one-click installer - no configuration needed:

Laragon
Windows - Download
MAMP
Mac / Windows - Download
XAMPP
Any platform - Download

Just download, install, and click "Start" - MySQL runs automatically. Default credentials are usually:

# Local development defaults (Laragon/MAMP/XAMPP) Host: localhost User: root Password: (empty or 'root')

On a VPS (DigitalOcean, Vultr, Linode, etc.)

One command installs MySQL:

# Ubuntu/Debian sudo apt update && sudo apt install mysql-server -y sudo mysql_secure_installation

The secure installation script will guide you through setting a root password and securing your database.

Why MySQL?

MySQL is the industry standard for web applications. It's battle-tested, well-documented, and included free with virtually every hosting provider. Your data is stored securely and can handle millions of users.

Quick Install with npx

The fastest way to get started. This single command downloads SovereignCMS, prompts you for configuration, and sets everything up.

Early Access Period

SovereignCMS is currently in early access. During this period, use the --branch testing flag to get the latest version. Once we reach stable release, the master branch will become the default and you won't need the flag anymore.

Basic Installation

npx create-sovereigncms my-site --branch testing

my-site is the folder name that will be created in the directory you run the command from. You can name it anything you like (e.g., blog, community, my-website). The installer will guide you through:

  • Database Configuration

    Enter your MySQL host, port, username, password, and database name.

  • Server Port

    Choose which port the CMS should run on (default: 3000).

  • Automatic Setup

    Dependencies are installed and configuration files are created.

Installation with Options

You can skip the prompts by providing options directly:

npx create-sovereigncms my-site --branch testing --port 3001 --db-name mysite_db

Available Options

Option Description Default
-p, --port Port for the CMS server 3000
-b, --branch Git branch to install from (use testing during early access) master
--db-host MySQL server hostname localhost
--db-port MySQL server port 3306
--db-user MySQL username root
--db-pass MySQL password (prompted)
--db-name Database name to create/use (project name)
--skip-install Skip npm install step false
--skip-start Don't start server after setup false
-y, --yes Skip all prompts, use defaults false

After Stable Release

Once SovereignCMS reaches stable release, you can install without the branch flag:

npx create-sovereigncms my-site

This will automatically use the stable master branch. We'll update this documentation when stable release is available.

Manual Installation

For developers who prefer full control over the installation process, or when npx isn't available.

Step 1: Clone the Repository

git clone -b testing https://github.com/SovereignCMS-stack/SovereignCMS.git my-site cd my-site

During early access, use the testing branch. After stable release, you can omit -b testing.

Step 2: Install Dependencies

npm install

Step 3: Create Configuration File

Copy the example environment file and edit it with your settings:

cp .env.example .env nano .env # or use your preferred editor

Step 4: Configure Environment Variables

Edit the .env file with your database credentials and other settings:

# Server Configuration PORT=3000 NODE_ENV=production # Database Configuration DB_HOST=localhost DB_PORT=3306 DB_USER=your_mysql_user DB_PASSWORD=your_mysql_password DB_NAME=sovereigncms # Session Secret (generate a random string) SESSION_SECRET=your-random-secret-key-here # JWT Secret (for API tokens) JWT_SECRET=another-random-secret-key JWT_EXPIRES_IN=7d
Generate Secure Secrets

Use this command to generate secure random strings for SESSION_SECRET and JWT_SECRET:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Step 5: Start the Server

npm start

Step 6: Complete Browser Setup

Open your browser and navigate to http://localhost:3000 (or your configured port). The setup wizard will guide you through:

  • Creating your admin account
  • Configuring site name and URL
  • Setting up email delivery
  • Running database migrations

Hosting Options

SovereignCMS can be deployed on any hosting platform that supports Node.js 18+ and MySQL.

Recommended Hosting Providers

VPS / Dedicated
DigitalOcean, Vultr, Linode, Hetzner
Cloud Platforms
AWS, Google Cloud, Azure
PaaS
Railway, Render, Fly.io

Running Multiple Sites

You can run multiple SovereignCMS instances on the same server by:

  1. Installing each site in a different directory
  2. Configuring each site to use a different port (3000, 3001, 3002, etc.)
  3. Using Nginx as a reverse proxy to route domains to the correct port
Nginx Example

Each domain points to a different internal port, allowing multiple CMS instances on one server.

After Installation

Once installed, here's what you can do: