Co-authored-by: Alexis Saettler <alexis@saettler.org>
7.4 KiB
Installing Monica on Debian
Monica can run on Debian Buster.
Prerequisites
Monica depends on the following:
- A Web server, like Apache httpd webserver
- Git
- PHP 8.1+
- Composer
- Node.js
- Yarn
- MySQL / MariaDB
An editor like vim or nano should be useful too.
Apache: Install Apache with:
sudo apt update
sudo apt install -y apache2
Git: Install Git with:
sudo apt install -y git
PHP:
If you are using Debian 10 or lower, PHP 8.1 is not available from the Debian project directly. Instead use the deb.sury.org package repository from Ondřej Surý, maintainer of the mainline Debian packages.
sudo apt install -y curl software-properties-common
curl -sSL https://packages.sury.org/php/apt.gpg | sudo tee /etc/apt/trusted.gpg.d/php-sury.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php-sury.list
sudo apt update
Install PHP 8.1 with these extensions:
- bcmath
- curl
- dom
- gd
- gmp
- iconv
- intl
- json
- mbstring
- mysqli
- opcache
- pdo_mysql
- redis
- sodium
- tokenizer
- xml
- zip
Run:
sudo apt install -y php8.1 php8.1-bcmath php8.1-curl php8.1-gd php8.1-gmp \
php8.1-intl php8.1-mbstring php8.1-mysql php8.1-redis php8.1-tokenizer php8.1-xml php8.1-zip
Composer: After you're done installing PHP, you'll need the Composer dependency manager.
curl -sSL https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin/ --filename=composer
Node.js: Install node.js with package manager.
curl -sSL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt install -y nodejs
Yarn: Install yarn with npm.
sudo npm install --global yarn
MariaDB: Install MariaDB. Note that this only installs the package, but does not setup Mysql. This is done later in the instructions:
sudo apt install -y mariadb-server
Installation steps
Once the softwares above are installed:
1. Clone the repository
You may install Monica by simply cloning the repository. Consider cloning the repository into any folder, example here in /var/www/monica directory:
cd /var/www/
sudo git clone https://github.com/monicahq/monica.git
You should check out a tagged version of Monica since main branch may not always be stable.
Find the latest official version on the release page
cd /var/www/monica
# Get latest tags from GitHub
sudo git fetch
# Clone the desired version
sudo git checkout tags/v2.18.0
2. Setup the database
First make the database a bit more secure.
sudo mysql_secure_installation
Next log in with the root account to configure the database.
sudo mysql -uroot -p
Create a database called 'monica'.
CREATE DATABASE monica CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
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;
exit
3. Configure Monica
cd /var/www/monica then run these steps with sudo:
cp .env.example .envto create your own version of all the environment variables needed for the project to work.- Update
.envto your specific needs- set
DB_USERNAMEandDB_PASSWORDwith the settings used behind. - configure a mailserver for registration & reminders to work correctly.
- set the
APP_ENVvariable toproduction,localis only used for the development version. Beware: settingAPP_ENVtoproductionwill force HTTPS. Skip this if you're running Monica locally.
- set
- Run
composer install --no-interaction --no-devto install all packages. - Run
yarn installto install frontend packages, thenyarn run productionto build the assets (js, css). - Run
php artisan key:generateto generate an application key. This will setAPP_KEYwith the right value automatically. - Run
php artisan setup:production -vto run the migrations, seed the database and symlink folders.- You can use
emailandpasswordparameter to setup a first account directly:php artisan setup:production --email=your@email.com --password=yourpassword -v
- You can use
- Optional: Setup the queues with Redis, Beanstalk or Amazon SQS: see optional instruction of generic installation
- Optional: Setup the access tokens to use the API follow optional instruction of generic installation
4. Configure cron job
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.
Run the crontab command:
sudo crontab -u www-data -e
Then, in the crontab editor window you just opened, paste the following at the end of the document:
* * * * * php /var/www/monica/artisan schedule:run >> /dev/null 2>&1
5. Configure Apache webserver
- Give proper permissions to the project directory by running:
sudo chown -R www-data:www-data /var/www/monica
sudo chmod -R 775 /var/www/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 nano text editor window you just opened, copy the following - swapping the **YOUR IP ADDRESS/DOMAIN** with your server's IP address/associated domain:
<VirtualHost *:80>
ServerName **YOUR IP ADDRESS/DOMAIN**
ServerAdmin webmaster@localhost
DocumentRoot /var/www/monica/public
<Directory /var/www/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 reload Apache. You can do that by running:
sudo a2dissite 000-default.conf
sudo a2ensite monica.conf
sudo systemctl reload apache2
Final step
The final step is to have fun with your newly created instance, which should be up and running to http://localhost.