I always struggle to reminder birthdate, or important date, even to my close ones. So I don’t even dare to remember the wedding anniversary of my sister.
Monica is an opensource, selfhosted (they have a paid instance if you don’t want the trouble to host it yourself) personal CRM. You can keep tracks in a centralized and quite clean, interface, of all your interactions (Phone calls, what you discuss about,..) and important date (Birthdate, wedding anniversary,…) or things (Gifts received or given for Christmas, etc…).
Monica is also multi-users and let you add notes to contact, records pets information,.. on top of the regular info (Phone number, address, in relation with,….). It also includes a journal to record your day.
A great tool to help you manage your social interactions 😉
The paid service is getting quite some traction (10,000+ users, 100,000 contacts, 100,000+ reminders set,…), so I’m glad to see the business model is still with opensource philosophy.
One of the next feature to come, as per their roadmap, is an Android app version!! This will clearly help to manage all our interactions!
Interested to install it, here is how to install Monica on your server using Debian. (Ubuntu should be similar).
You will need first to have a LAMP system (With Apache, PHP and MariaDB).
However Monica requires PHP7.1 at least. For Debian Stretch, those are not available. But you can get them in the testing.
1) Add PPA ondrej/php to get latest PHP version
This is optional if you can get PHP7.1 in your repo. To check, simply run:
sudo apt-cache policy php
and see if you have access to 7.1 or above. If not, run:
sudo apt install apt-transport-https lsb-release ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' sudo apt update
2) Install required packages
sudo apt install apache2 mariadb-server php php-mysql php-xml php-intl php-mbstring php-intl git curl
3) Clone the Git repository
sudo git clone https://github.com/monicahq/monica.git /var/www/monica
This will download around 40mb. Stay tuned.
4) Change permissions
To avoid permissions error, simply run:
sudo chown -R www-data:www-data /var/www/monica sudo chmod -R 777 /var/www/monica
5) Install NodeJS
They recommend the version 6. To install it, simply run:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs
6) Install composer
It will help you to install automatically the dependencies.
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
7) Create a database
I usually use PHPMyAdmin to do it directly.
Here are the key information:
Database name: monicadb
8) Configure Monica
Start first with composer:
cd /var/www/monica composer install
Then use the example configuration file to create your own:
cp .env.example .env nano .env
and configure the database section.
Then setup the APP_Key and configure the instance:
php artisan key:generate php artisan setup:production
and type yes, to continue.
You will need to setup a user (email) and password.
Once done, set up a crontab to run the scheduler.
sudo crontab -e
* * * * * sudo -u www-data php /var/www/monica/artisan schedule:run
9) Create a Virtualhost
Now, let’s create a dedicated Virtualhost, to access to your admin interface through monica.mydomain.tld
First, enable mod_rewrite
sudo a2enmod rewrite
Then create a vhost:
sudo nano /etc/apache2/sites-available/monica.conf
Here is mine:
<VirtualHost *:80> ServerAdmin firstname.lastname@example.org ServerName monica.freedif.org DocumentRoot /var/www/monica/public <Directory /> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /var/www/monica/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Once done, save and enable it:
sudo a2ensite monica
And simply reload apache:
sudo service apache2 reload
You should now have access to Monica directly by pointing to your URL.