404 Tech Support

Installing open source status page software Cachet on CentOS 7

Maintaining uptime of your core IT services is an important part of internal customer service. Even with heavy investments into infrastructure, there will inevitably be downtime. Communicating that outage, planned or not, is also important to customer service. A status page can provide a consistent location for your users to check. Informed users will find if an issue is already known or if they need to report the problem. This should allow the technical talent to focus on returning the service to operational status rather than answering the question of an ETA a dozen times.

For that reason, I began looking into status page software that would provide the service and templates for reported outages. I setup Cachet, a free and open source software that provides the status page service. While it has some rough edges, it’s certainly usable and would be an improvement over Twitter, emails, or whatever hodge-podge way is chosen to notify users of an outage that day.

RTFM

The documentation lacked a little in details for somebody that doesn’t do this every day but I was able to stumble through it and am writing them up here.

I setup a 1024MB VPS using Vultr running CentOS 7. Once the server was setup, I updated my domain’s DNS to point to the server and SSH change the root password through SSH.

The first step to getting in-line with the Cachet Installation documentation was to get the server ready with the pre-requisites:

You need at least PHP >= 5.5, Composer and the following PHP extensions installed to run Cachet:

php-mbstring
php-apcu
php-xml
php-pdo
php-intl
tokenizer
OpenSSL
A database driver for your DB, such as php-mysql, php-pgsql etc
We also advise using Git to download and pull down updates.

So, we need to install Apache, PHP, Composer, Git, MySQL, and PHP extensions on CentOS 7 before we even get to Cachet.

Prerequisites

We basically need a simple LAMP stack with some additional specifics. SSH into the server.

Update packages

yum update

Install Apache (you could use nginx if you would prefer)

yum install httpd

Set Apache to start automatically with the server

systemctl start httpd.service
 systemctl enable httpd.service

Allow http/https traffic through the firewall

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Install MariaDB (MySQL replacement)

yum install mariadb-server mariadb

Set MariaDB to start automatically with the server

systemctl start mariadb
systemctl enable mariadb.service

Run a script that helps prompt for a secure MariaDB configuration, including setting the root SQL password

sudo mysql_secure_installation

Install PHP and the extensions (and getting the right versions)

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php56w php-mysql php-mbstring php-apcu php-xml php-pdo php-intl tokenizer OpenSSL
yum install yum-plugin-replace
yum replace --enablerepo=webtatic-testing php-common --replace-with=php56w-common

Install Composer

curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer

Install Git

yum install git

Setup

Login to MariaDB

mysql -u root -p
Provide root MySQL password when prompted

Create the database

CREATE DATABASE cachet;

Create the database user

CREATE USER 'statusdbuser'@'localhost' IDENTIFIED BY 'p@$$w0rd!';

Give the database user permissions to the database

GRANT ALL ON cachet.* TO 'statusdbuser'@'localhost' IDENTIFIED BY 'password';

Enable the new permissions

FLUSH PRIVILEGES;
exit

Download Cachet to your server

cd /var/www
git clone https://github.com/cachethq/Cachet.git
cd Cachet
git tag -l
git checkout v1.2.1

(Replace v1.2.1 in the last line with whatever the latest version is from the Cachet releases on GitHub)

Configure Cachet – Uncomment the relevant lines and configure the database and other settings like email

cp .env.example .env
nano .env

Run Composer

composer install --no-dev -o

Migrate the databases and generate a security key

php artisan migrate
php artisan key:generate

Add the Virtual Host

nano /etc/httpd/conf.d/vhost.conf

Add the following to the configuration file you just opened:

<VirtualHost *:80>
 ServerName compstatus.com # Or whatever you want to use
 ServerAlias compstatus.com # Make this the same as ServerName
 DocumentRoot "/var/www/Cachet/public"
 <Directory "/var/www/Cachet/public">
 Require all granted # Used by Apache 2.4
 Options Indexes FollowSymLinks
 AllowOverride All
 Order allow,deny
 Allow from all
 </Directory>
</VirtualHost>

Restart Apache

apachectl restart

We should be all done and be able to visit our site in a browser and run through the first-run configuration but I found myself receiving a blank page when visiting the site, so some permissions had to be adjusted.

chmod -R gu+w storage
chmod -R guo+w storage

You should now be able to visit the site and complete the simple first-run configuration. Follow the prompts to configure the site basics and create your first admin user. After that, you can login to the site dashboard at yoururl.com/dashboard and finish the site setup so that it works for your organization. You can add users, service components, customize colors and CSS, and enter incidents and scheduled maintenance for those service components.

You can see how your site could look from the screenshot below or by visiting the Cachet demo page.