-rw-r--r-- 201 .gitignore
-rw-r--r-- 1108 LICENSE.txt
-rw-r--r-- 3237 README.md
drwxr-xr-x - bin
drwxr-xr-x - site_sample


CMless is a file based CMS intended for easy integration with version controlled, format agnostic content.

An example site might store each page as a Markdown file, with directories to define categories, the entire site using git for version and edit-access control. CMless can serve that content as a website.

The content for http://subgeniuskitty.com can be found in such a repository.

CMless is kept extremely simple with the intention of being easy to comprehend and modify. See the source code for examples demonstrating how to add a new piece of functionality.


Functions as minimal CMS. Runs http://subgeniuskitty.com.

Tested on Debian Linux and FreeBSD.


Installation - Debian Linux

Enable CGI scripts:

a2enmod cgid

Create and enable an Apache vhost.

vi /etc/apache2/sites-available/cmless.subgeniuskitty.com

<VirtualHost *:80>
        DocumentRoot "/srv/apache_vhosts/cmless.subgeniuskitty.com"
        ServerName cmless.subgeniuskitty.com
        ServerAdmin webmaster@subgeniuskitty.com
        ErrorLog /var/log/apache2/error_log.cmless.subgeniuskitty.com
        CustomLog /var/log/apache2/access_log.cmless.subgeniuskitty.com combined
        AddHandler cgi-script .py
        <Directory "/srv/apache_vhosts/cmless.subgeniuskitty.com">
                Options -ExecCGI -Indexes
                AllowOverride None
                Order allow,deny
                Allow from all
        <Directory "/srv/apache_vhosts/cmless.subgeniuskitty.com/bin">
                Options ExecCGI
                AllowOverride None
                Order allow,deny
                Allow from all
        RewriteEngine On
        RewriteRule (.*) /srv/apache_vhosts/cmless.subgeniuskitty.com/site/$1
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule .* /srv/apache_vhosts/cmless.subgeniuskitty.com/bin/cmless.py

a2ensite cmless.subgeniuskitty.com
systemctl reload apache2

Clone the CMless git repository into the Apache vhost directory.

cd /mnt/data/apache_vhosts
git clone git://git.subgeniuskitty.com/cmless/.git cmless.subgeniuskitty.com
chown -R www-data:www-data ./cmless.subgeniuskitty.com

Clone your content into the site/ folder. If you wish to use a different folder, edit the configuration options in bin/config.py accordingly. If this is your first CMless site, see the site_sample/ folder for an example site using Markdown.

cd /srv/apache_vhosts/cmless.subgeniuskitty.com
git clone git://git.subgeniuskitty.com/website_subgeniuskitty.com/.git site
chown -R www-data:www-data ./site

Install an appropriate document processor for your content and set the markup_processor configuration option in bin/config.py accordingly. Your markup engine should accept text via stdin and output HTML on stdout.

apt-get install discount

Edit bin/config.py and set all configuration options according to the steps taken during installation. Each option is commented inside the file.