Alojar Listmonk en un VPS administrado: sus newsletters en su servidor

Alojar Listmonk en un VPS administrado significa guardar sus listas de suscriptores y sus campañas en una máquina propia, que nuestros equipos mantienen actualizada y supervisan día y noche. Listmonk es software libre con licencia AGPL-3.0. Esta guía sigue su documentación oficial: la versión que elegir, Docker Compose, PostgreSQL, HTTPS, el envío por SMTP, los rebotes, el consentimiento, las copias de seguridad y las actualizaciones.

Simon Vasconcelos Lee Por Publicado el 12 de noviembre de 202613 minutos de lectura

Todas las guías

Lo esencial

  1. La licencia AGPL-3.0 permite usar Listmonk en una empresa sin ninguna licencia que comprar; si lo modifica, sus usuarios a distancia deben poder obtener el código fuente de su versión.
  2. Instale la versión estable 6.2.0 con una etiqueta Docker fija: la versión 7, que aparece en cabeza en GitHub, sigue siendo una beta.
  3. Docker Compose lanza Listmonk y PostgreSQL. Publique el puerto 9000 en local, sírvalo en HTTPS detrás de un proxy inverso e indique su «Root URL».
  4. Listmonk envía a través de los servidores SMTP que usted configure: para un envío masivo, tome un servicio de envío especializado en el 587, con SPF, DKIM y DMARC en su dominio.
  5. Prefiera el double opt-in, active el tratamiento de los rebotes y exporte la base con pg_dump antes de cada actualización.

Qué hace Listmonk

Listmonk gestiona sus listas de distribución y sus newsletters desde una interfaz web. Es un programa único, escrito en Go, cuya única dependencia es PostgreSQL. Sus listas son unidireccionales: usted escribe a sus suscriptores, y no se trata de una lista de debate entre ellos.

Lo que permite la licencia AGPL-3.0

Listmonk se publica bajo la licencia GNU AGPL versión 3. Puede usarlo, también en una empresa, y enviar sus campañas, así como las de sus clientes, sin ninguna licencia que comprar. Queda el coste del servidor y el de su servicio de envío.

El artículo 13 añade una condición propia de la AGPL: si modifica el programa, su versión debe ofrecer claramente a todos los que la usan a distancia, por la red, la posibilidad de obtener su código fuente, gratuitamente. Si distribuye copias, se aplican también las obligaciones de compartir el código de la licencia. Ejecutar Listmonk sin modificarlo no activa este artículo.

¿Qué versión de Listmonk instalar?

Un punto que conviene conocer antes de empezar. En GitHub, la etiqueta «Latest» designa ahora mismo la v7.0.0-beta.2 del 10 de noviembre de 2026, que el propio proyecto presenta como una beta. La última versión estable es la v6.2.0, que incluye correcciones de seguridad sobre los permisos. A 11 de noviembre de 2026, la imagen Docker latest designa esa v6.2.0.

VersiónImagen DockerEstado
v6.2.0listmonk/listmonk:v6.2.0Estable: la de esta guía
v7.0.0-beta.2listmonk/listmonk:betaBeta: para probar en una copia, con una copia de seguridad
nightlylistmonk/listmonk:nightlySin probar, según el proyecto: bajo su responsabilidad

La versión 7 sustituye toda la interfaz de administración, cambia algunas de sus direcciones, convierte el ajuste app.from_email en una lista de direcciones y modifica claves de traducción, lo que afecta a las plantillas personalizadas. Lea sus notas de versión antes de pasar a ella.

El archivo Compose del proyecto lanza --upgrade --yes en cada arranque: una imagen nueva migra la base sin preguntarle. Pero una base migrada no se puede volver a leer con una versión más antigua, y volver atrás obliga a restaurar una copia de seguridad. Con una etiqueta fija, como v6.2.0, el cambio de versión sigue siendo decisión suya.

La instalación con Docker Compose

