Login to your VPS via SSH

ssh user@myVPS

Update the system and install necessary packages

[user]$ sudo yum -y upgrade
[user]$ sudo yum install git curl

Install MariaDB

MariaDB 5.5 is shipped in the default CentOS 7 repository, to install it just run:

[user]$ sudo yum install mariadb-server

To start the MariaDB service and enable it to start on boot, execute the following commands:

[user]$ sudo systemctl start mariadb.service
[user]$ sudo systemctl enable mariadb.service

Run the following command to secure your installation:

[user]$ sudo mysql_secure_installation

Next, we need to create a database for our CachetHQ instance.

[user]$ mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE cachet;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cachet.* TO 'cachetuser'@'localhost' IDENTIFIED BY 'cachetuser_passwd';
MariaDB [(none)]> \q

Install PHP and Nginx

Nginx is not available in the default CentOS 7 repository so we will use the official Nginx repository:

[user]$ sudo rpm -UVh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[user]$ sudo yum -y install nginx

Enable the EPEL repository:

[user]$ sudo yum install epel-release

CentOS 7 ships with PHP version 5.4, to be able to install the latest version of PHP, version 5.6 we will enable the Webtatic repository:

[user]$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Install PHP 5.6 and all nessesary extensions:

[user]$ sudo yum install php56w-cli php56w-process php56w-mcrypt php56w-mbstring php56w-common php56w-fpm php56w-xml php56w-opcache php56w-pecl-apcu php56w-pdo php56w-mysqlnd

Install Composer

Composer is a dependency manager for PHP with which you can install packages. Composer will pull in all the required libraries and dependencies you need for your project.

[user]$ curl -sS https://getcomposer.org/installer | php
[user]$ sudo mv composer.phar /usr/local/bin/composer

Install Node Gulp and Bower

We need Gulp and Bower to build the assets.

[user]$ sudo yum install -y nodejs npm
[user]$ sudo npm install -g bower
[user]$ sudo npm install -g gulp

Install CachetHQ

Create a root directory for your application.

[user]$ mkdir -p ~/CachetHQ

Clone the project repository from GitHub:

[user]$ git clone https://github.com/cachethq/Cachet.git ~/CachetHQ
[user]$ cd  ~/CachetHQ

Install all dependencies:

[user]$ composer install --no-dev -o

Copy the .env.example file to .env

[user]$ cp .env.example .env

generate and set the application key:

[user]$ php artisan key:generate

and edit the appropriate values:

[user]$ vim .env




Run database migrations and seed the database with sample data:

[user]$ php artisan migrate
[user]$ php artisan db:seed

Build assets:

[user]$ npm install
[user]$ bower install
[user]$ gulp       

Configure Nginx and PHP

Create a new PHP-FPM pool for your user:

[user]$ sudo vim /etc/php-fpm.d/your_user.conf
user = your_user  
group = your_user  
listen = /var/run/php-fpm/your_user.sock  
listen.owner = your_user
listen.group = your_user  
listen.mode = 0666  
pm = ondemand  
pm.max_children = 5  
pm.process_idle_timeout = 10s;  
pm.max_requests = 200  
chdir = /  

Do not forget to change your_user with your username.

Restart PHP-FPM

[user]$ sudo systemctl restart php-fpm.service

Generate ssl certificate:

[user]$ sudo mkdir -p /etc/nginx/ssl
[user]$ cd /etc/nginx/ssl
[user]$ sudo openssl genrsa -des3 -passout pass:x -out cachet.pass.key 2048
[user]$ sudo openssl rsa -passin pass:x -in cachet.pass.key -out cachet.key
[user]$ sudo rm cachet.pass.key
[user]$ sudo openssl req -new -key cachet.key -out cachet.csr
[user]$ sudo openssl x509 -req -days 365 -in cachet.csr -signkey cachet.key -out cachet.crt

Next, create a new Nginx server block:

[user]$ sudo vim /etc/nginx/sites-available/CachetHQ.conf
server {
    listen      443 default;
    server_name CachetHQ;

    ssl on;
    ssl_certificate     /etc/nginx/ssl/cachet.crt;
    ssl_certificate_key /etc/nginx/ssl/cachet.key;
    ssl_session_timeout 5m;

    ssl_ciphers               'AES128+EECDH:AES128+EDH:!aNULL';
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root /home/your_user/CachetHQ/public;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/cachet.access.log;
    error_log   /var/log/nginx/cachet.error.log;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/your_user.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;

    location ~ /\.ht {
        deny all;

server {
    listen      80;
    server_name CachetHQ;

    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;

Do not forget to change your_user with your username.

Finally, restart nginx:

[user]$ sudo systemctl restart nginx.service

That’s it. You have successfully installed CachetHQ on your Centos 7 VPS. If you have not change the default user and password before seeding, you can login with ‘test@test.com’ and ‘test123’.

For more information about CachetHQ ,please refer to the CachetHQ website.

in ScriptsServer