Cómo INSTALAR y CONFIGURAR LISTMONK. Tu propio sistema NEWSLETTER GRATIS y AUTOHOSPEADO en Docker 📧

 Listmonk  |  Newsletter  |  Self-Hosted

Cómo Instalar y Configurar Listmonk: Tu Sistema de Newsletter Gratis y Autohospedado

Gestiona tus listas de correo, envía campañas profesionales y mantén el control total de tus datos con Docker.

 Tutorial en vídeo

Antes de comenzar con la guía escrita, te recomiendo ver este tutorial completo en vídeo donde explico todo el proceso paso a paso:


 ¿Qué es Listmonk?

Listmonk es un sistema de gestión de newsletters y listas de correo autohospedado, gratuito y de código abierto. A diferencia de servicios comerciales como Mailchimp o Sendinblue, Listmonk te permite mantener el control total sobre tus datos de suscriptores y no tiene límites de envíos ni costes recurrentes.

Desarrollado en Go y con una interfaz moderna en Vue.js, Listmonk es extremadamente eficiente: puede enviar millones de correos con un consumo mínimo de recursos. Todo empaquetado en un único binario que se ejecuta en Docker con PostgreSQL como base de datos.

Ventaja clave: Sin límites de suscriptores ni envíos mensuales. Una vez instalado, es completamente gratis. Solo pagas por tu servidor SMTP (o usa Gmail gratis para volúmenes bajos).

⚡ Características principales

 Listas ilimitadas

Gestiona millones de suscriptores en múltiples listas con opt-in simple o doble.

 Analíticas integradas

Visualiza rendimiento de campañas, rebotes, clics y más directamente en el panel.

 Editor visual

Crea templates con drag-and-drop, WYSIWYG, Markdown o HTML puro.

⚡ Alto rendimiento

Multi-thread con soporte multi-SMTP. Envía millones de correos con RAM mínima.

 API completa

API REST para integrar con tus aplicaciones y enviar correos transaccionales.

 Privacidad total

Control granular de privacidad, OIDC SSO, roles y permisos personalizables.

 Requisitos previos

Antes de comenzar, asegúrate de tener:

  • Docker y Docker Compose instalados en tu servidor
  • Al menos 1 GB de RAM disponible (recomendado 2 GB)
  • Un servidor SMTP configurado (Gmail, SendGrid, Amazon SES, etc.)
  • Puerto 9000 disponible (o el que prefieras configurar)
Nota sobre SMTP: Listmonk necesita un servidor SMTP para enviar correos. Puedes usar tu cuenta personal de Gmail para empezar (hasta 500 correos/día). Más adelante te muestro cómo configurarlo.

 Instalación con Docker Compose

Paso 1: Crear el directorio del proyecto

mkdir ~/listmonk cd ~/listmonk

Paso 2: Descargar el docker-compose.yml oficial

Puedes usar el archivo oficial o el de mi repositorio personalizado:

# Opción 1: Archivo oficial curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml # Opción 2: Mi configuración personalizada curl -LO https://raw.githubusercontent.com/JLalib/docker-listmonk/main/docker-compose.yml

Paso 3: Revisar y ajustar el docker-compose.yml

Abre el archivo con tu editor favorito:

nano docker-compose.yml

Contenido básico del compose:

version: '3.8' services: db: image: postgres:15-alpine container_name: listmonk-db environment: POSTGRES_USER: listmonk POSTGRES_PASSWORD: listmonk POSTGRES_DB: listmonk volumes: - ./data/postgres:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U listmonk"] interval: 10s timeout: 5s retries: 5 app: image: listmonk/listmonk:latest container_name: listmonk-app depends_on: db: condition: service_healthy ports: - "9000:9000" environment: TZ: Europe/Madrid volumes: - ./config.toml:/listmonk/config.toml - ./data/uploads:/listmonk/uploads restart: unless-stopped

Paso 4: Generar el archivo de configuración

Listmonk necesita un archivo config.toml con la configuración de la base de datos y SMTP:

# Generar config.toml de ejemplo docker run --rm -it listmonk/listmonk:latest --new-config > config.toml

Paso 5: Editar la configuración

nano config.toml

Configura los parámetros importantes:

# Configuración de base de datos [db] host = "db" port = 5432 user = "listmonk" password = "listmonk" database = "listmonk" ssl_mode = "disable" # Configuración de la aplicación [app] address = "0.0.0.0:9000" admin_username = "admin" admin_password = "admin123" # CÁMBIALO después del primer login # Configuración SMTP (Gmail ejemplo) [[smtp]] enabled = true host = "smtp.gmail.com" port = 587 auth_protocol = "login" username = "tu-email@gmail.com" password = "tu-app-password" # Contraseña de aplicación de Google hello_hostname = "" max_conns = 10 idle_timeout = "15s" wait_timeout = "5s" max_msg_retries = 2 tls_enabled = true tls_skip_verify = false
⚠️ Importante: Si usas Gmail, NO uses tu contraseña normal. Necesitas crear una contraseña de aplicación desde la configuración de seguridad de tu cuenta Google.

Paso 6: Iniciar los contenedores

# Levantar los servicios en segundo plano docker compose up -d # Ver los logs para confirmar que todo arrancó bien docker compose logs -f app

Paso 7: Instalar la base de datos

La primera vez, necesitas ejecutar el instalador de la BD:

docker compose exec app ./listmonk --install

