Listmonk hosten op een Managed VPS betekent dat u uw abonneelijsten en campagnes bewaart op een machine die van u is, en die ons team bijwerkt en dag en nacht in de gaten houdt. Listmonk is opensourcesoftware onder de AGPL-3.0-licentie. Deze gids volgt de officiële documentatie: de te kiezen versie, Docker Compose, PostgreSQL, HTTPS, verzenden via SMTP, bounces, toestemming, back-ups en updates.
Door Simon Vasconcelos Lee
Gepubliceerd op 12 november 2026Leestijd: 13 minuten
pg_dump vóór elke update.Listmonk beheert uw mailinglijsten en nieuwsbrieven vanuit een webinterface. Het is één enkel programma, geschreven in Go, waarvan PostgreSQL de enige afhankelijkheid is. De lijsten zijn eenrichtingsverkeer: u schrijft naar uw abonnees, en het is geen discussielijst tussen hen.
Listmonk wordt gepubliceerd onder de GNU AGPL-licentie, versie 3. U kunt het gebruiken, ook in een bedrijf, en uw campagnes en die van uw klanten versturen, zonder een licentie te kopen. Wat overblijft, zijn de kosten van de server en die van uw verzenddienst.
Artikel 13 voegt een voorwaarde toe die eigen is aan de AGPL: als u het programma wijzigt, moet uw versie iedereen die het op afstand, via het netwerk, gebruikt duidelijk de mogelijkheid bieden de broncode gratis te verkrijgen. Verspreidt u kopieën, dan gelden ook de verplichtingen van de licentie om de code te delen. Listmonk ongewijzigd laten draaien activeert dit artikel niet.
Iets om te weten voordat u begint. Op GitHub wijst het label “Latest” op dit moment naar v7.0.0-beta.2 van 10 november 2026, die het project zelf een bèta noemt. De laatste stabiele versie is v6.2.0, die beveiligingsfixes voor de rechten bevat. Op 11 november 2026 wijst de Docker-image latest naar deze v6.2.0.
| Versie | Docker-image | Status |
|---|---|---|
| v6.2.0 | listmonk/listmonk:v6.2.0 | Stabiel: die van deze gids |
| v7.0.0-beta.2 | listmonk/listmonk:beta | Bèta: uit te proberen op een kopie, met een back-up |
| nightly | listmonk/listmonk:nightly | Volgens het project niet getest: op eigen risico |
Versie 7 vervangt de hele beheerinterface, wijzigt enkele adressen ervan, maakt van de instelling app.from_email een lijst met adressen en wijzigt vertaalsleutels, wat aangepaste sjablonen raakt. Lees de release-opmerkingen voordat u overstapt.
Het Compose-bestand van het project voert bij elke start --upgrade --yes uit: een nieuwe image migreert de database zonder het u te vragen. Een gemigreerde database is echter niet meer te lezen met een oudere versie, en teruggaan vraagt een back-up terug te zetten. Met een vaste tag, zoals v6.2.0, blijft de overstap naar een andere versie uw beslissing.
Het project beveelt Docker Compose aan: zijn bestand start Listmonk en PostgreSQL samen. Maak op een server waar Docker is geïnstalleerd een map aan en haal dat bestand op:
mkdir listmonk
cd listmonk
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml
Het project vraagt dit bestand aan uw omgeving aan te passen. Dit zijn de enige regels die u wijzigt, de rest blijft staan:
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 als beginwaarde. Wijzig het vóór de eerste start, want de PostgreSQL-image leest deze variabele alleen bij een lege gegevensmap.latest, om de hierboven genoemde reden.127.0.0.1: dit is onze aanpassing. Het bestand van het project publiceert poort 9000 zonder adresbeperking, en beperkt PostgreSQL al tot het lokale adres. Op dezelfde manier behandeld is Listmonk alleen via de reverse proxy bereikbaar.Start daarna de diensten en maak het Super Admin-account vooraf aan. Deze twee variabelen dienen alleen bij de eerste start, en zonder hen wordt het account aangemaakt bij het eerste bezoek aan de interface: laat het liever bestaan voordat u uw domein opent.
LISTMONK_ADMIN_USER=votre-identifiant LISTMONK_ADMIN_PASSWORD=votre-mot-de-passe docker compose up -d
Listmonk draait ook als losstaand programma, naast uw eigen PostgreSQL-server, versie 12 of nieuwer, waar de database al is aangemaakt.
listmonk_6.2.0_linux_amd64.tar.gz, en vermijd de bèta die bovenaan staat, en pak het binaire bestand uit.config.toml in../listmonk --new-config
./listmonk --install
./listmonk
Standaard luistert config.toml op localhost:9000, wat past achter een reverse proxy. De repository levert een servicebestand listmonk@.service voor systemd.
De website van het project noemt een productie-instantie die een campagne van meer dan 7 miljoen e-mails verstuurt met een fractie van een processorcore en een piek van 57 MB geheugen. Het publiceert geen minimum en geen cijfer voor PostgreSQL, waarvan het volume groeit met uw abonnees, opens en klikken. Beschrijf op een managed VPS uw gebruik aan ons, dan raden wij u de passende grootte aan.
Uw abonnees klikken op links die naar uw instantie wijzen: uitschrijven, bevestigen, klikregistratie. Ze wordt dus via HTTPS aangeboden op een eigen domeinnaam. Maak de A- en AAAA-records van die naam naar uw server aan, waar de bezoekers binnenkomen op de poorten 80 en 443. De documentatie van Listmonk laat de keuze van de proxy vrij, hier twee gangbare configuraties.
Caddy verkrijgt en vernieuwt het certificaat vanzelf:
listmonk.example.com {
reverse_proxy 127.0.0.1:9000
}
Nginx weigert standaard verzoeken van meer dan 1 MB, met een fout 413. Om een bestand met abonnees of afbeeldingen te importeren, verhoogt u deze limiet naar de maat van uw bestanden:
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 plaatst vervolgens het Let’s Encrypt-certificaat en de doorverwijzing naar HTTPS, en vernieuwt het certificaat daarna zelf:
sudo certbot --nginx -d listmonk.example.com
Meld u aan op https://listmonk.example.com/admin en open daarna “Settings”:
https://listmonk.example.com. Listmonk haalt daaruit de links voor uitschrijven, bevestigen en klikregistratie in uw e-mails. De beginwaarde, http://localhost:9000, zou bij uw abonnees niet werken./listmonk/uploads, de map die het Compose-bestand op de server koppelt.Om de toegang te filteren, op IP-adres of via een authenticatieproxy, verdeelt de documentatie de routes zo:
| Routes | Rol | Toegang |
|---|---|---|
/admin/*, /api/*, /webhooks/bounce | Het beheer, zijn API en de interne bounce-webhook | Privé |
/subscription/*, /public/* | De aanmeldpagina's en hun bestanden | Openbaar |
/link/*, /campaign/* | De linkregistratie en de trackingpixel | Openbaar |
/webhooks/service/* | De bounces die uw verzenddienst stuurt | Openbaar |
/uploads/* | De afbeeldingen in uw e-mails | Openbaar |
Listmonk bereidt uw e-mails voor en bepaalt het tempo, en vertrouwt ze daarna toe aan de SMTP-servers die u opgeeft in “Settings”, “SMTP”. Het levert ze niet zelf af in de mailboxen van uw abonnees: de kwaliteit van de aflevering hangt dus af van die server, van uw domein en van uw lijsten.
Kies voor massaverzending een gespecialiseerde verzenddienst: die draagt de reputatie van uw verzendingen en de handtekeningen van uw domein, en weet bounces terug te melden. Vanaf een Simafri-VPS loopt het verzenden via een geauthenticeerde SMTP-relay, op poort 587: hier die van deze dienst.
Ter oriëntatie beschrijft de documentatie van Listmonk de bounces van Amazon SES, Azure Communication Services, SendGrid, Postmark, Forward Email en Lettermint. Vergelijk ze naargelang uw volume en uw ontvangers.
| Instelling | Waarde | Wat u controleert |
|---|---|---|
| Host | Het SMTP-adres van uw dienst | Vervangt de meegeleverde voorbeeldwaarde |
| Port | 587 | De voorinstellingen van het scherm stellen vaak een andere poort voor: ga terug naar 587 |
| TLS | STARTTLS | Hoort bij poort 587 |
| Auth protocol | Dat van uw dienst, vaak LOGIN | Met de gebruikersnaam en het SMTP-wachtwoord van de dienst |
Klik daarna op “Test connection”: Listmonk verstuurt een testbericht en toont de fout van de server als het verzenden mislukt. U kunt meerdere servers opgeven, er per campagne een kiezen, of de verzendingen routeren naargelang het afzenderadres of -domein.
Stel het in onder “Settings”, “Performance”, onder de limiet van uw dienst:
Een bericht dat mislukt, wordt opnieuw geprobeerd volgens de instelling “Retries”, op andere verbindingen van de server. Mislukt het nog steeds, dan noteert Listmonk het als fout en gaat naar het volgende: houd deze fouten in de gaten tijdens een grote campagne.
De applicatie hosten laat u zelf de baas over deze onderwerpen, en zij bepalen of uw e-mails aankomen.
Verstuur vanaf een adres van uw domein en publiceer in de DNS-zone ervan de SPF- en DKIM-records die uw verzenddienst u geeft, met een DMARC-record. Google vraagt alle drie van afzenders van meer dan 5.000 berichten per dag naar Gmail-accounts, met een verzenddomein dat is afgestemd op SPF of DKIM, uitschrijven met één klik voor marketingberichten, en een spammeldingspercentage onder 0,30 %, idealiter onder 0,10 %.
{{ UnsubscribeURL }} in de voettekst van uw sjabloon. Die link leidt naar het beheer van voorkeuren en het uitschrijven.Listmonk past het lijsttype toe dat u kiest. Op een lijst met enkele opt-in ontvangt een abonnee die zonder bevestiging is toegevoegd toch uw campagnes. Op een lijst met dubbele opt-in ontvangt hij eerst een bevestigingsmail, en alleen bevestigde abonnees ontvangen uw campagnes. Dat is de keuze die uw verzendreputatie het best beschermt en een duidelijk spoor van de toestemming bewaart.
De regels hangen af van het land van uw ontvangers. In Frankrijk bijvoorbeeld vraagt de CNIL vooraf toestemming van particulieren, via een actieve handeling zoals een niet vooraf aangevinkt vakje, met een uitzondering voor uw klanten bij soortgelijke producten of diensten. Tussen bedrijven kan prospectie berusten op gerechtvaardigd belang als ze hun beroep betreft. In alle gevallen identificeert elk bericht de afzender en biedt het een eenvoudige manier om de volgende te weigeren.
Schrijf alleen aan mensen die uw berichten verwachten. Een gekochte of oude lijst laat bounces en spammeldingen stijgen, en uw domein draagt de gevolgen.
De trackingpixel en de klikregistratie raken aan de privacy, en de documentatie vraagt ze te gebruiken met inachtneming van regels als de AVG. Standaard is deze registratie niet aan elke abonnee gekoppeld: de optie “Individual subscriber tracking” koppelt haar, en “Disable tracking” zet haar helemaal uit, in “Settings”, “Privacy”.
Blijven schrijven naar een adres dat uw berichten afwijst, schaadt uw verzendreputatie. De verwerking van bounces is in het begin uitgeschakeld: schakel haar in onder “Settings”, “Bounces” en kies daarna een van deze twee wegen.
https://listmonk.example.com/webhooks/service/ses, waarbij het laatste woord per dienst verschilt. Dit adres moet openbaar blijven.Geef voor een eigen mailbox deze op als retouradres in “Settings”, “SMTP”, “Custom headers”:
[
{"Return-Path": "your-bounce-inbox@example.com"}
]
De beginwaarden zijn die welke de documentatie voor SES geeft, en ze vormen een goede basis:
| Type bounce | Aantal | Actie |
|---|---|---|
| Soft (licht) | 2 | None: geen |
| Hard (definitief) | 1 | Blocklist: het adres wordt geblokkeerd |
| Complaint (spammelding) | 1 | Blocklist: het adres wordt geblokkeerd |
Listmonk vraagt PostgreSQL 12 of nieuwer. Het Compose-bestand brengt postgres:17-alpine mee, met de gegevens in het Docker-volume listmonk-data. Abonnees, campagnes, sjablonen, statistieken en de meeste instellingen staan daar; alleen de toegangsgegevens van de database en het luisteradres blijven in de configuratie.
Om op een bestaande PostgreSQL-server te mikken, wijzigt u de variabelen LISTMONK_db__host, LISTMONK_db__port, LISTMONK_db__user, LISTMONK_db__password en LISTMONK_db__database van de dienst app.
Listmonk is ontworpen voor grote lijsten. Naarmate de database groeit, kan zij de interface vertragen: met miljoenen abonnees kunnen het dashboard en de tellers tientallen seconden nodig hebben om te verschijnen. Het project raadt dan twee handelingen aan:
VACUUM ANALYZE op een grote database, bijvoorbeeld elke week. De opdracht blokkeert de query's tijdens haar uitvoering, doorgaans enkele seconden.docker compose exec db psql -U listmonk -d listmonk -c 'VACUUM ANALYZE;'
Twee onderdelen vormen uw instantie: de PostgreSQL-database en de map uploads, als uw afbeeldingen op de schijf blijven. pg_dump maakt een consistente export zonder Listmonk te stoppen en zonder de andere toegang tot de database te blokkeren:
docker compose exec -T db pg_dump -U listmonk listmonk > listmonk-$(date +%F).sql
tar -czf listmonk-uploads-$(date +%F).tar.gz uploads
Om terug te zetten, stopt u Listmonk, maakt u de database leeg en laadt u de export opnieuw. Zoals de documentatie preciseert, wist deze handeling de bestaande database:
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
Met het binaire bestand stopt u Listmonk, vervangt u het binaire bestand, voert u ./listmonk --upgrade uit en start u het daarna opnieuw. Om terug te keren naar een eerdere versie zet u de export terug die vóór de update is gemaakt en zet u de oude tag terug.
Self-hosting vraagt dat u naast de applicatie ook de server beheert. Op een managed VPS neemt ons team de server voor zijn rekening en houdt het uw instantie proactief in de gaten; Listmonk blijft uw software, met zijn instellingen, uw lijsten en uw campagnes.
| Onderwerp | Ons team | U |
|---|---|---|
| De server | Systeem- en beveiligingsupdates, ingrepen op de server inbegrepen | Het moment dat bij uw activiteit past |
| De monitoring | Server 24 uur per dag en 7 dagen per week bewaakt, met ingrijpen zonder op uw oproep te wachten | De opvolging van uw campagnes en uw bounces |
| Listmonk | Proactief toezicht: fouten, vertragingen en schijfruimte opgespoord, correctie aangeraden | De installatie, de updates en de instellingen, die u toepast, zelf of via uw AI-assistent |
| Het verzenden | Een server die uw SMTP-relay bereikt op poort 587 | Uw verzenddienst, uw DNS-records, uw lijsten en de toestemming van uw ontvangers |
| De back-ups | Elke nacht, versleuteld en buiten de machine bewaard; terugzetten inbegrepen | Het verzoek om terug te zetten, en uw export vóór elke update |
| De migratie | Uw huidige server gemigreerd, gratis | Het moment van de overschakeling |
Wilt u liever dat ons team in de applicatie zelf ingrijpt, dan wordt die dienstverlening per uur of tegen een vast bedrag gefactureerd, met een offerte voordat het werk begint.
Met een Managed VPS van Simafri houdt ons team de server van uw Listmonk-instantie up-to-date, bewaakt hem dag en nacht en grijpt in zonder op uw oproep te wachten; het houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast, zelf of via uw AI-assistent. De back-ups worden elke nacht versleuteld en buiten de machine bewaard, het terugzetten is inbegrepen, en de migratie van uw huidige server is gratis.
Ja. Listmonk valt onder de AGPL-3.0-licentie: u mag het in een bedrijf gebruiken zonder een licentie te kopen. Wijzigt u het, dan moeten uw gebruikers op afstand de broncode van uw versie kunnen verkrijgen. Wat overblijft, zijn de kosten van de server en die van uw verzenddienst.
v6.2.0, de laatste stabiele versie op 11 november 2026. v7.0.0-beta.2, bovenaan getoond op GitHub, is een bèta. Leg in Docker Compose de image vast op listmonk/listmonk:v6.2.0: de overstap naar een andere versie blijft dan uw beslissing, want een gemigreerde database is niet meer te lezen met een oudere versie.
Haal het bestand docker-compose.yml van het project op, wijzig het wachtwoord van de database en de tag van de image en voer docker compose up -d uit. De interface antwoordt op poort 9000, met PostgreSQL ernaast. Bied haar aan via HTTPS achter een reverse proxy en vul de Root URL in.
Listmonk verstuurt via de SMTP-servers die u instelt. Neem voor massaverzending een gespecialiseerde verzenddienst, in STARTTLS op poort 587, en publiceer SPF, DKIM en DMARC op uw domein. De documentatie van Listmonk beschrijft bijvoorbeeld de bounces van Amazon SES, SendGrid en Postmark.
Schakel de verwerking in onder Settings, Bounces en koppel daarna de webhook van uw verzenddienst of een eigen POP3-mailbox. De beginwaarden blokkeren een adres bij een definitieve bounce of een spammelding.
Exporteer de database met pg_dump, zonder de dienst te stoppen, en bewaar de map uploads als uw afbeeldingen op de schijf staan. Het project vraagt deze export vóór elke update, want een eerdere versie leest een al gemigreerde database niet meer.
Het geeft er de middelen voor: lijsten met dubbele opt-in, een uitschrijflink in uw sjablonen, de header List-Unsubscribe, export en wissen van gegevens door de abonnee. De toestemming zelf moet u zelf verzamelen, volgens de regels van het land van uw ontvangers.
Een managed VPS dekt de server: systeem, beveiliging, monitoring en back-ups. Ons team houdt ook uw instantie proactief in de gaten en raadt u de nuttige correcties aan, die u toepast. Een ingreep in de applicatie wordt per uur of tegen een vast bedrag gefactureerd.
Simafri
Laten we het over uw website hebben
Vertel ons in een paar woorden over uw project: wij nemen snel contact met u op.
Bedankt! Uw aanvraag is verzonden. We nemen spoedig contact met u op.
Liever per e-mail? Schrijf ons op support@simafri.com.