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.
Por Simon Vasconcelos Lee
Publicado el 12 de noviembre de 202613 minutos de lectura
pg_dump antes de cada actualización.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.
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.
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ón | Imagen Docker | Estado |
|---|---|---|
| v6.2.0 | listmonk/listmonk:v6.2.0 | Estable: la de esta guía |
| v7.0.0-beta.2 | listmonk/listmonk:beta | Beta: para probar en una copia, con una copia de seguridad |
| nightly | listmonk/listmonk:nightly | Sin 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.
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:
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:
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
listmonk como valor inicial. Cámbiela antes del primer arranque, porque la imagen PostgreSQL solo lee esta variable con una carpeta de datos vacía.latest, por la razón vista más arriba.127.0.0.1: es una adaptación nuestra. El archivo del proyecto publica el puerto 9000 sin límite de direcciones, y limita ya PostgreSQL a la dirección local. Tratado del mismo modo, Listmonk solo es accesible a través del proxy inverso.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.
LISTMONK_ADMIN_USER=votre-identifiant LISTMONK_ADMIN_PASSWORD=votre-mot-de-passe docker compose up -d
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.
listmonk_6.2.0_linux_amd64.tar.gz, evitando la beta que aparece en cabeza, y extraiga el binario.config.toml../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 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.
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.
Caddy obtiene y renueva solo el certificado:
listmonk.example.com {
reverse_proxy 127.0.0.1:9000
}
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:
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:
sudo certbot --nginx -d listmonk.example.com
Inicie sesión en https://listmonk.example.com/admin y abra «Settings»:
https://listmonk.example.com. Listmonk obtiene de ella los enlaces de baja, de confirmación y de seguimiento de sus correos. Su valor inicial, http://localhost:9000, no funcionaría para sus suscriptores./listmonk/uploads, la carpeta que el archivo Compose monta en el servidor.Para filtrar el acceso, por dirección IP o mediante un proxy de autenticación, la documentación reparte así las rutas:
| Rutas | Función | Acceso |
|---|---|---|
/admin/*, /api/*, /webhooks/bounce | La administración, su API y el webhook de rebotes interno | Privado |
/subscription/*, /public/* | Las páginas de suscripción y sus archivos | Público |
/link/*, /campaign/* | El seguimiento de los enlaces y el píxel de seguimiento | Público |
/webhooks/service/* | Los rebotes enviados por su servicio de envío | Público |
/uploads/* | Las imágenes de sus correos | Público |
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.
| Ajuste | Valor | Lo que comprueba |
|---|---|---|
| Host | La dirección SMTP de su servicio | Sustituye el valor de ejemplo proporcionado |
| Port | 587 | Los preajustes de la pantalla suelen proponer otro puerto: vuelva al 587 |
| TLS | STARTTLS | Va de la mano del puerto 587 |
| Auth protocol | El de su servicio, a menudo LOGIN | Con 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.
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.
Alojar la aplicación le deja a usted al mando de estos asuntos, y son ellos los que deciden si sus correos llegan.
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 %.
{{ UnsubscribeURL }} en el pie de su plantilla. Ese enlace lleva a la gestión de las preferencias y a la baja.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 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».
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.
https://listmonk.example.com/webhooks/service/ses, cambiando la última palabra según el servicio. Esta dirección debe seguir siendo pública.Para un buzón dedicado, declárelo como dirección de retorno en «Settings», «SMTP», «Custom headers»:
[
{"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 rebote | Número | Acción |
|---|---|---|
| Soft (leve) | 2 | None: ninguna |
| Hard (definitivo) | 1 | Blocklist: la dirección se bloquea |
| Complaint (denuncia de spam) | 1 | Blocklist: la dirección se bloquea |
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:
VACUUM ANALYZE en una base grande, por ejemplo cada semana. El comando bloquea las consultas mientras se ejecuta, en general unos segundos.docker compose exec db psql -U listmonk -d listmonk -c 'VACUUM ANALYZE;'
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:
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:
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
docker-compose.yml.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.
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.
| Tema | Nuestros equipos | Usted |
|---|---|---|
| El servidor | Actualizaciones del sistema y de seguridad, con intervenciones en el servidor incluidas | El momento que mejor convenga a su actividad |
| La supervisión | Servidor vigilado las 24 horas del día, los 7 días de la semana, con intervención sin esperar su llamada | El seguimiento de sus campañas y de sus rebotes |
| Listmonk | Seguimiento proactivo: errores, lentitud y espacio en disco detectados, corrección recomendada | Su instalación, sus actualizaciones y sus ajustes, que aplica usted o su asistente de IA |
| El envío | Un servidor que llega a su relé SMTP en el puerto 587 | Su servicio de envío, sus registros DNS, sus listas y el consentimiento de sus destinatarios |
| Las copias de seguridad | Cada noche, cifradas y guardadas fuera de la máquina; restauración incluida | La petición de restauración, y su exportación antes de cada actualización |
| La migración | Su servidor actual migrado, gratis | El 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.
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.
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.
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.
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.
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.
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.
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.
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 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.
Simafri
Hablemos de su proyecto
Díganos en pocas palabras lo que necesita: le respondemos rápidamente.
¡Gracias! Su solicitud ha sido enviada. Le responderemos en breve.
¿Prefiere el correo? Escríbanos a support@simafri.com.