Guía de despliegue

Alojar Listmonk en su propio VPS

Desplegar en un VPS Cloud →

Tutorial

Alojar Listmonk en su propio VPS

Autoalojamiento7 min de lectura6 pasos

Mailchimp, Brevo y compañía facturan por contacto y limitan sus envíos. Listmonk invierte el modelo: un gestor de newsletters de código abierto, escrito en Go, capaz de enviar millones de correos electrónicos desde su propia infraestructura. Así se instala en un VPS, se configura en profundidad y se mantiene a lo largo del tiempo.

Contenido· Por qué autoalojar Listmonk en un VPS1/10
  1. 01Por qué autoalojar Listmonk en un VPS
  2. 02Ventajas concretas de Listmonk autoalojado
  3. 03Requisitos técnicos
  4. 04Desplegar Listmonk paso a paso
  5. 05Configuración avanzada: SMTP, listas y segmentos
  6. 06Actualizar Listmonk
  7. 07Solución de problemas habituales
  8. 08RGPD y listas de supresión
  9. 09Caso de uso: tienda de comercio electrónico con correos transaccionales y newsletters
  10. 10Copia de seguridad y portabilidad de los datos

Por qué autoalojar Listmonk en un VPS

Listmonk es un único binario Go respaldado por PostgreSQL, capaz de gestionar listas masivas y campañas segmentadas con un caudal de envío muy elevado. El self-hosting resulta pertinente en cuanto su base de suscriptores supera unos pocos miles de contactos: las plataformas SaaS facturan entonces cientos de euros al mes por una tarea que un VPS modesto ejecuta por el precio del servidor. Usted conserva la propiedad íntegra de su base de correos electrónicos (ninguna fuga hacia terceros), conecta el relay SMTP que prefiera y controla la cadencia de envío para preservar su reputación como remitente. Aquí un VPS es imprescindible, ya que Listmonk necesita un proceso persistente, una base de datos PostgreSQL y puertos SMTP salientes abiertos: libertades que ningún alojamiento compartido concede.

Ventajas concretas de Listmonk autoalojado

  • Ningún costo por contacto: la factura ya no depende del tamaño de su lista, sino únicamente del VPS.
  • Segmentación mediante consultas SQL: apunte a subconjuntos de suscriptores con una precisión imposible en la mayoría de los SaaS.
  • Plantillas ricas (Go templates + HTML) y campañas A/B versionables en su repositorio.
  • API REST completa: desencadene envíos transaccionales desde su aplicación mediante webhook.
  • Seguimiento de aperturas, clics y rebotes en una interfaz unificada, sin píxel de terceros.
  • Libre elección del relay (Postmark, Amazon SES, OVH, su propio Postfix) para optimizar entregabilidad y costo.

Requisitos técnicos

Listmonk en sí es muy ligero, pero PostgreSQL y el volumen de envío imponen un dimensionamiento razonable: prevea 2 vCPU, 2 GB de RAM y 20 GB de disco para una base de algunas decenas de miles de contactos; suba a 4 GB de RAM si gestiona campañas simultáneas voluminosas. En cuanto a la infraestructura: Docker y Docker Compose, un dominio mail.sudominio.com con un registro A hacia el VPS y, sobre todo, los registros DNS de autenticación de correo (SPF, DKIM, DMARC) configurados en el dominio de envío. Es necesario un relay SMTP con credenciales (host, puerto 587, usuario, contraseña): el envío directo desde la IP de un VPS suele estar bloqueado por los proveedores.

Desplegar Listmonk paso a paso

  1. Obtener la stack oficial

    En el VPS, cree /opt/listmonk y descargue después el compose de referencia: curl -LO https://raw.githubusercontent.com/knadh/listmonk/master/docker-compose.yml. Declara dos servicios, app (listmonk) y db (PostgreSQL).

  2. Inicializar la base de datos

    Lance la migración inicial antes de la primera ejecución: docker compose run --rm app ./listmonk --install. Este comando crea el esquema PostgreSQL y el usuario administrador. Introduzca una contraseña de administrador sólida cuando se le solicite.

  3. Arrancar el servicio

    Lance la stack con docker compose up -d. Listmonk escucha en el puerto 9000 en interno. Compruebe el estado de los contenedores con docker compose ps y consulte los logs si es necesario.

  4. Configurar el reverse proxy y el SSL

    Exponga Listmonk detrás de un reverse proxy con HTTPS. Ejemplo con Caddy: mail.sudominio.com { reverse_proxy app:9000 }. El certificado Let's Encrypt se genera automáticamente. No publique nunca el puerto 9000 directamente en Internet.

  5. Conectar el relay SMTP

    En Ajustes > SMTP, introduzca los parámetros de su relay (host, puerto 587, credenciales, TLS activado). Envíe un correo de prueba desde la interfaz para validar la conexión antes de cualquier campaña.

  6. Asegurar la entregabilidad

    Compruebe con una herramienta externa que SPF, DKIM y DMARC pasan en verde en su dominio de envío. Empiece con campañas pequeñas para «calentar» la IP del relay y vigile la tasa de rebotes en el panel de control.

Configuración avanzada: SMTP, listas y segmentos

Listmonk soporta varios servidores SMTP de forma simultánea: cree un servidor dedicado a los envíos transaccionales (confirmaciones, contraseñas olvidadas) y otro para las campañas de marketing, cada uno con sus propias credenciales y límites de caudal. Para gestionar los rebotes automáticamente, active el Bounce Processor en Settings > Bounces: Listmonk sondea un buzón IMAP (o un webhook de su relay) y elimina las direcciones inválidas sin intervención manual.

