Monica Personal Relationship Manager te installeren op CentOS 8

Monica is een open-source Personal Relationship Management (PRM) webapplicatie ontworpen om interacties met je dierbaren te organiseren. Zie het als een CRM (een populair hulpmiddel gebruikt door verkoopteams in het bedrijfsleven) voor je vrienden of familie. Met Monica kunnen mensen alles bijhouden wat belangrijk is voor hun vrienden en familie. Zoals de activiteiten die met hen gedaan worden. Wanneer je iemand voor het laatst hebt gebeld. Waarover je gepraat hebt. Het helpt je de naam en de leeftijd van de kinderen te onthouden. Het kan je er ook aan herinneren iemand te bellen die je al een tijdje niet hebt gesproken. Deze tutorial gaat over de installatie van Monica op CentOS 8.

Kenmerken

  • Contacten toevoegen en beheren
  • Relaties tussen contacten definiëren
  • Herinneringen
  • Automatische herinneringen voor verjaardagen
  • In contact blijven met een contact door op een bepaald interval herinneringen te sturen
  • Beheer van schulden
  • Mogelijkheid om notities toe te voegen aan een contact
  • Mogelijkheid om aan te geven hoe je iemand hebt ontmoet
  • Beheer van activiteiten die met een contact zijn gedaan
  • Beheer van taken
  • Beheer van geschenken
  • Beheer van adressen en alle verschillende manieren om contact met iemand op te nemen
  • Beheer van soorten contactpersonen
  • Beheer van huisdieren
  • Basis dagboek
  • Mogelijkheid om aan te geven hoe de dag is verlopen
  • Uploaden van documenten en foto’s
  • Exporteren en importeren van gegevens
  • Contacten exporteren als vCard
  • Mogelijkheid om aangepaste geslachten in te stellen
  • Mogelijkheid om aangepaste activiteitstypen te definiëren
  • Mogelijkheid tot favoriete contacten
  • Bijhouden van gesprekken via sociale media of SMS
  • Meerdere gebruikers
  • Labels om contacten te organiseren
  • Mogelijkheid om te definiëren welke sectie op het contactblad moet verschijnen
  • Meerdere valuta’s
  • Meerdere talen
  • Een API die de meeste gegevens dekt

Vereisten

  • CentOS 8
  • Git
  • NPM (Node Package Manager)
  • PHP versie 7.1 of nieuwer
  • MySQL
  • HTTP-server met PHP-ondersteuning (bijv.: Apache, Nginx, Caddy…)
  • Composer
  • Optioneel: Redis of Beanstalk

Voorwaarden

  • Een CentOS 8 besturingssysteem.
  • Een niet-root gebruiker met sudo privileges.

Eerste stappen

Controleer je CentOS versie:

cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)

Stel de tijdzone in:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

Werk je besturingssysteempakketten (software) bij. Dit is een belangrijke eerste stap omdat het ervoor zorgt dat je de laatste updates en beveiligingsfixes hebt voor de standaard softwarepakketten van je besturingssysteem:

sudo yum update -y

Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het CentOS besturingssysteem:

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release gcc-c++ make libpng-devel

Stap 1 – Installeer PHP

Installeer PHP, evenals de vereiste PHP-extensies:

sudo yum install -y php php-cli php-fpm php-common php-mbstring php-xml php-mysqlnd php-curl php-zip php-intl php-bcmath php-gd php-json php-gmp

Om PHP gecompileerd in modules te tonen, kun je uitvoeren:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Controleer de PHP-versie:

php --version

# PHP 7.2.11-1-(cli) (built: Oct 26 2019 14:14:18) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.11-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

PHP-FPM service starten en inschakelen:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Stap 2 – Installeer acme.sh client en verkrijg een Let’s Encrypt certificaat ( optioneel )

Je site beveiligen met HTTPS is niet noodzakelijk, maar het is een goede gewoonte om je siteverkeer te beveiligen. Om een TLS certificaat te verkrijgen van Let’s Encrypt gebruiken we acme.sh client. Acme.sh is een eenvoudige UNIX-shell software voor het verkrijgen van TLS-certificaten van Let’s Encrypt zonder enige afhankelijkheid.

Download en installeer acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Controleer de versie van acme.sh:

acme.sh --version
# v2.8.2

Verkrijg RSA en ECC/ECDSA certificaten voor je domein/hostnaam:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Als je valse certificaten wilt om te testen, kun je --staging vlag toevoegen aan bovenstaande commando’s.

Na het uitvoeren van bovenstaande commando’s staan je certificaten en sleutels in:

  • Voor RSA: /home/username/example.com directory.
  • Voor ECC/ECDSA: /home/username/example.com_ecc directory.

Om je uitgegeven certificaten op te sommen kun je uitvoeren:

acme.sh --list

