CSYCMS - CSYBER SYSTEMS CMS
CSYCMS is a Fast, Simple, and Flexible, file-based content management system, knowledge base and static site generator for nodejs. It uses static Markdown files to serve the content which are pulled from public/private repos in github, bitcket, gitlab or any other git repository management service. It runs services that enables it to auto update itself and the content it serves. It follows similar principles to other flat-file CMS platforms, and allows you to use the structure of content files used in the most popular flat file cms but in nodejs. In addition to this, it allows you to host several sites in one instance (installation) of it, and allows you to search across as many of your sites as you please. See more features.
Visit http://learn.csycms.csymapp.com to see a demo and get started!
The underlying architecture of CSYCMS is designed to use well-established and best-in-class technologies. Some of these key technologies include:
- Markdown: for easy content creation
- Hogan Templating: for powerful control of the user interface
- Microservices to make deployments of multiple sites more stable
If you decide to go further with csycms, then please also learn how to pronouce it well. In declaring and defining the word, we intended that it should be pronouced as would
psy CMS if that
psy was from words such as
Table of Contents
- From GitHub
- Common Features
- Unique Features
- Other Advantages
- Security issues
You will need a server to install and test or use csycms. Although you can use your local computer as this server, you will need a server hosted somewhere else for production. You can check out the cheap upcloud servers with a month of free trial or any other that you know.
Although this is optional, it is good if have a domain name of your own so you can use it instead of the IP of your server.
You will need to install nodejs in your server. If you experience any problems with this, you can see how to install nodejs.
Supported Node Versions:
You will also need to install a web server in your server such as Nginx, Apache, etc. We recommend using Nginx.
This is for features which have been deprecated. And you are not going to use old code, are you? But if you decide to install it, then you may also have to fix killall-command-not-found
You will also need to setup ssh with all the keys for accessing repos (if you use any ssh remote, or if any of the repos of your sites is private). An installation script is availed to help you with creating the keys. But if it fails to create the ssh keys for your git repo, you can see how to create one.
These are the options to get CSYCMS: (We see only one option for now. If you'd like to go any other way of installing, then you'll have to go it alone).
We have created an installation script which you can use to install CSYCMS.
cd /tmp wget https://raw.githubusercontent.com/csymapp/csycms/master/Install/installCsycms.sh chmod +x installCsycms.sh ./installCsycms.sh
Then follow the installation instructions as directed by the script.
You will have to edit some configurations
That csycms can compare with wordpress & co, we do not pretend. But it is flat file and they are not. And that csycms can compare with grav we do not pretend either. But it is nodejs and it is not. And with csycms you get extra features by which reasonable justification is found for its use and development.
- Markdown for easy content creation
- Different themes for different files
- Several sites in a single installation (Like in shared hosting), making maintenance very easy.
- Search across multiple sites
- Auto-update of itself, the sites and the themes.
- Pulls sites content from github/gitlab/bitbucket, etc.
- Microservices (not in the scrictest sense of the word) to make deployments of multiple sites more stable
- Very easy to learn.
You will need to do a bit of configuration before you can successfully use CSYCMS. You will need to edit the
.env file and a
system.config.js file for each site defined in
.env. Each of these files have examples with the required parameters. You can check
.env.example whose contents are copied to
.env upon installation. And
system.config.example which is copied for each new site registered.
SITES="csycms|3000|https://github.com/csymapp/csycms-learn.git" # list of sites
SITES is a comma separated list of sites.
An entry for a single site has in order:
- site name
- port on which to server it
- the repo in which the site files are found
These parameters are separated by a
|. To add another site, create for it its own configuration line. And add the line to
SITES=, separating it from the last line by a comma.
CSYCMSDOCSREPO=https://github.com/csymapp/csycms-learn.git # repo where csycms documentation is.
You may not have to do anything to this.
THEMESREPOfirstname.lastname@example.org:csymapp/csycms-themes.git # repo where csycms themes are
Please leave also this as it is, unless you know what you are doing.
UPDATEINTERVAL=5 # update interval in minutes
The period for which you'd like the system to check for update for itself and for all the sites.
You can change these values while setting up the system for the first time or at any other time. Just remember to
systemctl restart csycms.service every time you make any changes to
.env except for the changes made during the installation.
You will also need to make changes to all
config/*. Please be sure especially to change
domain(it is just a wrong naming which we will change later). By domain we mean the base url without the protocol. eg
site. This should be the same as the site name given in
site_space. This is used to defined sites whose content can be searched together.
search_scope. The value for this is either
global. It defines where only the content for the current site is searched during a search performed on the site or the content for all the sites in the
Once you have followed the quickStart guide, please also look at the detailed
We appreciate any contribution to CSYCMS, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the Contributing guide for more guidance on this topic.
- Generating meta data
- Replace lunr with elasticlunr
- Highlighting search phrase in all results
- Nginx configuration