You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Verita84 e1c9ab1bc0 fix 2 months ago
assets fix 2 months ago
images fix 2 months ago
Dockerfile fix 2 months ago fix 2 months ago
docker-compose.yml fix 2 months ago
index.template fix 2 months ago
main.js fix 2 months ago
mysql.js fix 2 months ago
package.json fix 2 months ago


This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see


A simple and customizable website platform written in Node.js. It requires a MySQL backend.


  • Easy management of Blogs or Pages
  • Comments
  • Configurable CSS
  • Easily upload your site's logo
  • Configurable Title and Footer

Screenshots from a Sample Website

Screenshot-1 Screenshot-2

How to run in Docker

You can spin up the application with a test database with the docker-compose.yml file.

docker-compose up -d
(Succulent has a delay start of 30 seconds to make sure the database is up)

When complete, you can login with your browser to .

The default username and password is admin

Customizing Succulent

The Website Path

By default, the path for accessing succulent is /website. This can be changed via enviornment variable or by modifying the docker-compose.yaml file.

     - SITE_PATH=/website

Each time Succulent is started, it will create a new index.html file with the correct website path.

Here are the Nginx rules that I use for Succulet:

location /website {                                                                                                                                        
rewrite ^/website/(.*)$ /$1 break;
    proxy_pass         http://website;

location ~ /website/(updateCredentials|moderate|comments|submitedit|edit|assets/|create|view|auth|body|upload|images|logo|conf|delete|post) {
rewrite ^/(.*)$ /$1 break;
        proxy_pass http://website;