Mobilizon
Submit a tool

Goal

To use an event promotion and organization service that is an alternative to the commercial corporate platforms (Facebook, Meet-Up, EventBrite), that is federated, respects privacy and uses free and open source and group management software that can be adapted for specific use, but still compatible with open standards.

Description of the tool

Mobilizon is a free and open source software with focus on event organization and group management, developed by small but prominent French tech cooperative Framasoft with the aim to offer a free alternative to the commercial platforms (like Facebook, MeetUp, EventBrite). Mobilizon made it possible to federate events, comments and participations and future features will also be federated, when appropriate. Rather than creating a single gate federation offers a diversity of entrances that can be linked, while keeping each own specificity.

Some of the features were also inspired by needs of activists and some of the features known from Facebook UX were intentionally avoided: "...Mobilizon had to move away from the Facebook-style social features that exploit our ego and motor the attention economy...there are no likes, incentives to create the narrative of your life on a wall, and no echo chambers to these frustrating dialogues where everyone shouts and no one listens."

Mobilizon offers unique features: 
creation and management of multiple identities on the same account;
register for an event by choosing one of your identities; add to calendar;
reporting problematic content to the moderation of the instance;
manually approve (or deny) requests to participate;
management of reports of problematic content.

Steps of application

Pre-requisites
  • A Linux machine with root access
  • A domain name (or subdomain) for the Mobilizon server, e.g. your-mobilizon-domain.com
  • An SMTP server to deliver emails
Dependencies

Mobilizon requires Elixir, NodeJS and PostgreSQL among other things. Prefer to install Elixir and NodeJS from their official repositories instead of your distribution's packages.

Recommended versions:

  • Elixir 1.8+
  • NodeJS 12+
  • PostgreSQL 11+

Important

Installing dependencies depends on the system you're using. Follow the steps of the dependencies guide and come back to this page when done.

Setup

We're going to use a dedicated mobilizon user with /home/mobilizon home:

sudo adduser --disabled-login mobilizon


Tip

On FreeBSD

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


Note

When asked for Shall I install Hex? or Shall I install rebar3?, hit the enter key to confirm.

Then compile these dependencies and Mobilizon (this can take a few minutes, and can output all kinds of warnings, such as depreciation issues)

MIX_ENV=prod 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).

Warning

Building front-end can consume up to 2048MB of RAM by default. If it's too much or not sufficient for your setup, you can adjust the maximum memory used by prefixing the command with the following option:

NODE_BUILD_MEMORY=1024


yarn run build


Let's go back to the main directory

cd ../


Configuration

Mobilizon provides a command line tool to generate configuration

MIX_ENV=prod 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.

Database setup

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