El proyecto recomienda Docker Compose: su archivo lanza Listmonk y PostgreSQL a la vez. En un servidor con Docker instalado, cree una carpeta y descargue ese archivo:

Terminal
mkdir listmonk
cd listmonk
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

El proyecto pide adaptar este archivo a su entorno. Estas son las únicas líneas que cambiar, el resto no se toca:

docker-compose.yml, las líneas que modificar
x-db-credentials: &db-credentials
  POSTGRES_USER: &db-user listmonk
  POSTGRES_PASSWORD: &db-password un-mot-de-passe-long
  POSTGRES_DB: &db-name listmonk

services:
  app:
    image: listmonk/listmonk:v6.2.0
    ports:
      - "127.0.0.1:9000:9000"
    hostname: listmonk.example.com

Lance después los servicios, creando de antemano la cuenta Super Admin. Estas dos variables solo sirven en el primer arranque, y sin ellas la cuenta se crea en la primera visita a la interfaz: mejor que exista antes de abrir su dominio.

Terminal
LISTMONK_ADMIN_USER=votre-identifiant LISTMONK_ADMIN_PASSWORD=votre-mot-de-passe docker compose up -d

Sin Docker: el binario

Listmonk funciona también como programa independiente, junto a su propio servidor PostgreSQL, en versión 12 o superior, donde la base ya esté creada.

  1. Descargue el archivo de la v6.2.0 en la página de versiones del proyecto, por ejemplo listmonk_6.2.0_linux_amd64.tar.gz, evitando la beta que aparece en cabeza, y extraiga el binario.
  2. Genere el archivo de configuración y rellene después los accesos a la base en config.toml.
  3. Instale las tablas y lance después Listmonk.
Terminal
./listmonk --new-config
./listmonk --install
./listmonk

Por defecto, config.toml escucha en localhost:9000, lo que conviene detrás de un proxy inverso. El repositorio proporciona un archivo de servicio listmonk@.service para systemd.

El tamaño del servidor

El sitio del proyecto cita una instancia de producción que envía una campaña de más de 7 millones de correos con una fracción de un núcleo de procesador y un pico de 57 MB de memoria. No publica ni mínimo ni cifra para PostgreSQL, cuyo volumen crece con sus suscriptores, sus aperturas y sus clics. En un VPS administrado, descríbanos su uso y le recomendamos el tamaño adecuado.

HTTPS y el proxy inverso

Sus suscriptores hacen clic en enlaces que apuntan a su instancia: baja, confirmación, seguimiento de clics. Por eso se sirve en HTTPS con su propio nombre de dominio. Cree los registros A y AAAA de ese nombre hacia su servidor, donde los visitantes llegan por los puertos 80 y 443. La documentación de Listmonk deja la elección del proxy; estas son dos configuraciones habituales.

Con Caddy

Caddy obtiene y renueva solo el certificado:

Caddyfile
listmonk.example.com {
    reverse_proxy 127.0.0.1:9000
}

Con Nginx y Certbot

Nginx rechaza por defecto las peticiones de más de 1 MB, con un error 413. Para importar un archivo de suscriptores o imágenes, suba ese límite a la medida de sus archivos:

