Installation And Configuration Of  RainLoop Webmail Client With Nginx On Ubuntu 14.04 

Version 1.0
Author: Srijan Kishore

This document describes how to install and configure Rainloop on Ubuntu 14.04. We will use nginx as web server. Rainloop is a popular free Open Source Web Application primarily written in PHP. It offers users a swift and contemporary web interface for accessing emails on a majority of commonly used domain mail providers such as Outlook, Yahoo, and Gmail, in addition to local mail servers. Rainloop also doubles up as a Mail User Agent (MUA) by accessing domain mail via IMAP/ SMTP protocols. This tutorial explains the process of installing Rainloop Webmail on an Ubuntu 14.04 Virtual Private Server using Nginx and MariaDB.


1 Preliminary Note

This tutorial is based on Ubuntu 14.04 server, so you should set up a basic Ubuntu 14.04 server installation before you continue with this tutorial. The system should have a static IP address. I use 192.168.0.100 as my IP address in this tutorial and server1.example.com as the hostname.

 

2 Installation of Mariadb

This method provides the options for Contact feature in Rainloop. Rainloop installation requires specific Mariadb, here I will be installing Mariadb-10.0.12 as follows:

apt-get -y update && apt-get -y upgrade
apt-get install python-software-properties curl

We will first download the release key associated with the Mariadb :

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu trusty main'
apt-get -y update
echo -e "Package: *\nPin: origin ftp.osuosl.org\nPin-Priority: 1000" | tee /etc/apt/preferences.d/mariadb

apt-get install mariadb-server

New password for the MariaDB "root" user: <--mariadbpassword
Repeat password for the MariaDB "root" user: <--mariadbpassword

Now we will create the database required for the Rainloop:

mysql -uroot -p

In Mariadb prompt we will enter Rainloop details as database=rainloopdb, user=rainloopuser and password=rainlooppassword;

create database rainloopdb;
GRANT ALL PRIVILEGES ON rainloopdb.* TO 'rainloopuser'@'localhost' IDENTIFIED BY 'rainlooppassword';
flush privileges;
quit

3 Installing PHP and Nginx

This step requires users to install PHP and Nginx,

apt-get install nginx php5-fpm  php5-mysql php5-mcrypt php5-cli php5-curl php5-sqlite

4 Installing and configuring Rainloop

Next, we must create a root directory for our web site, in addition to deploying the most recent version of the application, as shown below:

mkdir -p /var/www/rainloop/{public_html,logs}
cd /var/www/rainloop/public_html/
curl -s http://repository.rainloop.net/installer.php | php

[email protected]:/var/www/rainloop/public_html# curl -s http://repository.rainloop.net/installer.php | php
#!/usr/bin/env php


       [RainLoop Webmail Installer]


 * Connecting to repository ...
 * Downloading package ...
 * Complete downloading!
 * Installing package ...
 * Complete installing!

 * [Success] Installation is finished!

[email protected]:/var/www/rainloop/public_html#

Now we will create the rainloop configuration file and add the entries like explained below:

vi /etc/nginx/sites-available/rainloop

Give the entries like this:

server {
    server_name rainloop;
    listen 80;
    root /var/www/rainloop/public_html;
    access_log /var/www/rainloop/logs/access.log;
    error_log /var/www/rainloop/logs/error.log;
    index index.php;

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

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_keep_conn on;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

    location ^~ /data {
      deny all;
    }

}


Now, we will symlink it and, subsequently restart the server, as shown below:

ln -s /etc/nginx/sites-available/rainloop /etc/nginx/sites-enabled/rainloop

Restart the NGINX service:

service nginx restart

The Rainloop must have appropriate permissions, as follows:

chown -R www-data: /var/www/rainloop/public_html/

Now we can access the administrator panel at http://192.168.0.100/?admin, user=admin and Password=12345



Put the credentials:



This will be your default welcome screen:


Share this page:

Suggested articles

4 Comment(s)

Add comment

Comments

By: Frank

Only Shows Welcome to Nginx?

By: John

Its the Nginx configuration. You have to input the hostname (and/or FQDN) of your server. He sort of skipped-over it, using rainloop instead of what he specified earlier on (e.g. server1.domain.com). So specify as:server_name <insert hostname, fqdn, and other names separated by spaces here>;

Note: no brackets (the < and >), and ALWAYS end with ";"

By: ception

I would also suggest to use/set up an encrypted connection for services like these, see letsencrypt.

By: Dan

Thank you for the tutorial!

I have successfully installed rainloop using the instructions above and the very helpful tip from John (thanks for that). Forive my noob question, but what are the steps to now install TLS certs?

 

Thanks for the help!