How to Install Monica Personal Relationship Manager on Ubuntu 18.04 LTS

Monica is a free, open source web-based Personal Relationship Management software written in the Laravel framework. It is used to keep track of all the important details about your friends and family. You can easily add and manage contacts, define relationships between contacts, set auto reminders for birthdays using Monica. You can also track conversations made on social media or SMS using Monica. Monica has an ability to define what section should appear on the contact sheet.

In this tutorial, we will learn how to install Monica PRM on Ubuntu 18.04 server.

Requirements

  • A server running Ubuntu 18.04.
  • A root password is set up on your server.

Getting Started

First, you will need to update your system with the latest version. You can do it with the following command:

apt-get update -y
apt-get upgrade -y

Once your system is updated, restart the system to apply these changes.

Install Nginx, MariaDB and PHP

First, you will need to install Nginx, MariaDB server, PHP and other PHP modules to your server. You can install all of them by running the following command:

apt-get install nginx mariadb-server php7.2 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 git wget unzip -y

Once all the packages are installed, you can proceed to the Next step.

Configure MariaDB

By default, MariaDB installation is not secured, so you will need to secure it first. You can secure it with the following command:

mysql_secure_installation
    Enter current password for root (enter for none):
    Set root password? [Y/n]: N
    Remove anonymous users? [Y/n]: Y
    Disallow root login remotely? [Y/n]: Y
    Remove test database and access to it? [Y/n]:  Y
    Reload privilege tables now? [Y/n]:  Y

Once MariaDB is secured, log in to MariaDB shell with the following command:

mysql -u root -p

Enter your root password. Then, create a database and user for Monica with the following command:

MariaDB [(none)]> create database monica;
MariaDB [(none)]> create user [email protected] identified by 'password';

Next, grant all the privileges to the Monica with the following command:

MariaDB [(none)]> GRANT ALL ON monica.* TO 'monica'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Next, flush the privileges and exit from the MariaDB shell with the following command:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Install Composer and Node.j

Next, you will need to install Composer to your system. Composer is a package manager for the PHP programming language. It is used to install all the required dependencies by PHP.

First, download the composer installer with the following command:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Next, you will need to verify the data integrity of the script by comparing the script SHA-384 hash with the latest installer hash found on the Composer Public Key page. You can do it with the following command:

HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

If everything will be fine, you should see the following output:

Installer verified

Next, install Composer with the following command:

php composer-setup.php --install-dir=/usr/local/bin --filename=composer

You should see the following output:

All settings correct for using Composer
Downloading...

Composer (version 1.8.4) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Next, install Node.js with the following command:

curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs

Install and configure Monica

Next, you will need to create a directory structure for Monica. You can do this with the following command:

mkdir -p /var/www/monica

Next, change the directory to monica and download the latest version of Monica with the following command:

cd /var/www/monica
git clone https://github.com/monicahq/monica.git .
git checkout tags/v2.1.1

You should see the following output:

Note: checking out 'tags/v2.1.1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b 

HEAD is now at dcfd15fa Update translations (#1324)

Next, you will need to rename the example environment variable file. You can do it with the following command:

mv .env.example .env

Next, open .env file and define your database and username:

nano .env

Make the following changes:

# Database information
# To keep this information secure, we urge you to change the default password
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
# You can use mysql unix socket if available, it overrides DB_HOST and DB_PORT values.
#DB_UNIX_SOCKET=/var/run/mysqld/mysqld.sock
DB_DATABASE=monica
DB_USERNAME=monica   
DB_PASSWORD=password

Next, install all the required PHP dependencies using Composer with the following command:

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

Next, install all front-end dependencies with the following command:

npm install

Next, compile the JS and CSS with the following command:

npm run production

Next, generate an application key with the following command:

php artisan key:generate

Next, migrate and seed the database with the following command:

php artisan setup:production

You should see the following output:

 You are about to setup and configure Monica. Do you wish to continue? (yes/no) [no]:
 > yes

 
-----------------------------
|
| Welcome to Monica v2.1.1
|
-----------------------------
| You can now register to the first account by opening the application:
| URL:      http://localhost
-----------------------------
Setup is done. Have fun.

Next, provide proper permissions to the monica directory with the following command:

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

Once you have done, you can proceed to the next step.

Configure Nginx for Monica

Next, you will need to create an Nginx virtual host file for Monica. You can do this by creating monica.conf file in/etc/nginx/sites-available/ directory with the following command:

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

Add the following lines:

server {
    listen 80;
    listen [::]:80;

    server_name example.com;
    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;
    }
}

Save and close the file. Then, restart Nginx service with the following command:

systemctl restart nginx

You can now check the status of Nginx with the following command:

systemctl status nginx

Output:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-02-15 10:03:53 UTC; 2min 12s ago
     Docs: man:nginx(8)
  Process: 22598 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=killed, signal=TERM)
  Process: 22612 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 22601 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 22613 (nginx)
    Tasks: 2 (limit: 1114)
   CGroup: /system.slice/nginx.service
           ??22613 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??22615 nginx: worker process

Feb 15 10:03:53 ubuntu1804 systemd[1]: nginx.service: Failed with result 'timeout'.
Feb 15 10:03:53 ubuntu1804 systemd[1]: Stopped A high performance web server and a reverse proxy server.
Feb 15 10:03:53 ubuntu1804 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 15 10:03:53 ubuntu1804 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Feb 15 10:03:53 ubuntu1804 systemd[1]: Started A high performance web server and a reverse proxy server.

Access Monica

Monica is now installed and configured. it's time to access the Monica web interface.

Now, open your web browser and type the URL http://example.com. You will be redirected to the following page:

Monica PRM installer

Provide your email address, name, and password. Then, click on the Register button. You should see the Monica dashboard in the following page:

Monica Personal Relationship Manager

Congratulations! you have successfully installed Monica on Ubuntu 18.04 server. You can now easily manage your contacts using Monica from a central location. feel free to ask me if you have any questions.

Share this page:

Suggested articles

4 Comment(s)

Add comment

Comments

By: Samuel Landete at: 2019-03-01 00:02:20

Thanks for sharing! I was very curious to try this. For me, on an almost new Ubuntu 18.04 installation, the command npm --install was giving me a permission error:

gyp ERR! stack Error: EACCES: permission denied, mkdir '/var/www/monica/node_modules/node-sass/.node-gyp'

it was fixed by running

 

sudo npm install --unsafe-perm=true --allow-root

(just in case someone has the same problem)

 

 

By: Ryan at: 2019-03-01 18:31:51

When I go through all the steps and have my machine up and running on Amazon EC2, I go to the public IP address and donr get the log-on page, but just the "Welcome to nginx!" page. What am I missing?

By: chuck at: 2019-03-20 19:49:38

All I get is the nginx screen, too

By: till at: 2019-03-21 06:27:39

Ensure that you have set your own domain name instead of example.com in the monica configuration file /etc/nginx/sites-available/monica.conf and use that domain name to access the monica installation on the server.