Ir al contenido

Gestión de eventos con Mobilizon

Mobilizon es una herramienta diseñada para gestionar comunidades y eventos. Su objetivo es ayudar al mayor número posible de personas a liberarse del control y las rectricciones impuestas por grandes empresas.

El software de Mobilizon es de licencia libre, por lo que cualquiera puede alojar una instancia Mobilizon. Además, estas instancias pueden federarse entre sí.

Instalación¶

Mobilizon puede ser instalado de tres diferentes maneras:

Por cuestión de facilidad y rapidez, nos ocuparemos del segundo método.

Instalar como imagen Docker

Crear directorio

cd /opt
sudo mkdir mobilizon

Cambiar propietario

sudo chown -R USUARIO: mobilizon/
cd mobilizon

Generar dos claves aleatorias

openssl rand -base64 25
fRcnGM9kMQ3yRxR2rW89Jbw3KKyjqA6heA==

openssl rand -base64 25
wJP8JoK+ApyFOnBKaHs3vYXhdFgA4VVhMA==

Creamos el archivo oculto .env.

nano .env

Con el siguiente contenido:

# Database settings
POSTGRES_DB=mobilizon
POSTGRES_USER=mobilizon
POSTGRES_PASSWORD=CONTRASEÑA_DB

# Instance configuration
MOBILIZON_INSTANCE_REGISTRATIONS_OPEN=false
MOBILIZON_INSTANCE_NAME=eventos
MOBILIZON_INSTANCE_HOST=eventos.dominio.edu.ar
MOBILIZON_INSTANCE_PORT=4000

MOBILIZON_INSTANCE_SECRET_KEY_BASE=GENERA_NUEVA
MOBILIZON_INSTANCE_SECRET_KEY=GENERA_NUEVA

MOBILIZON_INSTANCE_EMAIL=contacto@eventos.dominio.edu.ar
MOBILIZON_REPLY_EMAIL=contacto@eventos.dominio.edu.ar

# Email settings
MOBILIZON_SMTP_SERVER=correo.dominio.edu.ar
MOBILIZON_SMTP_PORT=587
MOBILIZON_SMTP_HOSTNAME=correo.dominio.edu.ar
MOBILIZON_SMTP_USERNAME=no-responder@eventos.dominio.edu.ar
MOBILIZON_SMTP_PASSWORD='CONTRASEÑA_CORREO'
MOBILIZON_SMTP_SSL=false

No olvides reemplazar:

  • CONTRASEÑA_DB por la contraseña de la base de datos, la misma será creada al iniciar, así que selecciona una fuerte.
  • GENERA_NUEVA por las dos claves aleatorias generadas en el punto anterior, una en cada línea.
  • eventos.dominio.edu.ar por tu dominio o subdominio.
  • Los correos respectivos en MOBILIZON_INSTANCE_EMAIL y MOBILIZON_REPLY_EMAIL.
  • CONTRASEÑA_CORREO por la contraseña de conexión de tu cuenta de correo y el resto de los valores de la sección Email settings para que correspondan con la configuración correcto del servicio de correo utilizado.

Creamos el archivo: docker-compose.yml

nano docker-compose.yml

Con el siguiente contenido:

version: "3"

services:
  mobilizon:
    image: framasoft/mobilizon
    environment:
      - MOBILIZON_INSTANCE_NAME
      - MOBILIZON_INSTANCE_HOST
      - MOBILIZON_INSTANCE_PORT
      - MOBILIZON_INSTANCE_EMAIL
      - MOBILIZON_REPLY_EMAIL
      - MOBILIZON_ADMIN_EMAIL
      - MOBILIZON_INSTANCE_REGISTRATIONS_OPEN
      - MOBILIZON_DATABASE_USERNAME=${POSTGRES_USER}
      - MOBILIZON_DATABASE_PASSWORD=${POSTGRES_PASSWORD}
      - MOBILIZON_DATABASE_DBNAME=${POSTGRES_DB}
      - MOBILIZON_DATABASE_HOST=db
      - MOBILIZON_INSTANCE_SECRET_KEY_BASE
      - MOBILIZON_INSTANCE_SECRET_KEY
      - MOBILIZON_SMTP_SERVER
      - MOBILIZON_SMTP_HOSTNAME
      - MOBILIZON_SMTP_PORT
      - MOBILIZON_SMTP_SSL
      - MOBILIZON_SMTP_USERNAME
      - MOBILIZON_SMTP_PASSWORD
    volumes:
      - uploads:/var/lib/mobilizon/uploads
      # - ${PWD}/config.exs:/etc/mobilizon/config.exs:ro
      # - ${PWD}/GeoLite2-City.mmdb:/var/lib/mobilizon/geo_db/GeoLite2-City.mmdb
    ports:
      - "4000:4000"
    restart: always
    depends_on:
      - db

  db:
    image: postgis/postgis:15-3.4
    restart: always
    volumes:
      - data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB

volumes:
  uploads:
  data:

networks:
  default:
    ipam:
      driver: default

Iniciar el contenedor

IMPORTANTE: revisa todo dos veces antes de iniciarlo.

docker compose up -d

Debes de ver:

[+] Running 32/32
 ✔ db 17 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                  11.8s 
   ✔ 14726c8f7834 Pull complete                                                                              0.6s 
   ✔ 4d049703b56a Pull complete                                                                              0.4s 
   ✔ 8aff07e1ea08 Pull complete                                                                              0.4s 
   ✔ 89da0bc4d210 Pull complete                                                                              0.7s 
   ✔ 9a02c2deae73 Pull complete                                                                              0.8s 
   ✔ 0b0390468bd3 Pull complete                                                                              1.0s 
   ✔ ef10f7127c83 Pull complete                                                                              1.1s 
   ✔ 795a7af57502 Pull complete                                                                              1.2s 
   ✔ d33dab56bd45 Pull complete                                                                              2.0s 
   ✔ b1c74cefe232 Pull complete                                                                              1.5s 
   ✔ 07b97b5d68ea Pull complete                                                                              1.5s 
   ✔ bc6e714c77a2 Pull complete                                                                              1.8s 
   ✔ eab0ca22ea15 Pull complete                                                                              1.9s 
   ✔ c345e11533ee Pull complete                                                                              2.8s 
   ✔ 4f4fb700ef54 Pull complete                                                                              2.3s 
   ✔ b2ae31d845b7 Pull complete                                                                              2.4s 
   ✔ 54ce137be0cb Pull complete                                                                              2.6s 
 ✔ mobilizon 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                               27.9s 
   ✔ 31e352740f53 Pull complete                                                                              2.8s 
   ✔ 215d77d5679d Pull complete                                                                              4.6s 
   ✔ fe516c77773c Pull complete                                                                              3.4s 
   ✔ 2fb34f1ec22f Pull complete                                                                              3.2s 
   ✔ a9e3e4c56c0c Pull complete                                                                              3.5s 
   ✔ 29756300dc68 Pull complete                                                                              4.2s 
   ✔ 7ba82d3891b2 Pull complete                                                                              4.0s 
   ✔ 0b0590dfb358 Pull complete                                                                              8.0s 
   ✔ 0f6dd036580e Pull complete                                                                              9.0s 
   ✔ b7b6eb2f3f39 Pull complete                                                                              5.2s 
   ✔ 8de39a4c13a2 Pull complete                                                                              7.0s 
   ✔ 859215f6547c Pull complete                                                                              7.6s 
   ✔ 02c20e8a443e Pull complete                                                                              8.2s 
[+] Running 5/5
 ✔ Network mobilizon_default        Created                                                                  0.1s 
 ✔ Volume "mobilizon_uploads"       Created                                                                  0.0s 
 ✔ Volume "mobilizon_data"          Created                                                                  0.0s 
 ✔ Container mobilizon-db-1         Started                                                                  0.6s 
 ✔ Container mobilizon-mobilizon-1  Started                                                                  0.0s 

Verificar contenedores

docker container ls

Debes de ver:

CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                      NAMES
715d04cc1cdf   framasoft/mobilizon      "./docker-entrypoint…"   4 minutes ago   Up 4 minutes   4000->4000/tcp   mobilizon-mobilizon-1
edb406285150   postgis/postgis:15-3.4   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   5432/tcp                   mobilizon-db-1

Revisando el log

docker compose logs -f --tail 10

Debes de ver:

mobilizon-mobilizon-1  | 07:17:00.883 [info] == Running 20240307124253 Mobilizon.Repo.Migrations.CreateApplicationDeviceActivation.change/0 forward
mobilizon-mobilizon-1  | 07:17:00.883 [info] create table application_device_activation
mobilizon-mobilizon-1  | 07:17:00.888 [info] == Migrated 20240307124253 in 0.0s
mobilizon-db-1         | 
mobilizon-db-1         | PostgreSQL init process complete; ready for start up.
mobilizon-db-1         | 
mobilizon-db-1         | 2024-03-05 07:16:50.597 UTC [1] LOG:  starting PostgreSQL 15.4 (Debian 15.4-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
mobilizon-db-1         | 2024-03-05 07:16:50.597 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
mobilizon-db-1         | 2024-03-05 07:16:50.597 UTC [1] LOG:  listening on IPv6 address "::", port 5432
mobilizon-db-1         | 2024-03-05 07:16:50.599 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
mobilizon-db-1         | 2024-03-05 07:16:50.605 UTC [72] LOG:  database system was shut down at 2024-03-04 04:32:54 UTC
mobilizon-db-1         | 202$-03-05 07:16:50.612 UTC [1] LOG:  database system is ready to accept connections
mobilizon-mobilizon-1  | -- Starting!
mobilizon-mobilizon-1  | 07:18:04.897 [info] No tzdata release files found in custom data dir. Copying release file from tzdata priv dir.
mobilizon-mobilizon-1  | 07:18:04.985 [info] Source for database :city not found: "/var/lib/mobilizon/geo_db/GeoLite2-City.mmdb"
mobilizon-mobilizon-1  | 07:18:05.058 [info] Running Mobilizon.Web.Endpoint with cowboy 2.10.0 at 0.0.0.0:4000 (http)
mobilizon-mobilizon-1  | 07:18:05.074 [info] Access Mobilizon.Web.Endpoint at https://eventos.dominio.edu.ar
mobilizon-mobilizon-1  | 07:18:08.609 [info] tzdata release in place is from a file last modified Fri, 22 Oct 2021 02:20:47 GMT. Release file on server was last modified Tue, 28 Mar 2023 20:25:39 GMT.
mobilizon-mobilizon-1  | 07:18:09.857 [info] Tzdata has updated the release from 2021e to 2023c

Presiona CTRL+C para terminar.

No continues si obtienes algún error.

Actualizar el servicio

Descarga la última imagen y actualice el servicio. Las migraciones se realizan automáticamente:

docker compose pull framasoft/mobilizon
docker compose up -d

Gestión de usuarios

Listar comandos disponibles

docker compose exec mobilizon mobilizon_ctl users

Crear nuevo usuario

docker compose exec mobilizon mobilizon_ctl users.new <correo electrónico> [<opciones>]

En este caso, añadiendo la opción –admin promoveríamos al usuario al rol de administrador.

Ver detalles de usuario

Muestra si el usuario ha confirmado su correo electrónico, si es moderador o administrador y sus perfiles.

docker compose exec mobilizon mobilizon_ctl users.show <correo electrónico>

Modificar usuario

docker compose exec mobilizon mobilizon_ctl users.modify <correo electrónico> [<opciones>]

Eliminar usuario

Elimina uno o varios usuarios de Mobilizon que coincidan con un criterio.

docker compose exec mobilizon mobilizon_ctl users.delete <correo electrónico|criterio> [<opciones>]

Limpiar usuarios no confirmados

Ejecuta manualmente la limpieza de usuarios no confirmados (y sus perfiles).

docker compose exec mobilizon mobilizon_ctl users.clean [<opciones>]

 

Para conocer todas las opciones de la gestión de usuarios, ver https://docs.joinmobilizon.org/administration/CLI%20tasks/manage_users/