Exit running as the mobilizon user (as it shouldn't have root/sudo rights) and execute in the /home/mobilizon/live directory:

sudo -u postgres psql -f setup_db.psql


It should output something like:

CREATE ROLE

CREATE DATABASE

You are now connected to database "mobilizon_prod" as user "postgres".

CREATE EXTENSION

CREATE EXTENSION

CREATE EXTENSION


Let's get back to our mobilizon user:

sudo -i -u mobilizon

cd live


Warning

When it's done, don't forget to remove the setup_db.psql file.

Database Migration

Run database migrations:

MIX_ENV=prod mix ecto.migrate


Note

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.

Services

We can quit using the mobilizon user again.

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

sudo 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


You should see something like this:

Running Mobilizon.Web.Endpoint with cowboy 2.8.0 at :::4000 (http)

Access Mobilizon.Web.Endpoint at https://your-mobilizon-domain.com


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/mobilizon.conf and adapt it to your own configuration.

Test the configuration with sudo nginx -t and reload nginx with sudo systemctl reload nginx.

Let's Encrypt

The nginx configuration template handles the HTTP-01 challenge with the webroot plugin:

sudo mkdir /var/www/certbot


Run certbot with (don't forget to adapt the command)

sudo certbot certonly --rsa-key-size 4096 --webroot -w /var/www/certbot/ --email your@email.com --agree-tos --text --renew-hook "/usr/sbin/nginx -s reload" -d your-mobilizon-domain.com


Then adapt the nginx configuration /etc/nginx/sites-available/mobilizon.conf by uncommenting certificate paths and removing obsolete blocks.

Finish by testing the configuration with sudo nginx -t and reloading nginx with sudo systemctl reload nginx.

You should now be able to load https://your-mobilizon-domain.com inside your browser.

Creating your first user

Login back as the mobilizon system user:

sudo -i -u mobilizon

cd live


Create a new user:

MIX_ENV=prod mix mobilizon.users.new "your@email.com" --admin --password "Y0urP4ssw0rd"


Danger

Don't forget to prefix the command with an empty space so that the chosen password isn't kept in your shell history.

Tip

You can ignore the --password option and Mobilizon will generate one for you.

See the full documentation for this command.

You may now login with your credentials and discover Mobilizon. Feel free to explore configuration documentation as well.

Suggested tasks

Configure emails

The default Mobilizon configuration assumes a local SMTP server is available on the same server. To tweak this for your own setup, see this page.

Configure 3rd-party auth

Mobilizon can use LDAP or OAuth-based login providers (Facebook, Google, etc.) to help register or login users. Configuration can be found here.

Configure geocoders

This will allow the address autocomplete field to provide addresses when editing an event. The default value uses OpenStreetMap's Nominatim provider but you can change it to the provider of your choice.

Note

When using the default OpenStreetMap's Nominatim provider, autocomplete is disabled and using the service implies that you accept their Usage Policy.

Geolocation databases

Mobilizon can use geolocation from MMDB format data from sources like MaxMind GeoIP databases or db-ip.com databases. This allows showing events happening near the user's location.

You will need to download the City database and put it into priv/data/GeoLite2-City.mmdb. Finish by restarting the mobilizon service.

Mobilizon will only show a warning at startup if the database is missing, but it isn't required.

For more information: https://docs.joinmobilizon.org/administration/

Background

Framasoft is a relatively small but prominent technology collective focused on open source software and content. Created as a network in November 2001 by Alexis Kauffmann, Paul Lunetta, and Georges Silva. Since 2014, it has been supported by a nonprofit organization of the same name based in Lyon, France. Mainly focused on free software valorisation, it is divided into three main branches of activities based upon a collaborative model: promotion, dissemination and development of free software, and enrichment of the free culture movement and online services. Most of the first decade Framasoft was focused on popular education and promotion campaigns for FLOSS and open content, slowly developing its own resources and services for the non-profit sector.

In October 2014 they launched the "De-google-ify Internet" campaign (“Dégooglisons Internet” in French). The association has launched its own social media too: Framasphère. In March 2015, a new functionality was added to Framapad to avoid flooding servers with unused text.
In the meantime, the association developed a picture sharing tool (FramaPic) and an URL shortener (Huit.re / frama.link). Framasoft also took the opportunity to start their own code body hosting called Forge. In May 2015, Framasoft started a new Web search engine service (Framabee), in order to continue demonstrating that alternatives to Google are possible. In October 2016, phase 2 of the De-google-ify campaign started and lead into the release of 6 new services:Framalistes: managing mailing listsFramanotes: dealing with all sorts of contents Framaforms: managing formsFramatalk: audio/video chatFramagenda: creating public or private calendars.

In 2019, they started developing Mobilizon, a project to allow communities to organise events without depending on tech giants’ platforms. On May 14, 2019, the Framasoft association launched a fundraising campaign to verify the interest of the wider community and secure the finances for the project. At the end of the campaign, on July 10, 2019, the objective was reached with more than thousand contributors and more than €58,000 raised. A test platform was put online on October 15, 2019, to allow supporters of the project to discover the tool and give first impressions with most of the UX features, but still without federation. The first version was planned for the first half of 2020. On June 22, 2020, at the time of the beta3 release, version 1.0 was pushed back to autumn 2020. On October 27th 2020, the first version was officially launched. In November version 1.02. was released.In January 2021 over 60 active Mobilizon instances were recorded in the registry.

Context of origin

Visual representation

Suggestions

MOBILIZON should be picked up by every cultural organization or group that organizes events and needs a free and open alternative to commercial event promotion and management platforms. Software is new and ideally it should be further developed and documented for non-tech users to be able to operate it with minimum instructional video training.

Credits

FRAMASOFT.org