The official Monica installation uses mySQL as the database system and this is the only official system we support. While Laravel (our PHP framework) technically supports PostgreSQL and SQLite, we can't guarantee that it will work fine with Monica as we've never tested it. Feel free to read Laravel's documentation on that topic if you feel adventurous.
Monica depends on the following:
Git: Git should come pre-installed with your server. If it doesn't - use the installation instructions in the link.
PHP 7.1+: The required version of PHP for Monica is not included in the default apt package repository at the moment. One way to overcome this is to add a new PPA and pull the required version of PHP (along with all the neccessary modules) from there:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.1 php7.1-cli php7.1-common php7.1-json php7.1-opcache \
php7.1-mysql php7.1-mbstring php7.1-mcrypt php7.1-zip php7.1-fpm php7.1-bcmath \
php7.1-intl php7.1-simplexml php7.1-dom php7.1-curl php7.1-gdComposer: After you're done installing PHP, you'll need the Composer dependency manager.
sudo apt-get update
sudo apt-get install composer(or you can follow instruction in the link above)
Mysql: Note that this only installs the package, but does not setup MySQL. This is done later in the instructions:
sudo apt-get update
sudo apt-get install mysql-serverThe official Monica installation uses mySQL as the database system and this is the only official system we support. While Laravel technically supports PostgreSQL and SQLite, we can't guarantee that it will work fine with Monica as we've never tested it. Feel free to read Laravel's documentation on that topic if you feel adventurous.
Once the softwares above are installed:
You may install Monica by simply cloning the repository. In order for this to work with Apache, which is often pre-packaged with many common linux instances (DigitalOcean droplets are one example), you need to clone the repository in a specific folder:
cd /var/www/html
git clone https://github.com/monicahq/monica.gitYou should check out a tagged version of Monica since master branch may not always be stable. Find the latest official version on the release page:
cd /var/www/html/monica
git checkout tags/v2.2.1Log in with the root account to configure the database.
mysql -uroot -pCreate a database called 'monica'.
CREATE DATABASE monica;Create a user called 'monica' and its password 'strongpassword'.
CREATE USER 'monica'@'localhost' IDENTIFIED BY 'strongpassword';We have to authorize the new user on the monica db so that he is allowed to change the database.
GRANT ALL ON monica.* TO 'monica'@'localhost';And finally we apply the changes and exit the database.
FLUSH PRIVILEGES;
exitcd /var/www/html/monica then run these steps:
cp .env.example .envto create your own version of all the environment variables needed for the project to work.- Update
.envto your specific needs. Don't forget to setDB_USERNAMEandDB_PASSWORDwith the settings used behind. - Run
composer install --no-interaction --no-suggest --no-devto install all packages. - Run
php artisan key:generateto generate an application key. This will setAPP_KEYwith the right value automatically. - Run
php artisan setup:productionto run the migrations, seed the database and symlink folders. - Optional: run
php artisan passport:installto create the access tokens required for the API (Optional).
Monica requires some background processes to continuously run. The list of things Monica does in the background is described here.
Basically those crons are needed to send reminder emails and check if a new version is available.
To do this, setup a cron that runs every minute that triggers the following command php artisan schedule:run.
- Add a new cron file:
sudo nano /etc/cron.d/monica- Then, in the
nanotext editor window you just opened, copy the following:
* * * * * www-data /usr/bin/php /var/www/html/monica/artisan schedule:run
cd /var/www/html then follow these steps:
- Give proper permissions to the project directory by running:
sudo chgrp -R www-data monica
sudo chmod -R 775 monica/storage- Enable the rewrite module of the Apache webserver:
sudo a2enmod rewrite- Configure a new monica site in apache by doing:
sudo nano /etc/apache2/sites-available/monica.conf- Then, in the
nanotext editor window you just opened, copy the following - swapping theYOUR IP ADDRESS/DOMAINwith your server's IP address/associated domain:
<VirtualHost *:80>
ServerName YOUR IP ADDRESS/DOMAIN
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/monica/public
<Directory /var/www/html/monica/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>- Apply the new
.conffile and restart Apache. You can do that by running:
sudo a2dissite 000-default.conf
sudo a2ensite monica.conf
sudo service apache2 restartThe final step is to have fun with your newly created instance, which should be up and running to http://localhost.