Bloque Nginx
server {
    listen 80;
    listen [::]:80;
    server_name listmonk.example.com;
    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Certbot instala después el certificado Let’s Encrypt y la redirección a HTTPS, y renueva el certificado por sí mismo:

Terminal
sudo certbot --nginx -d listmonk.example.com

Los primeros ajustes

Inicie sesión en https://listmonk.example.com/admin y abra «Settings»:

Lo que sigue siendo público y lo que puede cerrarse

Para filtrar el acceso, por dirección IP o mediante un proxy de autenticación, la documentación reparte así las rutas:

RutasFunciónAcceso
/admin/*, /api/*, /webhooks/bounceLa administración, su API y el webhook de rebotes internoPrivado
/subscription/*, /public/*Las páginas de suscripción y sus archivosPúblico
/link/*, /campaign/*El seguimiento de los enlaces y el píxel de seguimientoPúblico
/webhooks/service/*Los rebotes enviados por su servicio de envíoPúblico
/uploads/*Las imágenes de sus correosPúblico

El envío: Listmonk pasa por sus servidores SMTP

Listmonk prepara y dosifica sus correos y los confía después a los servidores SMTP que usted declare en «Settings», «SMTP». No los entrega él mismo a los buzones de sus suscriptores: la calidad de la entrega depende, por tanto, de ese servidor, de su dominio y de sus listas.

Para un envío masivo, elija un servicio de envío especializado: carga con la reputación de sus envíos y las firmas de su dominio, y sabe devolver los rebotes. Desde un VPS de Simafri, el envío pasa por un relé SMTP autenticado, en el puerto 587: aquí, el de ese servicio.

Como orientación, la documentación de Listmonk describe los rebotes de Amazon SES, de Azure Communication Services, de SendGrid, de Postmark, de Forward Email y de Lettermint. Compárelos según su volumen y sus destinatarios.

AjusteValorLo que comprueba
HostLa dirección SMTP de su servicioSustituye el valor de ejemplo proporcionado
Port587Los preajustes de la pantalla suelen proponer otro puerto: vuelva al 587
TLSSTARTTLSVa de la mano del puerto 587
Auth protocolEl de su servicio, a menudo LOGINCon el identificador y la contraseña SMTP del servicio

Haga clic después en «Test connection»: Listmonk envía un mensaje de prueba y muestra el error del servidor si el envío falla. Puede declarar varios servidores, elegir uno de ellos por campaña o dirigir los envíos según la dirección o el dominio de envío.

El caudal

Ajústelo en «Settings», «Performance», por debajo del límite de su servicio:

Un mensaje que falla se reintenta según el ajuste «Retries», en otras conexiones del servidor. Si vuelve a fallar, Listmonk lo anota como error y pasa al siguiente: vigile esos errores durante una campaña grande.

Entregabilidad, baja y consentimiento

Alojar la aplicación le deja a usted al mando de estos asuntos, y son ellos los que deciden si sus correos llegan.

SPF, DKIM y DMARC

Envíe desde una dirección de su dominio y publique en su zona DNS los registros SPF y DKIM que le dé su servicio de envío, junto con un registro DMARC. Google exige los tres a los remitentes de más de 5000 mensajes al día hacia cuentas de Gmail, con un dominio de envío alineado con SPF o DKIM, la baja en un clic para los mensajes de marketing y una tasa de denuncias de spam inferior al 0,30 %, idealmente inferior al 0,10 %.

La baja

El consentimiento de sus destinatarios

Listmonk aplica el tipo de lista que usted elija. En una lista con opt-in simple, un suscriptor añadido sin confirmación recibe igualmente sus campañas. En una lista con double opt-in, recibe primero un correo de confirmación, y solo los suscriptores confirmados reciben sus campañas. Es la opción que mejor protege su reputación de envío y que conserva un rastro claro del consentimiento.

Las normas dependen del país de sus destinatarios. En Francia, por ejemplo, la CNIL exige el consentimiento previo de los particulares, mediante una acción positiva como una casilla sin premarcar, con una excepción para sus clientes sobre productos o servicios similares. Entre profesionales, la prospección puede basarse en el interés legítimo si se refiere a su oficio. En todos los casos, cada mensaje identifica al remitente y ofrece un medio sencillo de rechazar los siguientes.

Escriba solo a personas que esperan sus mensajes. Una lista comprada o antigua hace subir los rebotes y las denuncias de spam, y es su dominio el que carga con las consecuencias.

El seguimiento de las aperturas y de los clics

El píxel de seguimiento y el seguimiento de los clics afectan a la privacidad, y la documentación pide usarlos respetando normas como el RGPD. Por defecto, este seguimiento no se asocia a cada suscriptor: la opción «Individual subscriber tracking» lo asocia, y «Disable tracking» lo corta por completo, en «Settings», «Privacy».

Los rebotes

Seguir escribiendo a una dirección que rechaza sus mensajes daña su reputación de envío. El tratamiento de los rebotes está desactivado al principio: actívelo en «Settings», «Bounces» y elija después una de estas dos vías.

Para un buzón dedicado, declárelo como dirección de retorno en «Settings», «SMTP», «Custom headers»:

Cabeceras personalizadas
[
  {"Return-Path": "your-bounce-inbox@example.com"}
]

Los ajustes iniciales son los que la documentación da para SES, y forman una buena base:

Tipo de reboteNúmeroAcción
Soft (leve)2None: ninguna
Hard (definitivo)1Blocklist: la dirección se bloquea
Complaint (denuncia de spam)1Blocklist: la dirección se bloquea

PostgreSQL, la única dependencia

Listmonk requiere PostgreSQL 12 o superior. El archivo Compose aporta postgres:17-alpine, con sus datos en el volumen Docker listmonk-data. Suscriptores, campañas, plantillas, estadísticas y la mayoría de los ajustes viven en él; solo los accesos a la base y la dirección de escucha permanecen en la configuración.

Para apuntar a un servidor PostgreSQL existente, modifique las variables LISTMONK_db__host, LISTMONK_db__port, LISTMONK_db__user, LISTMONK_db__password y LISTMONK_db__database del servicio app.

Listmonk está pensado para listas grandes. A medida que la base crece, es ella la que puede ralentizar la interfaz: con millones de suscriptores, el panel de control y los contadores pueden tardar decenas de segundos en mostrarse. El proyecto aconseja entonces dos medidas:

Terminal, en la carpeta del docker-compose.yml
docker compose exec db psql -U listmonk -d listmonk -c 'VACUUM ANALYZE;'

Copias de seguridad y actualizaciones

Dos elementos forman su instancia: la base PostgreSQL y la carpeta uploads, si sus imágenes permanecen en el disco. pg_dump produce una exportación coherente sin detener Listmonk ni bloquear los demás accesos a la base:

Terminal, en la carpeta del docker-compose.yml
docker compose exec -T db pg_dump -U listmonk listmonk > listmonk-$(date +%F).sql
tar -czf listmonk-uploads-$(date +%F).tar.gz uploads

Para restaurar, detenga Listmonk, vacíe la base y vuelva a cargar después la exportación. Como precisa la documentación, este gesto borra la base existente:

Terminal
docker compose stop app
docker compose exec db psql -U listmonk -d listmonk -c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;'
docker compose exec -T db psql -U listmonk -d listmonk < listmonk-2026-11-01.sql
docker compose start app

Actualizar

  1. Lea las notas de la nueva versión: Listmonk le avisa de las nuevas versiones en su interfaz, y algunas incluyen correcciones de seguridad.
  2. Exporte la base, como pide el proyecto antes de cualquier actualización.
  3. Cambie la etiqueta de la imagen en docker-compose.yml.
  4. Ejecute los comandos de la documentación. El archivo Compose migra la base al arrancar.
Terminal
docker compose down app
docker compose pull
docker compose up app -d

Con el binario, detenga Listmonk, sustituya el binario, ejecute ./listmonk --upgrade y reinícielo después. Para volver a una versión anterior, restaure la exportación hecha antes de la actualización y vuelva a poner la etiqueta antigua.

Quién hace qué en un VPS administrado

El autoalojamiento exige mantener el servidor además de la aplicación. En un VPS administrado, nuestros equipos se encargan del servidor y siguen su instancia de forma proactiva; Listmonk sigue siendo su software, con sus ajustes, sus listas y sus campañas.

TemaNuestros equiposUsted
El servidorActualizaciones del sistema y de seguridad, con intervenciones en el servidor incluidasEl momento que mejor convenga a su actividad
La supervisiónServidor vigilado las 24 horas del día, los 7 días de la semana, con intervención sin esperar su llamadaEl seguimiento de sus campañas y de sus rebotes
ListmonkSeguimiento proactivo: errores, lentitud y espacio en disco detectados, corrección recomendadaSu instalación, sus actualizaciones y sus ajustes, que aplica usted o su asistente de IA
El envíoUn servidor que llega a su relé SMTP en el puerto 587Su servicio de envío, sus registros DNS, sus listas y el consentimiento de sus destinatarios
Las copias de seguridadCada noche, cifradas y guardadas fuera de la máquina; restauración incluidaLa petición de restauración, y su exportación antes de cada actualización
La migraciónSu servidor actual migrado, gratisEl momento del cambio

Si prefiere que nuestros equipos intervengan en la propia aplicación, ese servicio se factura por horas o a precio cerrado, con un presupuesto comunicado antes de la intervención.

Listmonk, en un servidor que cuidamos por usted

Con un VPS administrado de Simafri, nuestros equipos mantienen actualizado el servidor de su instancia de Listmonk, lo vigilan día y noche e intervienen sin esperar su llamada; también siguen su instancia de forma proactiva y le recomiendan las correcciones útiles, que aplica usted o su asistente de IA. Las copias de seguridad se cifran cada noche y se guardan fuera de la máquina, su restauración está incluida, y la migración de su servidor actual es gratuita.

Descubrir los VPS administrados

Preguntas frecuentes

¿Listmonk es gratuito para una empresa?

Sí. Listmonk tiene licencia AGPL-3.0: puede usarlo en su empresa sin ninguna licencia que comprar. Si lo modifica, sus usuarios a distancia deben poder obtener el código fuente de su versión. Quedan el coste del servidor y el de su servicio de envío.

¿Qué versión de Listmonk instalar?

La v6.2.0, última versión estable a 11 de noviembre de 2026. La v7.0.0-beta.2, que aparece en cabeza en GitHub, es una beta. En Docker Compose, fije la imagen en listmonk/listmonk:v6.2.0: el cambio de versión sigue siendo entonces decisión suya, porque una base migrada no se puede volver a leer con una versión más antigua.

¿Cómo instalar Listmonk con Docker Compose?

Descargue el archivo docker-compose.yml del proyecto, cambie la contraseña de la base y la etiqueta de la imagen, y ejecute docker compose up -d. La interfaz responde en el puerto 9000, con PostgreSQL al lado. Sírvala en HTTPS detrás de un proxy inverso e indique su Root URL.

¿Qué servidor SMTP usar con Listmonk?

Listmonk envía a través de los servidores SMTP que usted configure. Para un envío masivo, tome un servicio de envío especializado, en STARTTLS en el puerto 587, y publique SPF, DKIM y DMARC en su dominio. La documentación de Listmonk describe, por ejemplo, los rebotes de Amazon SES, SendGrid y Postmark.

¿Cómo gestionar los rebotes en Listmonk?

Active el tratamiento en Settings, Bounces y conecte después el webhook de su servicio de envío o un buzón POP3 dedicado. Los ajustes iniciales bloquean una dirección en cuanto hay un rebote definitivo o una denuncia de spam.

¿Cómo hacer copia de seguridad de Listmonk?

Exporte la base con pg_dump, sin detener el servicio, y conserve la carpeta uploads si sus imágenes están en el disco. El proyecto pide esta exportación antes de cada actualización, porque una versión anterior no vuelve a leer una base ya migrada.

¿Listmonk gestiona el consentimiento y la baja?

Da las herramientas para ello: listas con double opt-in, enlace de baja en sus plantillas, cabecera List-Unsubscribe, exportación y borrado de los datos por parte del suscriptor. El consentimiento en sí lo debe recabar usted, según las normas del país de sus destinatarios.

¿Un VPS administrado cubre Listmonk?

Un VPS administrado cubre el servidor: sistema, seguridad, supervisión y copias de seguridad. Nuestros equipos siguen también su instancia de forma proactiva y le recomiendan las correcciones útiles, que aplica usted. Una intervención en la aplicación se factura por horas o a precio cerrado.

Fuentes y documentación oficial

Contáctenos