Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2.9 KiB
Install
Pre-requisites
- A Linux machine with root access
- A domain name (or subdomain) for the Mobilizon server, e.g.
example.net
- An SMTP server to deliver emails
!!! tip You can also install Mobilizon with Docker.
Dependencies
Mobilizon requires Elixir, NodeJS and PostgreSQL among other things.
Installing dependencies depends on the system you're using. Follow the steps of the dependencies guide.
Setup
We're going to use a dedicated mobilizon
user with /home/mobilizon
home:
sudo adduser --disabled-login mobilizon
!!! tip
On FreeBSD
``` bash
sudo pw useradd -n mobilizon -d /home/mobilizon -s /usr/local/bin/bash -m
sudo passwd mobilizon
```
Then let's connect as this user:
sudo -i -u mobilizon
Let's start by cloning the repository in a directory named live
:
git clone https://framagit.org/framasoft/mobilizon live && cd live
Installing dependencies
Install Elixir dependencies
mix deps.get
Then compile these dependencies and Mobilizon (this can take a few minutes)
mix compile
Go into the js/
directory
cd js
and install the Javascript dependencies
yarn install
Finally, we can build the front-end (this can take a few seconds)
yarn run build
Let's go back to the main directory
cd ../
Configuration
Mobilizon provides a command line tool to generate configuration
mix mobilizon.instance gen
This will ask you questions about your instance and generate a .env.prod
file.
Migration
Run database migrations: mix ecto.migrate
. You will have to do this again after most updates.
!!! tip If some migrations fail, it probably means you're not using a recent enough version of PostgreSQL, or that you haven't installed the required extensions.
Services
Systemd
Copy the support/systemd/mobilizon.service
to /etc/systemd/system
.
sudo cp support/systemd/mobilizon.service /etc/systemd/system/
Reload Systemd to detect your new file
sudo systemctl daemon-reload
And enable the service
systemctl enable --now mobilizon.service
It will run Mobilizon and enable startup on boot. You can follow the logs with
sudo journalctl -fu mobilizon.service
The Mobilizon server runs on port 4000 on the local interface only, so you need to add a reverse-proxy.
Reverse proxy
Nginx
Copy the file from support/nginx/mobilizon.conf
to /etc/nginx/sites-available
.
sudo cp support/nginx/mobilizon.conf /etc/nginx/sites-available
Then symlink the file into the /etc/nginx/sites-enabled
directory.
sudo ln -s /etc/nginx/sites-available/mobilizon.conf /etc/nginx/sites-enabled/
Edit the file /etc/nginx/sites-available
and adapt it to your own configuration.
Test the configuration with sudo nginx -t
and reload nginx with systemctl reload nginx
.