mobilizon/support/guides/install/install.md

2.7 KiB

Install

Dependencies

Follow the steps of the dependencies guide

Database

Create the production database and a mobilizon user inside PostgreSQL:

sudo -u postgres createuser -P mobilizon
sudo -u postgres createdb -O mobilizon mobilizon_prod

Then enable extensions Mobilizon needs:

sudo -u postgres psql -c "CREATE EXTENSION postgis;" mobilizon_prod
sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" mobilizon_prod
sudo -u postgres psql -c "CREATE EXTENSION unaccent;" mobilizon_prod

Mobilizon user

Create a mobilizon user with /home/mobilizon home:

sudo adduser --disabled-login mobilizon
sudo -i -u mobilizon

On FreeBSD

sudo pw useradd -n mobilizon -d /home/mobilizon -s /usr/local/bin/bash -m
sudo passwd mobilizon

You can now fetch the code with git:

git clone https://framagit.org/framasoft/mobilizon live && cd live

Configuration

Backend

Install Elixir dependencies

mix deps.get

Configure your instance with

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.

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.

Front-end

Go into the js/ directory

cd js

and install the Javascript dependencies

yarn install

Finally, build the front-end with

yarn run build

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 Elixir 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.