Para las listas, prefiera el doble opt-in (Settings > Lists > Opt-in): se envía un correo de confirmación a cada nuevo suscriptor, lo que protege su reputación y cumple con el RGPD. Los segmentos dinámicos (Lists > New segment) se basan en consultas SQL directas sobre la tabla de suscriptores: por ejemplo attribs->>'plan' = 'pro' AND created_at > NOW() - INTERVAL '30 days' para apuntar a los nuevos clientes premium. Estos atributos personalizados se pasan en el momento de la suscripción mediante la API (POST /api/subscribers) en el campo attribs (objeto JSON libre).

Actualizar Listmonk

Antes de cualquier actualización, realice una copia de seguridad de la base de datos: docker exec listmonk_db_1 pg_dump -U listmonk listmonk > backup-before-update.sql. A continuación, detenga la stack, descargue la nueva imagen y ejecute el script de migración:

docker compose down
docker compose pull
docker compose run --rm app ./listmonk --upgrade
docker compose up -d

La opción --upgrade aplica las migraciones de esquema necesarias entre versiones. Consulte el registro de cambios en el repositorio oficial antes de pasar entre versiones principales: algunas migraciones son irreversibles. Una vez que el servicio se haya reiniciado, verifique la interfaz y envíe un correo de prueba para confirmar que todo funciona.

Solución de problemas habituales

Conexión SMTP rechazada — connection refused en el puerto 587. La mayoría de los proveedores de VPS bloquean los puertos SMTP salientes (25, 465, 587) para combatir el spam. La solución: usar un relay SMTP externo (Postmark, Amazon SES, Brevo en modo relay) cuyo tráfico salga por HTTPS API o un puerto permitido. Verifique también que TLS esté activado en Listmonk (STARTTLS para el puerto 587).

PostgreSQL inaccesible al inicio — dial tcp db:5432: connect: connection refused. El contenedor app arranca antes de que PostgreSQL esté listo. Añada una directiva depends_on con condition: service_healthy en su docker-compose.yml, o espere unos segundos antes de reiniciar: docker compose restart app.

502 Bad Gateway con Caddy. El contenedor Listmonk no está ejecutándose o ha fallado. Compruebe docker compose ps: si app está en estado Exited, ejecute docker compose logs app para identificar el error, y luego docker compose up -d para reiniciarlo.

Importación CSV bloqueada o suscriptores ausentes. Listmonk exige un archivo CSV codificado en UTF-8 sin BOM, con al menos una columna email. Un archivo exportado desde Excel puede contener un BOM (marcador invisible al inicio del archivo) o una codificación Windows-1252: conviértalo con iconv -f WINDOWS-1252 -t UTF-8 lista.csv > lista-utf8.csv antes de importarlo.

Ajuste el límite de caudal de envío (Settings > Performance > max concurrent connections y message rate) en función de las cuotas de su relay SMTP. Un envío demasiado agresivo hace subir la tasa de spam y de rechazo. Para los correos transaccionales críticos, cree en Listmonk un segundo servidor de correo dedicado a esos envíos, separado del servidor de marketing: así, un problema de reputación en las newsletters no afecta a sus correos de confirmación.

RGPD y listas de supresión

Listmonk mantiene automáticamente una lista de supresión (cancelaciones de suscripción + rebotes duros). Para cumplir con el RGPD, active el doble opt-in en todas sus listas públicas y configure la página de baja con un enlace {{ UnsubscribeURL }} en cada plantilla. Los datos de los suscriptores dados de baja permanecen en la base de datos (para evitar una reinscripción accidental) pero se marcan como blocklisted: no reciben ningún envío posterior. Exporte y purgue estas entradas con regularidad si su DPA lo exige.

Caso de uso: tienda de comercio electrónico con correos transaccionales y newsletters

Imagine una tienda PrestaShop o WooCommerce autoalojada en un VPS ServOrbit. Configure Listmonk como motor de correo central: las confirmaciones de pedido y las notificaciones de envío pasan por la API transaccional (/api/tx) con una plantilla Listmonk; los clientes que dan su consentimiento a la newsletter reciben una campaña semanal a través de la lista de Listmonk. Un solo relay SMTP, una sola plataforma, cero gastos por suscriptor. La segmentación por atributos personalizados (ticket medio, categoría preferida, fecha de la última compra) le permite dirigir ofertas precisas, sin exportar sus datos a un SaaS de terceros.

Copia de seguridad y portabilidad de los datos

Listmonk almacena todos sus datos en PostgreSQL (volumen Docker listmonk-db). Para hacer una copia de seguridad: docker exec listmonk_db_1 pg_dump -U listmonk listmonk > backup.sql. Para restaurarla en otra instancia: cree un nuevo despliegue de Listmonk vacío, detenga la app, restaure la base (psql -U listmonk listmonk < backup.sql) y reinicie. Los archivos adjuntos (imágenes insertadas) están en el volumen listmonk-uploads. La REST API de Listmonk también permite exportar los suscriptores en CSV en cualquier momento desde la interfaz o mediante un script.

Recupere el control de sus newsletters

Con el VPS Cloud ServOrbit y su plantilla Listmonk preconfigurada (PostgreSQL y reverse proxy incluidos), envíe sus campañas sin límite de contactos y sin suscripción mensual. Usted conserva su base de datos y elige su relay.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva