From 2c9b9257f90d0b8dce90deeab327bc95a1cf9ce6 Mon Sep 17 00:00:00 2001 From: Simon C Date: Wed, 5 Jan 2022 00:41:26 +0100 Subject: [PATCH] feat(Mobilizon): Add new service --- geoip/.env | 9 ++++ geoip/docker-compose.yml | 22 ++++++++++ mobilizon/.env | 63 ++++++++++++++++++++++++++++ mobilizon/README.md | 22 ++++++++++ mobilizon/docker-compose.local.yml | 8 ++++ mobilizon/docker-compose.traefik.yml | 15 +++++++ mobilizon/docker-compose.yml | 47 +++++++++++++++++++++ 7 files changed, 186 insertions(+) create mode 100644 geoip/.env create mode 100644 geoip/docker-compose.yml create mode 100644 mobilizon/.env create mode 100644 mobilizon/README.md create mode 100644 mobilizon/docker-compose.local.yml create mode 100644 mobilizon/docker-compose.traefik.yml create mode 100644 mobilizon/docker-compose.yml diff --git a/geoip/.env b/geoip/.env new file mode 100644 index 0000000..608b262 --- /dev/null +++ b/geoip/.env @@ -0,0 +1,9 @@ +#GEOIP_VOLUME_NAME= +#GEOIP_IMAGE= +#GEOIP_CONTAINER_NAME= + +#GEOIP_EDITION_IDS= +GEOIP_LICENSE_KEY=blablabla +#GEOIP_DOWNLOAD_PATH= +#GEOIP_SCHEDULE= +#GEOIP_LOG_LEVEL= diff --git a/geoip/docker-compose.yml b/geoip/docker-compose.yml new file mode 100644 index 0000000..a9b25bb --- /dev/null +++ b/geoip/docker-compose.yml @@ -0,0 +1,22 @@ +--- + +version: "3.8" + +volumes: + geoip: + name: ${GEOIP_VOLUME_NAME:-geoip} + +services: + geoip: + image: ${GEOIP_IMAGE:-crazymax/geoip-updater:latest} + container_name: ${GEOIP_CONTAINER_NAME:-geoip-updater} + restart: always + volumes: + - geoip:${GEOIP_DOWNLOAD_PATH:-/data} + environment: + EDITION_IDS: ${GEOIP_EDITION_IDS:-GeoLite2-City} + LICENSE_KEY: ${GEOIP_LICENSE_KEY:-err} + DOWNLOAD_PATH: ${GEOIP_DOWNLOAD_PATH:-/data} + SCHEDULE: ${GEOIP_SCHEDULE:-0 0 * * 0} # Every Sunday + LOG_LEVEL: ${GEOIP_LOG_LEVEL:-info} + LOG_JSON: ${GEOIP_LOG_JSON:-false} diff --git a/mobilizon/.env b/mobilizon/.env new file mode 100644 index 0000000..6066034 --- /dev/null +++ b/mobilizon/.env @@ -0,0 +1,63 @@ +######## +# DOCKER + +#DOCKER_CONTEXT= +#DOCKER_HOST= +SERVICES_DIR=.. +COMPOSE_FILE=${SERVICES_DIR}/mobilizon/docker-compose.yml:${SERVICES_DIR}/mobilizon/docker-compose.local.yml:${SERVICES_DIR}/postgres/docker-compose.yml:${SERVICES_DIR}/geoip/docker-compose.yml +#COMPOSE_PROJECT_NAME= + +############ +## MOBILIZON + +MOBILIZON_INSTANCE_NAME="RésiLien - Mobilizon" +MOBILIZON_DOMAIN=mobilizon.lan +MOBILIZON_INSTANCE_PORT=4000 +MOBILIZON_INSTANCE_EMAIL=no-reply@mobilizon.lan + +MOBILIZON_REPLY_EMAIL=contact@mobilizon.lan +MOBILIZON_ADMIN_EMAIL=admin@mobilizon.lan +MOBILIZON_INSTANCE_REGISTRATIONS_OPEN=true + +MOBILIZON_INSTANCE_SECRET_KEY_BASE=changethis +MOBILIZON_INSTANCE_SECRET_KEY=changethis + +MOBILIZON_SMTP_SERVER=localhost +MOBILIZON_SMTP_HOSTNAME=localhost +MOBILIZON_SMTP_PORT=25 +MOBILIZON_SMTP_SSL=false +MOBILIZON_SMTP_USERNAME=noreply@mobilizon.lan +MOBILIZON_SMTP_PASSWORD=password + +#MOBILIZON_PUID= +#MOBILIZON_PGID= + +####### +# GEOIP + +#GEOIP_VOLUME_NAME= +#GEOIP_IMAGE= +#GEOIP_CONTAINER_NAME= + +#GEOIP_EDITION_IDS= +GEOIP_LICENSE_KEY= +#GEOIP_DOWNLOAD_PATH= +#GEOIP_SCHEDULE= +#GEOIP_LOG_LEVEL= + +########## +# POSTGRES + +POSTGRES_USER=mobilizon_user +POSTGRES_PASSWORD=mobilizon_password +POSTGRES_DB=mobilizon_db +#POSTGRES_CONTAINER_NAME=mobilizon_postgres +#POSTGRES_VOLUME_NAME=mobilizon_postgres +POSTGRES_IMAGE=kartoza/postgis:14-3.1 + +######### +# TRAEFIK + +#TRAEFIK_NETWORK_NAME= +#TRAEFIK_ROUTER_NAME= # Don't use char '.' +#TRAEFIK_ENTRYPOINTS= diff --git a/mobilizon/README.md b/mobilizon/README.md new file mode 100644 index 0000000..8519ff5 --- /dev/null +++ b/mobilizon/README.md @@ -0,0 +1,22 @@ +# Mobilizon + +> Mobilizon est un logiciel libre d'organisation d'évènements et de gestion de groupes (Meet-up) lancé en octobre 20203 par Framasoft pour proposer une alternative libre aux plateformes des GAFAM4,5 (Facebook, Meetup.com, EventBrite). +> +> -- [Wikipedia](https://fr.wikipedia.org/wiki/Mobilizon) + +On peut retrouver la documentation sur le [site officiel](https://docs.joinmobilizon.org/fr/). + +## Configuration + +Mobilizon utilise de la géolocalisation pour les évènements et du coup il faut : +- une base de données spécifique postgis qui se base sur Postgres. Actuellement la configuration Postgres est compatible il faut donc juste changer l'image et utiliser [kartoza/postgis](https://hub.docker.com/r/kartoza/postgis). +- un fichier GeoLite2 et pour cela il faut créer une clé pour accéder au service en ligne de [maxmind](https://www.maxmind.com), on utilise ensuite l'image docker [geoip-updater](https://crazymax.dev/geoip-updater/install/docker/) de crazymax pour automatiser le téléchargement et la mise à jour. + +## Liens + +- 🌐 Official website: https://joinmobilizon.org +- 🔢 Pick an instance https://mobilizon.org +- 💻 Source: https://framagit.org/framasoft/mobilizon +- 📜 Documentation https://docs.joinmobilizon.org +- [Dépôt GIT Docker Compose](https://framagit.org/framasoft/joinmobilizon/docker) +- [Docker Hub](https://hub.docker.com/r/framasoft/mobilizon) diff --git a/mobilizon/docker-compose.local.yml b/mobilizon/docker-compose.local.yml new file mode 100644 index 0000000..156150e --- /dev/null +++ b/mobilizon/docker-compose.local.yml @@ -0,0 +1,8 @@ +--- + +version: "3.8" + +services: + mobilizon: + ports: + - "4000:${MOBILIZON_PORT:-4000}" diff --git a/mobilizon/docker-compose.traefik.yml b/mobilizon/docker-compose.traefik.yml new file mode 100644 index 0000000..a37a013 --- /dev/null +++ b/mobilizon/docker-compose.traefik.yml @@ -0,0 +1,15 @@ +--- + +version: "3.8" + +networks: + default: + name: ${TRAEFIK_NETWORK_NAME:-traefik} + +services: + mobilizon: + labels: + - traefik.enable=true + - traefik.docker.network=${TRAEFIK_NETWORK_NAME:-traefik} + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-mobilizon}.rule=Host(`${MOBILIZON_DOMAIN:?err}`) + - traefik.http.routers.${TRAEFIK_ROUTER_NAME:-mobilizon}.entrypoints=${TRAEFIK_ENTRYPOINTS:-web} diff --git a/mobilizon/docker-compose.yml b/mobilizon/docker-compose.yml new file mode 100644 index 0000000..3f55e57 --- /dev/null +++ b/mobilizon/docker-compose.yml @@ -0,0 +1,47 @@ +--- + +version: "3.8" + +volumes: + mobilizon: + name: ${MOBILIZON_VOLUME_NAME:-mobilizon} + +services: + mobilizon: + container_name: ${MOBILIZON_CONTAINER_NAME:-mobilizon} + image: ${MOBILIZON_IMAGE:-framasoft/mobilizon:2.0.2} + restart: always + depends_on: + - postgres + - geoip + volumes: + - mobilizon:/var/lib/mobilizon/uploads + # - ${PWD}/config.exs:/etc/mobilizon/config.exs:ro + - geoip:/var/lib/mobilizon/geo_db + environment: + MOBILIZON_INSTANCE_NAME: ${MOBILIZON_INSTANCE_NAME} + MOBILIZON_INSTANCE_HOST: ${MOBILIZON_DOMAIN} + MOBILIZON_INSTANCE_PORT: ${MOBILIZON_INSTANCE_PORT} + MOBILIZON_INSTANCE_EMAIL: ${MOBILIZON_INSTANCE_EMAIL} + + MOBILIZON_REPLY_EMAIL: ${MOBILIZON_REPLY_EMAIL} + MOBILIZON_ADMIN_EMAIL: ${MOBILIZON_ADMIN_EMAIL} + MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: ${MOBILIZON_INSTANCE_REGISTRATIONS_OPEN:-false} + + MOBILIZON_DATABASE_USERNAME: ${POSTGRES_USER} + MOBILIZON_DATABASE_PASSWORD: ${POSTGRES_PASSWORD} + MOBILIZON_DATABASE_DBNAME: ${POSTGRES_DB} + MOBILIZON_DATABASE_HOST: ${POSTGRES_CONTAINER_NAME:-postgres} + + MOBILIZON_INSTANCE_SECRET_KEY_BASE: ${MOBILIZON_INSTANCE_SECRET_KEY_BASE:?err} + MOBILIZON_INSTANCE_SECRET_KEY: ${MOBILIZON_INSTANCE_SECRET_KEY:?err} + + MOBILIZON_SMTP_SERVER: ${MOBILIZON_SMTP_SERVER:?err} + MOBILIZON_SMTP_HOSTNAME: ${MOBILIZON_SMTP_HOSTNAME:?err} + MOBILIZON_SMTP_PORT: ${MOBILIZON_SMTP_PORT:?err} + MOBILIZON_SMTP_SSL: ${MOBILIZON_SMTP_SSL:?err} + MOBILIZON_SMTP_USERNAME: ${MOBILIZON_SMTP_USERNAME:?err} + MOBILIZON_SMTP_PASSWORD: ${MOBILIZON_SMTP_PASSWORD:?err} + + PUID: ${MOBILIZON_PUID:-1000} + PGID: ${MOBILIZON_PGID:-1000}