En el Podcast, os he hablado muchas veces de las virtudes de docker: sencillez, seguridad, etc… En el artículo de hoy, voy a instalar un servidor ejabberd para raspberry, que no he encontrado en el Docker Hub y porque no decirlo, para los mas paranoicos, porque no instalarlo paso a paso…
El Dockerfile es una archivo en texto plano que nos permite, del mismo modo que hacemos en un script, escribir línea a línea todos los comandos que queremos que se ejecuten en el momento de crear el Docker. Partimos en la primera línea descargando de un sistema operativo y después sucesivamente se ejecutaran todos esos comandos, cerrando por último nuestra imagen.
Vamos a crear un servidor ejabberd de mensajería, partiendo de una distro debian para arm32v7.
En próximos posts explicaré como hacer Dockers partiendo de una distro que tan solo ocupa 5 Mb, Alpine Linux. Pero para ejabberd, no hay una versión estable del servicio para arm. Así que… Vamos a utilizar una debian que es lo que conozco bien.
Crea con tu editor texto favorito, un archivo sin extensión llamado Dockerfile y dentro copiar este contenido.
FROM arm32v7/debian:latest
MAINTAINER angel <ugeekpodcast@gmail.com>
RUN apt-get -y update; \
apt-get -y upgrade; \
apt-get -y install apt-utils \
ejabberd;
EXPOSE 5280
EXPOSE 5222
EXPOSE 5269
VOLUME /etc/ejabberd/
ENTRYPOINT service ejabberd start && /bin/bash
CMD ["bash"]
Nos situaremos en la carpeta donde está el archivo Dockerfile y ejecutaremos el siguiente comando:
docker build -t ejabberd_imagen:dockerfile .
Con este comando veremos todas las imágenes que tenemos en el servidor. La última, corresponderá la imagen que hemos creado:
docker images
Tenemos una nueva imagen de 155Mb con el nombre que habíamos puesto!!!
REPOSITORY TAG IMAGE ID CREATED SIZE
ejabberd_imagen dockerfile 983bc10a3e5b 47 seconds ago 155MB
Ya tenemos nuestra imagen, ahora vamos a crear el contenedor. A la imagen la nombramos ejabberd_imagen y al contenedor, lo pondremos el nombre de ejabberd
Solo hay 2 valores que tiene que añadir:
docker run -dti --name ejabberd --restart=unless-stopped -p 5280:5280 -p 5222:5222 -v /home/$USUARIO/docker/ejabberd_config:/etc/ejabberd/ $IMAGE_ID
En la carpeta /home/$USUARIO/docker/ejabberd_config
, encontraremos el archivo de configuración del servidor.
Ahora vamos a entrar al interior del Docker. Una vez dentro de este, estaremos en una versión de debian, con todo lo justo para que funcione nuestro servidor y para que sea del mínimo tamaño.
docker exec -i -t ejabberd /bin/bash
ejabberd es el nombre que habíamos dado a nuestro contenedor.
Una vez dentro, mediante este comando, daremos nombre al servidor, nombre de administrador y contraseña del mismo.
dpkg-reconfigure ejabberd
Es posible que de error. Si es así, pararemos el servidor y lo volveremos a iniciar.
Detener el servidor
service ejabberd stop
Iniciar el servidor
service ejabberd start
Ahora nos conectamos a https://ip:5280/admin
, que es la web de administración del servicio. Nos pedirá para acceder el nombre del servidor y usuario del administrador, que hemos puesto en el paso anterior.
Nombre de usuario: admin@localhost Contraseña: password
Archivo de configuración está en: /etc/ejabberd/ejabberd.yml
Para añadir usuarios desde la interfaz de administración web, seleccionaremos en el menú Dominios Virtuales -> Dominio -> Usuarios. Ahí, añadiremos nuestros usuarios y sus contraseñas. Esto sería en el caso que únicamente el administrador del servidor, sea el único que permita el registro de usuarios, tal como viene por defecto. También podríamos hacer que cada usuario que quiera, pueda registrarse.
Ejabberd/xmpp, no está diseñado para transferir archivos, aún así, notarás que la transferencia de archivos es muy lenta y es debido a que el archivo de configuración tiene limitación en la transferencia por defecto, por si el número de usuarios que van a utilizar el servidor es muy grande. También tiene limitado el tamaño máximo de archivo a compartir. Desmarca mediante # o personaliza a tu gusto los parametros en ejabberd.yml, Recuerda que puedes acceder desde fuera del contenedor, gracias al volumen que creamos al crear el mismo.
shaper:
##
## The "normal" shaper limits traffic speed to 1000 B/s
##
########## normal: 10000000
##
## The "fast" shaper limits traffic speed to 50000 B/s
##
########## fast: 50000
##
## This option specifies the maximum number of elements in the queue
## of the FSM. Refer to the documentation for details.
##
#max_fsm_queue: 1000
Podemos personalizar absolutamente nuestro servidor desde este archivo, pero es muy complejo. Visita la web de ejabberd para ver ejemplos y sobretodo, haz una copia del archivo antes de modificarlo.
Publicado por Angel el Sunday 10 February del 2019
También te puede interesar:
Powered by org-bash-blog
Written in OrgMode with Emacs and converted to HTML with Pandoc
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.