!!! info "Docker"
Docker production installation is not yet supported. See [issue #352](https://framagit.org/framasoft/mobilizon/issues/352).
- A Linux machine with root access
- A domain name (or subdomain) for the Mobilizon server, e.g.
- An SMTP server to deliver emails
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.
We're going to use a dedicated
mobilizon user with
sudo adduser --disabled-login mobilizon
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
git clone https://framagit.org/framasoft/mobilizon live && cd live
Install Elixir dependencies
Then compile these dependencies and Mobilizon (this can take a few minutes)
Go into the
Finally, we can build the front-end (this can take a few seconds)
yarn run build
Let's go back to the main directory
Mobilizon provides a command line tool to generate configuration
mix mobilizon.instance gen
This will ask you questions about your setup and your instance to generate a
prod.secret.exs file in the
config/ folder, and a
setup_db.psql file to setup the database.
setup_db.psql file contains SQL instructions to create a PostgreSQL user and database with the chosen credentials and add the required extensions to the Mobilizon database.
sudo -u postgres psql -f setup_db.psql
When it's done, don't forget to remove the `setup_db.psql` file.
Run database migrations:
MIX_ENV=prod mix ecto.migrate
Note the `MIX_ENV=prod` environment variable prefix in front of the command. You will have to use it for each `mix` command from now on.
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.
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.
Copy the file from
sudo cp support/nginx/mobilizon.conf /etc/nginx/sites-available
Then symlink the file into the
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.
You will need to download the City database and put it into
Mobilizon will only show a warning at startup if the database is missing, but it isn't required.