Visit XENOBYTE.XYZ for more freeware [v1.0]
zenode.org

Cloning Zenode

Follow these steps to clone your very own zenode instance. It takes 10 minutes and all you need is a UNIX system.

This is the simplest and fastest way to install zenoda, the following system configuration is not necessarily the most secure one!

1. Install NGINX and PHP.

# For Arch based systems
$ sudo pacman -S nginx php php-fpm php-gd

2. Clone and configure the zenode repository

Both the webserver and the php-fpm daemon must have read & write permissions to the webroot folder (/var/web_server by default).

Make sure your user:group of choice is isolated from the rest of the system!

$ sudo mkdir /var/web_server
$ sudo chown -R user:group /var/web_server
$ sudo chmod -R 755 /var/web_server
$ git clone https://git.xenobyte.xyz/XENOBYTE/zenode/ /var/web_server/

3. Configure NGINX

Although zenode is developed primarily for NGINX, it will work with any webserver that honors the following rules:

  • ■ Supports TLSv1.2+ (for HTTPS)
  • ■ Supports fastcgi or equivalent (for PHP)
  • ■ Serves static content directly
  • ■ Everything else (including all HTTP errors) gets forwarded to app/index.php

The included NGINX virtual block template also comes (carefully!) preconfigured with added security features and optimizations. It's strongly adviced to mirror them in your server of choice.

  • ■ Redirects requests including the www. prefix to the base URL
  • ■ Uses secure HTTP headers policies by default
  • ■ Block requests to hidden static content (.image.png) and .db sqlite files
  • ■ Enables static content compression and caching

To proceed with NGINX, change ownership of its configuration directory to the webmaster user and create the folders for ssl and virtual block files.

$ sudo chown -R user:group /etc/nginx/
$ sudo chown -R 755 /etc/nginx
$ mkdir /etc/nginx/ssl
$ mkdir /etc/nginx/sites-enabled
$ mkdir /etc/nginx/sites-available
$ mv /var/web_server/zenode/static/text_files/zenode_vsb /etc/nginx/sites-available/zenode
$ sudo ln -s /etc/nginx/sites-available/nginx_zenode_vsb /etc/nginx/sites-enabled
# Check for NGINX error
$ sudo nginx -t
$ sudo systemctl restart nginx.service

Edit the included vbs file (zenode/tools/zenode.vsb).

# Point to your SSL files
ssl_certificate_key /etc/nginx/ssl/ssl_key
ssl_certificate /etc/nginx/ssl/ssl_cert

Set the NGINX user and group.

# The user and group should match the ones assigned to php-fpm
user username group;

Add the hostname zenode.localhost to the /etc/hosts lookup table

127.0.0.1 localhost zenode.localhost

4. Configure PHP

Edit the /etc/php/php.ini file

# Will be referenced by zenode! Defaults to 'SID'
session.name = SID
# Uncomment the following extensions
extension=gd
extension=pdo_sqlite
# Enable session strict mode to prevent recycled / user provided sids
session.use_strict_mode = 1

Set the PHP-FPM user and group in /etc/php/php-fpm.d/www.conf.

# The user and group should match the ones assigned to php-fpm
user = user
group = group
# The user and group should match the ones assigned to php-fpm
listen.owner = user
listen.group = group

Start the PHP-FPM process

$ sudo systemctl start php-fpm.service

5. Test zenode

Open up your web browser of choice and request zenode.localhost. You should now have a running instance of zenode!

Check the quickstart guide to start customizing your (ze)node.


// Zenode is free software maintained by its community
If you'd like to help the project out, consider making a donation or contributing to the development.