Elegir el protocolo antes de alquilar el servidor
Una discusión reciente en Hacker News recordó algo que los administradores olvidan: la dificultad de una mensajería privada es ante todo social. El servidor se monta en una tarde; convencer a una familia, una asociación o un equipo de instalar otra aplicación lleva semanas. Sin embargo, el protocolo decide qué mantendrá durante años, cuántos registros DNS, puertos y certificados tendrá que entender, y qué verán sus allegados en el teléfono. Tres familias se reparten el uso privado: Matrix con Synapse y Element, XMPP con Snikket, y chatmail con la aplicación Delta Chat. No resuelven el mismo problema.
Los siete criterios que deciden
- Recursos del servidor — lo que consume la pila en reposo y lo que pide cuando la comunidad crece.
- Mantenimiento — cuántos componentes actualizar, qué copias de seguridad probar, qué cuentas gestionar.
- Dominio, DNS y TLS — los registros que crear, los certificados y qué ocurre si el nombre debe cambiar.
- Puertos — qué hay que abrir y si el VPS puede compartir los puertos 80 y 443 con otro sitio.
- Federación — hablar con personas alojadas en otro lugar o quedarse entre ustedes.
- Cifrado — aplicado por defecto o activado sala por sala.
- Aplicaciones móviles y notificaciones — lo que instalan sus allegados y si el teléfono suena con la aplicación cerrada.
Matrix: Synapse y Element, la pila versátil
Matrix es un protocolo federado: su servidor, Synapse, dialoga con los demás servidores Matrix, y los usuarios se conectan con Element en móvil, escritorio o navegador. Es el más versátil de los tres, con salas públicas y privadas, equipos y puentes hacia otras redes. También es el de mayor coste. Nuestra medición en una instalación nueva da unos 300 MB en reposo para toda la pila (Synapse, PostgreSQL, Element y reverse proxy), y un VPS de 2 GB de RAM y 2 vCPU basta para un equipo, una asociación o una familia. La documentación de Synapse recomienda PostgreSQL para cualquier servidor de producción, reserva SQLite para pruebas y aconseja al menos 1 GB de RAM libre para unirse a grandes salas públicas. En la red hacen falta un reverse proxy en HTTPS, el puerto 8448 para la federación (o una delegación al 443) y un archivo .well-known para que las aplicaciones encuentren el servidor. La trampa: el nombre del servidor es definitivo, porque está inscrito en cada identificador de usuario, y la documentación pide elegirlo antes de instalar. Para la instalación paso a paso, nuestra guía "Alojar Matrix (Synapse) y Element en su propio VPS" detalla cada etapa.
Snikket: XMPP pensado para un grupo de allegados
Snikket es una distribución XMPP diseñada para familias, amigos, clubes y pequeñas organizaciones, sin número de teléfono ni agenda que subir. Usted decide quién entra enviando un enlace de invitación: la primera cuenta de administrador se crea desde el servidor con docker exec snikket create-invite --admin --group default, y las invitaciones siguientes se gestionan desde un panel web. Los requisitos documentados son un Linux con Docker (versión 20.10.10 o posterior) y el plugin Compose, un dominio en el que crear subdominios, un registro A (AAAA opcional) y dos CNAME, groups y share, hacia el dominio principal. El puerto 80 debe seguir accesible, porque Let's Encrypt valida allí el dominio. La documentación no indica una RAM mínima: en lugar de inventarla, mídala durante un piloto. Snikket espera ser el único servidor web de la máquina. Si comparte el VPS con un sitio, hay que mover sus puertos HTTP y HTTPS (SNIKKET_TWEAK_HTTP_PORT y SNIKKET_TWEAK_HTTPS_PORT) y hacer que su proxy retransmita el tráfico web, sabiendo que XMPP, STUN y TURN no pasan por un proxy HTTP. Un VPS dedicado evita ese malabarismo.
chatmail y Delta Chat: correo cifrado por defecto
chatmail no es un nuevo protocolo de mensajería instantánea: es un relé de correo electrónico reducido a lo esencial, que la aplicación Delta Chat usa como mensajería. El relé, construido sobre Postfix, Dovecot y OpenDKIM, rechaza los mensajes sin cifrar, no pide número de teléfono ni datos privados, y solo conserva los mensajes el tiempo necesario para entregarlos; los mensajes antiguos y los buzones inactivos se eliminan según su configuración. Los requisitos de la documentación son un servidor Debian 12, 1 GB de RAM, una CPU y unos 10 GB de almacenamiento para unos pocos miles de direcciones activas, un dominio, un registro A (AAAA recomendado), CNAME www y mta-sts, y los puertos SMTP, SUBMISSIONS, IMAPS y HTTPS accesibles. El despliegue se dirige desde un equipo Linux o Unix con scripts/cmdeploy run, y scripts/cmdeploy dns verifica los registros. Como la máquina ejecuta su propio servidor de correo, una VM dedicada es la opción prudente. Delta Chat está pensado para conversaciones y grupos entre contactos, no para sustituir una plataforma de equipo con canales e integraciones.
Matrix, Snikket y chatmail lado a lado
Desplace la tabla
| Matrix (Synapse + Element) | Snikket (XMPP) | chatmail + Delta Chat |
|---|---|---|
| Recursos: unos 300 MB en reposo (medición de ServOrbit), VPS de 2 GB / 2 vCPU | Recursos: sin mínimo cifrado en la documentación, a medir en un piloto | Recursos: 1 GB de RAM, 1 CPU, unos 10 GB para unos pocos miles de direcciones activas (documentación) |
| Mantenimiento: varios componentes (Synapse, PostgreSQL, Element, proxy) y actualizaciones de versión que seguir | Mantenimiento: `docker compose pull` y después `docker compose up -d`, invitaciones gestionadas desde el panel | Mantenimiento: actualización repitiendo `scripts/cmdeploy run` desde el equipo de despliegue, depuración de buzones inactivos configurable |
| DNS y TLS: dominio definitivo, registro A, `.well-known`, certificado servido por el reverse proxy | DNS y TLS: A, CNAME `groups` y `share`, Let's Encrypt gestionado por Snikket con el puerto 80 abierto | DNS y TLS: A, AAAA recomendado, CNAME `www` y `mta-sts`, certificado válido con cadena completa |
| Puertos: 443 tras un proxy, 8448 para la federación salvo delegación | Puertos: TCP 80, 443, 5222, 5269, 5000, 3478, 3479, 5349, 5350 y UDP 49152-65535 para las llamadas | Puertos: 25, 587, 465, 143, 993, 443 y 80, más 3478 en UDP para las llamadas |
| Federación: sí, con toda la red Matrix | Federación: puerto 5269 para el diálogo entre servidores, pero el uso previsto sigue siendo el grupo cerrado | Federación: el relé intercambia correo con otros relés, los mensajes sin cifrar se bloquean |
| Cifrado: de extremo a extremo, activable sala por sala, irreversible una vez activado | Cifrado: TLS hacia el servidor; el cifrado de extremo a extremo se comprueba en la documentación del cliente antes de prometerlo | Cifrado: OpenPGP obligatorio, ningún mensaje en claro en un relé chatmail por defecto |
| Aplicaciones: Element en móvil, escritorio y web, notificaciones por probar en sus teléfonos | Aplicaciones: app Snikket (con versión iOS) y Conversations, compatible, push iOS mediante el servicio de Snikket | Aplicaciones: Delta Chat en móvil y escritorio, sin cliente web, push de Apple y Google sin exponer el contenido |
Quién debería elegir qué
Una familia de ocho personas que quiere sobre todo compartir fotos y hacer llamadas: Snikket o chatmail, porque la administración se reduce a un enlace de invitación. Snikket si desea una aplicación única con grupos e intercambio de archivos; chatmail si el criterio es la confidencialidad por defecto y no crear cuentas. Una asociación con una sala por comisión, invitados externos y puentes hacia otras herramientas: Matrix, más pesado pero más versátil. Un equipo pequeño que sustituye a Slack: Matrix, o una mensajería de equipo como Mattermost o Rocket.Chat, que compara nuestro artículo específico. En todos los casos, lo que falla no es el servidor sino la adopción. Elija primero el protocolo cuya aplicación guste a la persona más reticente del grupo y dimensione después el VPS.
Decidir en siete pasos antes de alquilar el VPS
Contar y calificar a los usuarios
Anote cuántas personas, en qué teléfonos (iPhone, Android) y si habrá que incorporar invitados externos. Un grupo cerrado de allegados orienta hacia Snikket o chatmail; las salas y los invitados orientan hacia Matrix.
Hacer instalar la aplicación antes que el servidor
Instale Element, la app Snikket y Delta Chat en el teléfono de dos allegados, incluido el menos cómodo con la tecnología. Su reacción pesa más que cualquier fila de la tabla.
Fijar el nombre de dominio
Elija un subdominio definitivo, por ejemplo
chat.your-domain.com. En Matrix queda inscrito en cada identificador y ya no se puede cambiar. Compruebe que apunta al futuro servidor condig +short A chat.your-domain.com.Comprobar que los puertos están libres
En un servidor existente,
ss -tlnp | grep -E ':(25|80|443)\b'muestra qué ocupa ya esos puertos. Snikket y chatmail quieren el 80 y el 443 para sí; Matrix se coloca tras un reverse proxy. Si los puertos están ocupados, prevea un VPS dedicado.Dimensionar el VPS
Para Matrix, parta de 2 GB de RAM y 2 vCPU. Para chatmail, la documentación indica 1 GB y una CPU. Para Snikket, parta de 2 GB y mida el consumo durante el piloto con
docker stats.Designar quién mantiene
Escriba el nombre de la persona que aplica las actualizaciones y prueba las copias de seguridad. Si nadie quiere ese papel, la opción de administración del VPS permite confiarlo a un administrador.
Lanzar un piloto de dos semanas
Monte el servidor elegido con tres a cinco personas y cuente al final quién sigue escribiendo. Snikket:
docker exec snikket create-invite --admin --group defaultcrea la cuenta de administrador. chatmail:scripts/cmdeploy dnsverifica el DNS. Matrix: siga la guía de instalación y pase después el servidor por la herramienta de prueba de federación de matrix.org.
Adopción: los allegados y las notificaciones
Un servidor impecable que nadie usa no sirve de nada, y el criterio decisivo es lo que sus allegados ven en el teléfono. En iPhone, Apple no ofrece alternativa para la entrega instantánea: Delta Chat activa el push automáticamente en los perfiles chatmail, y su documentación precisa que ni la dirección IP, ni los datos de perfil, ni el contenido se exponen a Apple o Google. En Android, las notificaciones dependen de un servicio de push disponible (FCM o microG); si no, la entrega puede retrasarse. Snikket indica que en iOS el contenido de las notificaciones se cifra con una clave conocida solo por la aplicación y por su servidor. Con Matrix, pruebe las notificaciones de Element en cada modelo de teléfono antes de decidir: aquí no damos ninguna garantía. Otras dos fricciones cuentan: Snikket y Delta Chat no piden número de teléfono, lo que tranquiliza a algunos allegados, y Delta Chat no tiene cliente web, lo que molesta a quien trabaja en un equipo compartido.
Refuerzo: cerrar el registro, abrir solo lo necesario
Elija lo que elija, tres gestos. Cierre el registro libre: enable_registration: false en Synapse, solo invitaciones en Snikket y touch /etc/chatmail-nocreate en chatmail una vez formado el grupo (las direcciones existentes no se tocan). En el cortafuegos del VPS, abra solo los puertos de la pila elegida más SSH, por ejemplo ufw allow 5222/tcp para las conexiones de clientes Snikket. Por último, haga copia de lo que no se reconstruye: la clave de firma y la base PostgreSQL de Synapse, los volúmenes de Snikket y los buzones de su relé chatmail.
Solución de problemas: los errores que vuelven
Los síntomas siguientes proceden de las páginas oficiales de solución de problemas de cada proyecto. En la mayoría de los casos se empieza por el DNS y los puertos, antes de tocar la configuración.
Síntomas, causas probables y remedios
- Snikket: la página "Snikket is starting" no desaparece — suele ser un problema de certificado. Compruebe los tres registros DNS, el puerto 80 abierto en el proveedor y en
ufw, y lea/var/log/letsencrypt/errors.logdentro del contenedorsnikket_certs. Evite reintentar en bucle: Let's Encrypt aplica límites estrictos. - Snikket: todos los enlaces de invitación aparecen caducados — compruebe que la URL está completa, que ningún otro servicio usa el puerto 5280 y que el reverse proxy retransmite hacia Snikket.
- Snikket: la aplicación indica que el servidor no es responsable del dominio — otro servidor XMPP ocupa los puertos de Snikket, o quedan registros SRV antiguos de una instalación anterior. Después espere a que caduquen las cachés DNS.
- Snikket: los archivos grandes fallan — un reverse proxy limita el tamaño de los envíos y debe aceptar al menos 100 MB. Por encima, la transferencia es directa de dispositivo a dispositivo, entre dos personas conectadas, y no es compatible desde o hacia iOS.
- Matrix:
M_UNKNOWNo401 Unauthorizeden la federación — según la documentación de Synapse, los servidores federados no siguen las redirecciones HTTP 308; una redirección 301 lo resuelve. Pruebe después con la herramienta de federación de matrix.org. - Matrix: los usuarios de otros servidores no pueden unirse a sus salas — el puerto 8448 no es accesible, falta la delegación o el reverse proxy está mal configurado. Repita la prueba de federación antes de cambiar nada.
- chatmail: los mensajes no llegan — el componente de filtrado exige un certificado TLS válido con su cadena completa. Ejecute
scripts/cmdeploy dnspara comprobar los registros y verifique que los puertos 25, 465 y 993 son accesibles desde fuera. - chatmail:
cmdeployno se conecta por SSH — la clave del equipo de despliegue debe ser de tipo ed25519, protegida con contraseña y cargada en ssh-agent, con acceso SSH al usuario root del servidor.
Qué método conservar
Ninguna de las tres es la buena en sí misma: la buena es la que sus allegados seguirán abriendo dentro de seis meses. Para un grupo cerrado que quiere la mínima administración, mire Snikket o chatmail; para salas, invitados e integraciones, Matrix. Matrix (Synapse) es la aplicación disponible como plantilla VPS en ServOrbit: un entorno listo para usar en un VPS, con un dominio que asociar. Snikket y chatmail se despliegan en un VPS Cloud estándar, con acceso root e IPv4 dedicada; la página VPS Cloud detalla las ofertas. Las tres son de código abierto y las administra usted mismo: ServOrbit aporta el servidor, no la herramienta.