A petición popular, en esta entrada desplegaremos un servidor Prosody casero para tenerlo funcionando en una Pi, y poder comunicarnos de forma segura desde nuestro móvil o cualquier cliente XMPP con otros usuarios o salas. Utilizaremos Docker para crosscompilar la imagen oficial de los desarrolladores de Prosody en la arquitectura necesaria para la Pi (arm64).
Clonamos el repositorio oficial de los Prosody Developers:
$ git clone https://github.com/prosody/prosody-docker
Entramos en el directorio y compilamos la imagen para la arquitectura arm64 con el nombre prosody
:
$ cd prosody-docker && docker buildx build --platform arm64 -t prosody -f ng/Dockerfile ng/
En este punto tenemos que especificar en variables de entorno la configuración que queremos añadir en el servicio, para esto podemos crear un archivo .env
donde tengamos el docker-compose.yml
, o en la sección environment: de la definición del contenedor en el compose. Las variables que necesitamos crear son:
ENV_PROSODY_ADMINS=admin@dominio.com,user@dominio.com
ENV_PROSODY_SQL_DRIVER=SQLite3
ENV_PROSODY_SQL_DB=prosody.sqlite
ENV_PROSODY_CERTIFICATES=certs/dominio.com
ENV_PROSODY_VIRTUAL_HOSTS=dominio.com
ENV_PROSODY_NETWORK_HOSTNAME=dominio.com
ENV_PROSODY_ENABLE_MODULES=bosh,http_upload
ENV_PROSODY_COMPONENTS=conference.dominio.com:muc,xmpp.dominio.com:http_upload
ENV_PROSODY_MUC_MODULES=bosh
ENV_PROSODY_EXTERNAL_COMPONENTS=
ENV_PROSODY_COMPONENT_SECRET=
Aclarar que se necesita añadir la ruta de la carpeta que contenga los certificados SSL en la variable ENV_PROSODY_CERTIFICATES
con el mismo nombre que el dominio que vamos a compartir dominio.com.crt
y dominio.com.key
, o sino con los nombres fullchain.pem
y privkey.pem
dentro de una carpeta con el mismo nombre que el dominio que tengamos si son certificados Let’s Encrypt.
Una vez creadas las variables podemos usar un archivo docker-compose.yml
como el siguiente para instanciar el contenedor:
version: '2'
services:
prosody:
image: prosody
hostname: prosody
container_name: prosody
restart: always
env_file:
- .env
ports:
- 80:80
- 443:443
- 5222:5222
- 5269:5269
- 5347:5347
- 5280:5280
- 5281:5281
volumes:
- ./prosody.sqlite:/etc/prosody/prosody.sqlite
- ./mod_http_upload.lua:/usr/lib/prosody/modules/mod_http_upload.lua:ro # módulo para subir archivos con el protocolo XMPP
- ./certs:/etc/prosody/certs/dominio.com/:ro # ruta de los certificados SSL
networks:
prosodynet:
networks:
prosodynet:
Y esto es todo, nos leemos por XMPP 👀
Comments
No comments yet. Be the first to react!