How to Install and Set Up Monica

By Arslan Ud Din Shafiq, Alibaba Cloud Tech Share Author. Tech Share is Alibaba Cloud’s incentive program to encourage the sharing of technical knowledge and best practices within the cloud community.

Monica is an easy-to-use, open source web based personal management system. Developed in Laravel PHP framework, Monica allows you to organize, manage and track the interactions with your contacts in a centralized place. You can also easily import or export your contacts by using Monica’s REST API.

In this tutorial, we will be installing and setting up Monica using Alibaba Cloud Elastic Compute Service (ECS) with Ubuntu 16.04 installed.


  1. You must have Alibaba Cloud Elastic Compute Service (ECS) activated and verified your valid payment method. If you are a new user, you can get a free account in your Alibaba Cloud account. If you don’t know about how to setup your ECS instance, you can refer to this tutorial or quick-start guide. Your ECS instance must have at least 1.5GB RAM and 1 Core processor.
  2. A domain name registered from Alibaba Cloud. If you have already registered a domain from Alibaba Cloud or any other host, you can update its domain nameserver records.
  3. Domain name must be pointed to your Alibaba Cloud ECS’s IP address
  4. Access to VNC console in your Alibaba Cloud or SSH client installed in your PC
  5. Set up your server’s hostname and create user with root privileges.

Update Your Ubuntu System

Before proceeding with installation of any kind of package, use the following command to update your Ubuntu system. To execute this command, remember to login from non-root user with sudo privileges. After execution of this command, you will be prompted to Is this ok? Type ‘y’ and hit Enter.

# sudo apt update && sudo apt upgrade

Install build-essential

To install build-essential execute the command.

# sudo apt-get install build-essential

Install Git

You will need to install Git on your server as well as local machine. To install and configure Git, follow the steps below.

Step 1: To install Git execute the command.

# sudo apt-get install git

Step 2 (Optional): Execute the commands below to configure Git by providing your name and valid email address so that commit messages may contain your correct information.

# git config --global "Aareez"
# git config --global ""

Install libpng-dev

To install libpng-dev execute the command.

# sudo apt-get install libpng-dev

Install PHP

Monica requires installation of PHP 7.1 or newer version of PHP. In this tutorial, you will install PHP 7.2. To install PHP 7.2, execute the following steps.

First, you will need to install python software properties and software properties common. To do so, execute the command below.

# sudo apt-get install software-properties-common python-software-properties

You will need to add repository for newer versions of PHP. To do so, execute the commands below.

# sudo add-apt-repository ppa:ondrej/php

Next, update the system to refresh the available repositories. To do so, execute the command for updating Ubuntu system.

# sudo apt update

Now install PHP 7.2. To install PHP 7.2, execute the following command.

# sudo apt install -y php7.2

Install Required PHP Extensions

Monica requires the following PHP extensions:

  1. php7.2-cli
  2. php7.2-fpm
  3. php7.2-mbstring
  4. php7.2-common
  5. php7.2-xml
  6. php7.2-mysql
  7. php7.2-curl
  8. php7.2-zip
  9. php7.2-intl

To install the above extensions of PHP, execute the following command.

# sudo apt install -y php7.2-cli php7.2-fpm php7.2-common php7.2-mbstring php7.2-xml php7.2-mysql php7.2-curl php7.2-zip php7.2-intl

To check PHP installation, you can execute the following command to check the installed PHP version.

# php --version

Install MySQL

As Monica is developed in Laravel PHP framework, Laravel supports MySQL, MS SQL, SQLite, MariaDB, Redis and PostgreSQL databases. In this tutorial, you will install MySQL server for Monica database. Follow the steps below to install MySQL.

Install MySQL using the following command.

# sudo apt install -y mysql-server

Run the following command to enhance security of MySQL server and set password for the root user.

# sudo mysql_secure_installation

Connect to the MySQL shell as root user using the command below and enter your password.

# sudo mysql -u root -p
CREATE USER 'monica'@'localhost' IDENTIFIED BY '654321Ab';
GRANT ALL PRIVILEGES ON monicadb.* TO monica@localhost;

Install Nginx Server

Before starting installation of Nginx server, you will need to stop apache service. To do so, execute the command below.

# sudo systemctl stop apache2

Execute the command below to install Nginx server.

# sudo apt-get install nginx

Start Nginx server by executing command below.

# sudo systemctl start nginx

To check installation of Nginx server, you can execute the following command.

# sudo nginx -v

Create Nginx configuration file for Monica. Execute the following command, a file will be opened in nano text editor.

# sudo nano /etc/nginx/sites-available/monica.conf

Copy and paste the following code and save the file.

server {
listen 80;
listen [::]:80;
root /var/www/monica/public;
    index index.php;
    location / {
try_files $uri $uri/ /index.php?$args;
    location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

Create symlink of newly created file’s configuration to enabled-sites directory. To do so, execute the command below.

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

Execute the following command to test the syntax of Nginx configuration file.

# sudo nginx -t

Execute the following command to reload the updated configurations.

# sudo systemctl reload nginx

Monica requires 10.x version of Node.JS. To install it, add the source and then install Node.JS. To do so, execute the following commands.

# curl -sL | sudo -E bash -
# sudo apt-get install nodejs

To verify successful installation of node and node package manager, run the following command.

# node -v && npm -v

Install Composer

Laravel requires composer. As Monica is Laravel based application, to install composer, follow the steps below.

Execute the following command to fetch the installer for composer setup.

# php -r "copy('', 'composer-setup.php');"

Execute the following command to verify the installer for composer.

# php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Execute the following commands to install and configure composer.

# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# sudo mv composer.phar /usr/local/bin/composer

To verify installation of composer, execute the following command.

# composer --version

Install and Configure Monica

Navigate to root document directory.

# cd /var/www

Clone the files of Monica from Git repository by executing commands below.

# sudo git clone

Navigate to /var/www/monica

# cd monica
# sudo git checkout tags/v2.1.1

Change the ownership of newly created directory to your username.

# sudo chown -R aareez:aareez /var/www/monica

Execute the following command to create .env (environment variables file). This will be your own version of environmental variables.

# cp .env.example .env

Execute the following command to open the created .env file in nano text editor and update the values of environmental variables like DB_USERNAME and DB_PASSWORD and save the file.

# sudo nano .env

Install all required packages using composer by executing the command.

# composer install --no-interaction --no-suggest --no-dev --ignore-platform-reqs

Compile CSS and JS assets by running the command below.

# npm run production

Execute the following command to generate an application key that will correct APP_KEY to correct value automatically.

# php artisan key:generate

Run the following command, it will run migrations, seed database and symlink folders.

# php artisan setup:production

After execution of the above command, you will see the following output screen.

Change the ownership of monica folder and assign Nginx user so that Nginx can access files of your application.

# sudo chown -R www-data:www-data /var/www/monica

You can access Monica via ECS IP address or your domain name. In my case, I have setup domain. After accessing Monica, you will be redirected to sign up page to create account as shown below.

After registering your first account, you will see the following screen which is dashboard of Monica.

Congratulations! You can now use Monica: Personal Relationship Management System on your Alibaba Cloud Elastic Compute Service (ECS) instance.