Learn How To Install RainLoop Webmail on Debian 9

February 20, 2019

Table of Contents

If you are using a different system, please check our other tutorials.

RainLoop is a simple, modern and fast web-based email client. RainLoop source code is hosted on Github. This guide will show you how to install RainLoop on a fresh Debian 9 IT Web Services instance.

Requirements

  • Nginx
  • MariaDB
  • PHP version 5.4 or greater with the following extensions:
    • cURL
    • iconv
    • json
    • libxml
    • dom
    • openssl
    • DateTime
    • PCRE
    • SPL
    • PDO (optional)

Check the Debian version.

lsb_release -ds
# Debian GNU/Linux 9.4 (stretch)

Ensure that your system is up to date.

apt update && apt upgrade -y

Install necessary packages.

apt install -y sudo dirmngr wget curl vim

Create a new non-root user account with sudo access and switch to it.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

NOTE: Replace johndoe with your username.

Set up the timezone.

sudo dpkg-reconfigure tzdata

Install PHP, necessary PHP extensions, MariaDB and Nginx

Download and install PHP 7.0 and the necessary extensions.

sudo apt install -y php7.0 php7.0-cli php7.0-fpm php7.0-curl php7.0-json php7.0-mbstring php7.0-mysql php7.0-pgsql php7.0-sqlite3 php7.0-common php7.0-xml

Check the version.

php --version

# PHP 7.0.27-0+deb9u1 (cli) (built: Jan  5 2018 13:51:52) ( NTS )
# Copyright (c) 1997-2017 The PHP Group
# Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
#     with Zend OPcache v7.0.27-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

Install MariaDB.

sudo apt install -y mariadb-server

Check the version.

mysql --version
# mysql  Ver 15.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Run the mysql_secure_installation script to improve the security of your MariaDB installation.

sudo mysql_secure_installation

Log into MariaDB as the root user.

sudo mysql -u root -p
# Enter password:

Create a new MariaDB database and user, and remember the credentials.

CREATE DATABASE dbname;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON 'dbname'.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Install Nginx.

sudo apt install -y nginx

Check the version.

sudo nginx -v
# nginx version: nginx/1.10.3

Configure Nginx for RainLoop. Run sudo vim /etc/nginx/sites-available/rainloop.conf and add the following configuration.

server {

  listen 80;

  server_name example.com;
  root /var/www/rainloop;

  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 fastcgi_params;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  location ~ /.ht {
    deny all;
  }

  location ^~ /data {
     deny all;
  }

}

Activate the new rainloop.conf configuration by linking the file to the sites-enabled directory.

sudo ln -s /etc/nginx/sites-available/rainloop.conf /etc/nginx/sites-enabled/

Test the configuration.

sudo nginx -t

Reload Nginx.

sudo systemctl reload nginx.service

Install RainLoop

Create a document root directory.

sudo mkdir -p /var/www/rainloop

Change the ownership of the /var/www/rainloop directory to johndoe.

sudo chown -R johndoe:johndoe /var/www/rainloop

Install unzip.

sudo apt install -y unzip

Download the latest release of RainLoop and unzip it.

cd /var/www/rainloop
wget http://www.rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d /var/www/rainloop
rm rainloop-latest.zip

Change the ownership of the /var/www/rainloop directory to www-data.

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

Navigate to http://example.com/?admin in your favorite browser and login to configure RainLoop webmail. The default login name is admin and the password is 12345.

Need help?

Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!