Maak een directory aan om je certs in op te slaan. We zullen de /etc/letsencrypt directory gebruiken.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Installeer/kopieer certificaten naar /etc/letsencrypt directory.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Alle certificaten worden elke 60 dagen automatisch vernieuwd.

Na het verkrijgen van de certificaten verlaat je de root gebruiker en keer je terug naar de gewone sudo gebruiker:

exit

Stap 3 – Installeer MariaDB en maak een database aan voor Monica

Installeer MariaDB database server:

sudo yum install -y mariadb-server

Controleer de MariaDB versie:

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

Start en activeer de MariaDB service:

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Voer mysql_secure installation script om de beveiliging van MariaDB te verbeteren en het wachtwoord voor de MariaDB root gebruiker:

sudo mysql_secure_installation

Beantwoord elk van de vragen:

Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_password
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

Maak verbinding met MariaDB shell als de root gebruiker:

sudo mysql -u root -p
# Enter password

Maak een lege MariaDB database en gebruiker voor Monica en onthoud de credentials:

mariadb> CREATE DATABASE dbname;
mariadb> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mariadb> FLUSH PRIVILEGES;

Sluit MariaDB af:

mariadb> exit

Vervang dbname,  username en password door jouw namen.

Stap 4 – Installeer en configureer NGINX

Monica werkt prima met de meeste grote webserver software met PHP ondersteuning, maar in deze gids gebruiken we NGINX. Voel je vrij om Apache te gebruiken als je dat liever hebt dan NGINX.

Installeer NGINX:

sudo yum install -y nginx

Controleer de versie van NGINX:

sudo nginx -v
# nginx version: nginx/1.14.2

Voer het commando sudo vim /etc/nginx/conf.d/monica.conf uit en configureer NGINX voor Monica.

server {
  listen 80;
  listen 443 ssl;

  server_name example.com;
  root /var/www/monica/public/;
  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECC
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
  index index.php;
  charset utf-8;
  
  location ^~ /storage {
    deny all;  
  }
  
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~* \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
  }
}

Test de NGINX configuratie:

sudo nginx -t

Herlaad NGINX:

sudo systemctl reload nginx.service

Stap 5 – Installeer Node.js en npm

Installeer Node.js:

curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs

Controleer Node.js en npm versies:

node -v && npm -v
# v12.13.1
# 6.12.1

Stap 6 – Installeer Composer

Installeer Composer:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

Controleer de Composer versie:

composer --version
# Composer version 1.9.1 2019-11-01 17:20:17

Stap 7 – Installeer en configureer Monica

Maak een lege document root map aan waar Monica geïnstalleerd moet worden:

sudo mkdir -p /var/www/monica

Navigeer naar de document root map:

cd /var/www/monica

Wijzig het eigendom van de map /var/www/monica naar gebruiker johndoe:

Vergeet niet “johndoe” te vervangen door je gebruikersnaam.

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

Kloon de Monica repository ernaar toe:

git clone https://github.com/monicahq/monica.git .
git checkout tags/v2.15.2

OPMERKING: Check uit naar een gelabelde versie van Monica omdat de master branch niet altijd stabiel is. Zoek de laatste officiële versie op de releases pagina op Github en update deze naar bovenstaand versienummer naar de laatste release.

Om je versie te maken van alle omgevingsvariabelen die nodig zijn om het project te laten werken voer je uit:

cp .env.example .env

Update .env naar jouw specifieke behoeften. Vergeet niet om DB_USERNAME en DB_PASSWORD met de achter gebruikte instellingen. Je zult een mailserver moeten configureren om registratie en herinneringen correct te laten werken.

Draai composer install --no-interaction --no-suggest --no-dev om alle pakketten te installeren.

Voer php artisan key:generate uit om een applicatiesleutel te genereren. Deze zalAPP_KEY automatisch met de juiste waarde instellen.

Voer php artisan setup:production -v uit om de migraties uit te voeren, de database en symlink mappen te zaaien.

Stel de juiste eigendom en rechten in:

sudo chown -R nginx:nginx /var/www/monica
sudo chmod -R 775 /var/www/monica/storage

Voer sudo vim /etc/php-fpm.d/www.conf uit en stel gebruiker en groep in op nginx. Aanvankelijk wordt deze ingesteld op gebruiker en groep apache.

sudo vim /etc/php-fpm.d/www.conf

Herstart php-fpm.service:

sudo systemctl restart php-fpm.service

Stap 8 – Voltooi de Monica installatie

Open nu je webbrowser en typ de URL http://example.com. Je wordt doorgestuurd naar de volgende pagina:

Maak een account aan

Vul je e-mailadres, naam en wachtwoord in. Klik dan op de knop Registreren. Op de volgende pagina zou je het Monica dashboard moeten zien:

Monica PRM login