--- author: Daniel A. Rodriguez date: 2024-03-06 --- # Gestión de eventos con Mobilizon ```{image} img/mobilizon-rose.jpg :align: right ``` 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: * [versión precompilada](https://docs.joinmobilizon.org/administration/install/release/) * [como imagen Docker](https://docs.joinmobilizon.org/administration/install/docker/) (autónoma o con `docker compose`) * [desde código fuente](https://docs.joinmobilizon.org/administration/install/source/) Por cuestión de facilidad y rapidez, nos ocuparemos del segundo método. ### Instalar como imagen Docker Crear directorio ```bash cd /opt mkdir mobilizon ``` Cambiar propietario ```bash chown -R USUARIO: mobilizon/ cd mobilizon ``` Generar dos claves aleatorias ```bash openssl rand -base64 25 fRcnGM9kMQ3yRxR2rW89Jbw3KKyjqA6heA== openssl rand -base64 25 wJP8JoK+ApyFOnBKaHs3vYXhdFgA4VVhMA== ``` Crear el archivo **.env** con el siguiente contenido: ```yaml # 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** con el siguiente contenido: ```yaml 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. ```bash docker compose up -d ``` Debes de ver: ```bash [+] 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 ```bash docker container ls ``` Debes de ver: ```bash 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 ```bash docker compose logs -f --tail 10 ``` Debes de ver: ```bash 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: ```bash docker compose pull framasoft/mobilizon docker compose up -d ``` ### Gestión de usuarios Listar comandos disponibles ```bash docker compose exec mobilizon mobilizon_ctl users ``` #### Crear nuevo usuario ```bash docker compose exec mobilizon mobilizon_ctl users.new [] ``` 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. ```bash docker compose exec mobilizon mobilizon_ctl users.show ``` #### Modificar usuario ```bash docker compose exec mobilizon mobilizon_ctl users.modify [] ``` #### Eliminar usuario Elimina uno o varios usuarios de Mobilizon que coincidan con un criterio. ```bash docker compose exec mobilizon mobilizon_ctl users.delete [] ``` #### Limpiar usuarios no confirmados Ejecuta manualmente la limpieza de usuarios no confirmados (y sus perfiles). ```bash docker compose exec mobilizon mobilizon_ctl users.clean [] ``` Para conocer todas las opciones de la gestión de usuarios, ver [https://docs.joinmobilizon.org/administration/CLI%20tasks/manage\_users/](https://docs.joinmobilizon.org/administration/CLI%20tasks/manage_users/)