Confirma con y cuando te pregunte si quieres continuar.

Paso 8: Acceder a Listmonk

Abre tu navegador y ve a:

http://tu-ip-servidor:9000

Credenciales por defecto:

  • Usuario: admin
  • Contraseña: admin123 (o la que configuraste en config.toml)
Seguridad: Cambia la contraseña de administrador inmediatamente después del primer login desde Configuración → Usuarios.

 Configuración del servidor SMTP

Listmonk necesita un servidor SMTP para enviar correos. Estas son las opciones más comunes:

Opción 1: Gmail (gratis hasta 500 correos/día)

Perfecto para empezar o newsletters pequeñas. Sigue esta guía completa que preparé:

Cómo configurar tu cuenta personal Gmail como servidor SMTP

Guía paso a paso para usar Gmail en tus apps de homelab

Opción 2: SendGrid (gratis hasta 100 correos/día)

[[smtp]] enabled = true host = "smtp.sendgrid.net" port = 587 username = "apikey" password = "TU_SENDGRID_API_KEY" tls_enabled = true

Opción 3: Amazon SES (muy económico para volumen alto)

[[smtp]] enabled = true host = "email-smtp.us-east-1.amazonaws.com" port = 587 username = "TU_SMTP_USERNAME" password = "TU_SMTP_PASSWORD" tls_enabled = true

Probar la configuración SMTP

Desde el panel de Listmonk:

  1. Ve a Configuración → SMTP
  2. Haz clic en Probar conexión
  3. Introduce un correo de prueba y envía
  4. Verifica que el correo llega correctamente

 Primeros pasos con Listmonk

1. Crear tu primera lista

Ve a Listas → Nueva lista y configura:

  • Nombre: Newsletter principal
  • Tipo: Pública
  • Opt-in: Doble (recomendado para cumplir GDPR)
  • Descripción: Breve descripción de qué recibirán los suscriptores

2. Añadir suscriptores

Puedes añadirlos de varias formas:

  • Manualmente: Suscriptores → Nuevo suscriptor
  • Importar CSV: Suscriptores → Importar
  • Formulario público: Configuración → Formularios públicos
  • API: Integra con tu web o aplicación

3. Crear un template

Ve a Campañas → Templates → Nuevo template:

  • Usa el editor visual drag-and-drop
  • O escribe HTML personalizado
  • Incluye variables como {{ .Subscriber.Name }}
  • Añade botón de baja automático con {{ UnsubscribeURL }}

4. Enviar tu primera campaña

Ve a Campañas → Nueva campaña:

  1. Selecciona las listas destinatarias
  2. Escribe el asunto del correo
  3. Elige tu template
  4. Haz una vista previa y envía un correo de prueba
  5. Programa o envía inmediatamente

 Gestión del contenedor

Ver logs en tiempo real

docker compose logs -f app

Reiniciar los servicios

docker compose restart

Detener Listmonk

docker compose down

Actualizar a la última versión

# Descargar la imagen actualizada docker compose pull # Recrear los contenedores docker compose up -d # Ejecutar migraciones de BD si es necesario docker compose exec app ./listmonk --upgrade

Backup de la base de datos

# Crear backup de PostgreSQL docker compose exec db pg_dump -U listmonk listmonk > listmonk-backup-$(date +%Y%m%d).sql # También respalda la carpeta de datos tar -czf listmonk-data-$(date +%Y%m%d).tar.gz ./data ./config.toml

Restaurar desde backup

# Detener los servicios docker compose down # Restaurar el dump SQL docker compose up -d db cat listmonk-backup-20260419.sql | docker compose exec -T db psql -U listmonk # Reiniciar todo docker compose up -d

✅ Mejores prácticas

  • Usa doble opt-in: Protege tu reputación de dominio y cumple GDPR/CAN-SPAM.
  • Calienta tu dominio: Si usas un dominio nuevo, empieza con volúmenes bajos y aumenta gradualmente.
  • Personaliza los correos: Usa variables como nombre del suscriptor para mejorar engagement.
  • Segmenta tus listas: Envía contenido relevante a cada grupo de suscriptores.
  • Monitoriza rebotes: Limpia regularmente direcciones con bounce para mantener buena reputación.
  • Backups regulares: Automatiza backups diarios de la base de datos y configuración.
  • Dominio personalizado: Usa un subdominio dedicado para newsletters (news.tudominio.com).
  • Autenticación SPF/DKIM: Configura registros DNS para mejorar deliverability.

 Solución de problemas comunes

Los correos no se envían

  • Verifica la configuración SMTP en config.toml
  • Comprueba que el puerto 587 o 465 está abierto en el firewall
  • Revisa los logs: docker compose logs app
  • Prueba la conexión SMTP desde el panel de Listmonk

Error de conexión a la base de datos

# Verificar que PostgreSQL está corriendo docker compose ps db # Ver logs de la base de datos docker compose logs db

Los correos van a spam

  • Configura registros SPF, DKIM y DMARC en tu DNS
  • Usa un dominio con buena reputación
  • Evita palabras spam en asuntos y contenido
  • Incluye siempre enlace de baja funcional
  • No compres listas de correos

La interfaz está lenta

  • Aumenta la RAM disponible para el contenedor
  • Revisa el uso de CPU: docker stats
  • Optimiza la base de datos PostgreSQL
  • Considera usar un reverse proxy con caché

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.