En éste búsqueda de querer seguir despegándome de los servicios privativos y cerrados me llamó la atención un servicio libre de mensajería instantánea. Hablo de Rocket.Chat
La idea de detrás de Rocket.Chat es poder tener un servicio similar a Slack o a Discord (salvando las distancias) pero que se puede autoalojar teniendo uno el control de lo que se puede hacer y sobre todo sabiendo que los datos encriptados realmente y nadie está viéndolos.
👍Ventajas:
👎Desventajas:
La web oficial de Rocket.Chat indica cómo hacer la instalación directamente del servicio de una manera muy sencilla. Solo hay que descargar el archivo docker-compose.yml y su archivo correspondiente de configuración .env con las variables necesarias a pasarle al contenedor.
El docker-compose.yml queda así:
volumes:
mongodb_data: { driver: local }
services:
rocketchat:
image: ${IMAGE:-registry.rocket.chat/rocketchat/rocket.chat}:${RELEASE:-latest}
container_name: "rocketchat"
restart: always
labels:
traefik.enable: "false"
traefik.http.routers.rocketchat.rule: Host(`${DOMAIN:-}`)
traefik.http.routers.rocketchat.tls: "true"
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: le
environment:
MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0
ROOT_URL: ${ROOT_URL:-http://localhost:3000}
PORT: ${PORT:-3000}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-}
REG_TOKEN: ${REG_TOKEN:-}
depends_on:
- mongodb
expose:
- ${PORT:-3000}
ports:
- "${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}"
mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-6.0}
container_name: "rocket_chat_db"
restart: always
volumes:
- ${MONGODB_HOST_PATH:-mongodb_data}:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
El archivo se deja así directamente, yo no le toqué nada ya que todo lo que es configuración va en el archivo .env a saber:
### Rocket.Chat configuration
# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
RELEASE=7.8.1
# MongoDB endpoint (include ?replicaSet= parameter)
#MONGO_URL=
# MongoDB endpoint to the local database
#MONGO_OPLOG_URL=
# IP to bind the process to
BIND_IP=192.168.0.50 # LA IP DE TU EQUIPO
# URL used to access your Rocket.Chat instance
ROOT_URL=http://dominio.com # EL DOMINIO EN EL QUE TENDRIAS EL SERVIDOR
# Port Rocket.Chat runs on (in-container)
PORT=3000 # NO TOCAR ESTE PUERTO ES PARA QUE LO USE INTERNO EL CONTENEDOR
# Port on the host to bind to
HOST_PORT=8090 # ESTE ES EL PUERTO LOCAL PARA INGRESAR AL SERVICIO, ESTE SI SE PUEDE MODIFICAR
### MongoDB configuration
# MongoDB version/image tag
#MONGODB_VERSION=
# See:- https://hub.docker.com/r/bitnami/mongodb
# MongoDB local host path
#chown -R 1001:1001 ./data/mongodb
MONGODB_HOST_PATH="./data/mongodb" # DIRECTORIO LOCAL PARA GUARDAR LA BASE DE DATOS DE MANERA PERSISTENTE
### Traefik config (if enabled)
# Traefik version/image tag
#TRAEFIK_RELEASE=
# Domain for https (change ROOT_URL & BIND_IP accordingly)
#DOMAIN=
# Email for certificate notifications
#LETSENCRYPT_EMAIL=
Por mi parte no uso Traefik por lo que esa parte de la configuración no la uso igual que en el docker-compose.yml la opción traefik.enable la tengo en "false".
Una vez que tenemos todo configurado solo tenemos que levantar el contenedor con:
docker compose up -d

Y listo, nuestro propio servidor de mensajeria está listo!!

Nos leemos en el fediverso!! @NeoRanger