Launch a Self-Hosted Newsletter with Keila and Docker
Deploy Keila, a self-hosted newsletter platform, with Docker and EasyPanel. Step-by-step guide covering SMTP setup, double opt-in, contacts, and campaigns.

A self-hosted newsletter platform gives you full control of your subscriber data, email templates, and sending infrastructure, without paying per-contact fees to Mailchimp or Brevo. Keila is an open-source option built in Elixir. It runs on your server via Docker, uses PostgreSQL for storage, and connects to any SMTP provider (or AWS SES, Sendgrid, Mailgun, Postmark) to deliver campaigns.
Since we first published this guide in late 2023, Keila has matured a lot. Version 0.30 added transactional emails via API and reusable templates with content slots. Double opt-in, MJML support, welcome emails, and interaction-based segmentation are all built in now. The project has around 2,200 GitHub stars and is licensed under AGPL-3.0.
This guide walks through deploying Keila on a VPS using EasyPanel, the quickest way to get a working newsletter setup. You’ll end up with a platform you can start sending from in under 30 minutes.
- Self-hosted newsletter platform with full data ownership
- Double opt-in with captcha protection and customizable confirmation emails
- Visual block editor with MJML template support
- Transactional email API for order confirmations and password resets
- Campaign statistics with open and click tracking
- Multi-language interface (8 languages supported)
If you want to explore more self-hosted Docker applications, check out Best Docker Containers for Home Server. And once your server is running, set up Server and Docker monitoring to keep an eye on resource usage.
What is Keila?
Keila is an open-source newsletter platform built with Elixir and Phoenix. It’s licensed under AGPL-3.0 and designed for self-hosting. You run it on your own server, you own your data. No third party has access to your subscriber list or campaign content.
The architecture is straightforward. Keila runs as a Docker container, connects to PostgreSQL for data storage, and uses your configured email provider (SMTP, AWS SES, Sendgrid, Mailgun, or Postmark) to deliver messages. Subscribers interact with signup forms, confirmation pages, and unsubscribe links that Keila serves directly from your server.
AGPL-3.0 license note
If you modify Keila’s source code and run it as a network service, you must make the modified source available to all users who interact with it, including subscribers who use signup forms, unsubscribe pages, or tracking endpoints. For most self-hosters who run Keila unmodified, this is not an issue.
Keila prioritizes privacy by default. Campaign tracking (opens, clicks) is opt-in per campaign, so you can send newsletters without any tracking pixels or link redirects if you prefer. The platform supports 8 languages: English, German, French, Spanish, Bulgarian, Hungarian, Brazilian Portuguese, and Italian.
Key features of Keila
Keila has evolved from a basic newsletter tool into a full-featured open source email marketing platform. Here’s what it offers as of v0.30.2:
Contact management
Import contacts via CSV, add custom fields, and use tags to organize your list. Smart segments let you filter contacts based on criteria you define, including interaction-based segmentation (introduced in v0.18) that targets subscribers by opens, clicks, or campaign engagement. Contact search and sorting are built in for quick lookups.
Email editor and templates
Keila includes a visual block editor for building campaigns without code. You can also write in Markdown, use MJML for responsive templates (added in v0.15), or fall back to plain text. Mobile and desktop previews let you check how campaigns render before sending. The social media icons block (v0.18) adds share links to your emails. As of v0.30, reusable templates with content slots let you maintain consistent branding across campaigns.
Double opt-in and compliance
Double opt-in was added in v0.13 and is now a mature feature. You get configurable confirmation email subjects and body text, custom failure messages and redirect URLs, and protected opt-in links (v0.19) that prevent accidental activation by mail scanners. Captcha protection supports both hCaptcha and Friendly Captcha to block bot signups. Keila is GDPR-friendly by design. No user tracking unless you explicitly enable it per campaign.
Sending and deliverability
Keila natively supports SMTP, AWS SES, Sendgrid, Mailgun, and Postmark as sender types. Welcome emails (v0.19) automatically greet new subscribers. You can send campaign preview/test emails before launching to your full list. The new email scheduler introduced in v0.20 is much faster for large campaigns.
Transactional emails and API
Starting with v0.30, Keila offers a transactional emails API for sending one-off messages like order confirmations, password resets, and notifications. The REST API also covers contacts, campaigns, and forms, so you can integrate Keila into your existing applications.
Keila has grown a lot
As of v0.30.2 (June 2026), Keila supports transactional emails, reusable templates, MJML, welcome emails, and interaction-based segmentation, features that were missing when this article was first published in November 2023.
How to install Keila with Docker and EasyPanel
The easiest way to deploy Keila on a VPS is through EasyPanel. It handles Docker container management, domain configuration, SSL certificates, and database provisioning with a few clicks. Docker Compose is also available if you prefer manual setup. The Docker Commands You Must Know guide covers the basics.
Get Hetzner €20 Free Hostinger VPSDeploy a Hetzner VPS
You need a server with at least 2 vCPUs and 2 GB of RAM for EasyPanel (Keila itself can run on 1 GB). The Hetzner CX22 plan (2 vCPU, 4 GB RAM, ~€5/month) is a good fit. Ubuntu 22.04 or 24.04 works well as the base OS.
If you’re not familiar with Hetzner, read the Hetzner Cloud Review for details on their infrastructure and pricing. You can also compare VPS providers if you want alternatives, or browse the Best Self-Hosted Server Panels for other control panel options.
Hetzner €20 Free Hostinger VPSInstall EasyPanel
SSH into your server and run the EasyPanel installer:
curl -sSL https://get.easypanel.io | sh
This installs Docker, configures the EasyPanel dashboard, and sets up HTTPS access. Follow the complete EasyPanel setup tutorial for proper configuration including firewall rules and user management.
Create an EasyPanel project
After installing EasyPanel, open the dashboard and create a new project. Select Keila from the template library. EasyPanel will pre-fill the service configuration.

Template version is pinned
EasyPanel’s Keila template pins v0.18. To access features like transactional emails, reusable templates, and the new email scheduler (v0.20+), change the image tag to pentacent/keila:0.30 after creation.
Create Keila in EasyPanel
Fill in the creation form with these fields:
- App Service Name: A name for the Keila container (e.g.,
keila-newsletter) - App Service Image: Use
pentacent/keila:0.30for the latest stable release instead of:latest - Database Service Name: A name for the PostgreSQL container (e.g.,
keila-db) - SMTP settings: System From Email, SMTP Host, SMTP Port, SMTP Username, SMTP Password

If you don’t have an SMTP provider yet, see the Mail.Baby Review for a budget option, or check the SMTP providers section below for more choices.
Pin your image version
Use pentacent/keila:0.30 instead of :latest for production stability. You can always update the tag later when new versions are released.
Hit create to deploy. EasyPanel will pull the Docker images, set up the database, and start the containers. After deployment, you’ll see the default credentials displayed: [email protected]:password123. Change these immediately after first login.
Add your domain to the installation
EasyPanel assigns a default subdomain, but you’ll want your own domain for credibility and deliverability. Point an A record for your domain (or subdomain like news.yourdomain.com) to the VPS IP address. Then go to the project’s domains section in EasyPanel and add your domain. HTTPS certificates are auto-configured by EasyPanel.
Configure Keila
Log in with the default credentials and change the password immediately.
Change default credentials now
The default EasyPanel login is [email protected]:password123. Change both the email and password from the administration panel before doing anything else.
From the Keila dashboard, create your first project and configure a sender. Keila supports multiple sender types, so you can add different senders for different projects. The video walkthrough covers the initial configuration in detail.

Once configured, you can import contacts, create signup forms, and start sending campaigns. Keila provides statistics for each campaign after sending:

SMTP providers for sending newsletters
Keila supports five sender types natively: SMTP, AWS SES, Sendgrid, Mailgun, and Postmark. Each has different pricing and free tier limits. Here’s a quick comparison:
| Provider | Free Tier | Paid Pricing | Notes |
|---|---|---|---|
| AWS SES | 62,000 emails/month (from EC2) | $0.10/1,000 emails | Cheapest at scale, requires AWS setup |
| Sendgrid | 100 emails/day (~3,000/month) | From $19.95/month | Easy setup, good deliverability |
| Mailgun | 5,000 emails/month (first 3 months) | From $35/month | Developer-friendly API |
| Postmark | 100 emails/month | $10/10,000 emails | Excellent for transactional |
| SMTP2GO | 1,000 emails/month | From $15/month | Simple SMTP relay |
| Mail.Baby | None | $1/month + $0.20/1,000 | Budget-friendly for low volume |
For a budget-focused setup, Mail.Baby at $1/month plus $0.20 per 1,000 emails is hard to beat for small lists. If you’re running on an EC2 instance, AWS SES gives you 62,000 free emails monthly.
Deliverability tip
Regardless of provider, configure SPF, DKIM, and DMARC records for your sending domain. These DNS records prove to receiving mail servers that you’re authorized to send email from your domain. Without them, your newsletters will land in spam folders. See How to Set Up SMTP Relay on a VPS for a detailed walkthrough.
Keila vs ListMonk: which newsletter platform to choose?
ListMonk is the other popular self-hosted newsletter option. Here’s how they compare:
| Feature | Keila | ListMonk |
|---|---|---|
| Language | Elixir (Phoenix) | Go |
| License | AGPL-3.0 | GPL-3.0 |
| GitHub Stars | ~2,200 | ~21,000 |
| Visual Editor | Block editor + MJML | Plain text / HTML |
| Double Opt-In | Yes (v0.13+) | Yes |
| Transactional Emails | Yes (v0.30+) | Yes |
| Welcome Emails | Yes (v0.19+) | No (manual) |
| Public Campaign Archives | Yes (v0.18+) | No |
| Cloud Option | Keila Cloud (EU-hosted) | None |
| Multi-Language | 8 languages | Limited |
| Database | PostgreSQL | PostgreSQL |
Choose Keila if you want a visual block editor with MJML template support, a managed cloud option, or features like welcome emails and public campaign archives.
Choose ListMonk if you prefer a lightweight Go binary, want a larger community, or don’t need a visual editor.
If you’re exploring other options, Notifuse is another self-hosted newsletter worth looking at.
Keila Cloud pricing (if you don’t want to self-host)
If managing your own server isn’t appealing, Keila offers a managed cloud option hosted in the EU. All plans include unlimited contacts and unlimited projects. You can use Keila’s managed sending (“Send with Keila”) or bring your own SMTP/SES provider. There’s no free tier. Keila is a bootstrapped project that doesn’t monetize user data.
| Plan | Price | Emails/Month |
|---|---|---|
| Keila XS | €8/mo | 2,000 |
| Keila S | €16/mo | 5,000 |
| Keila M | €32/mo | 15,000 |
| Keila L | €64/mo | 50,000 |
| Keila XL | €128/mo | 100,000 |
| Keila XXL | €256/mo | 250,000 |
If you want a simpler managed newsletter service, EmailOctopus offers a generous free tier with a drag-and-drop builder and analytics. MailerLite is another solid managed option with automation features and landing pages.
What’s new in Keila (v0.13-v0.30)
Keila has released 17 versions since this article was first published. Here are the highlights for returning readers:
v0.13 - v0.15: Double opt-in and MJML
v0.13.0 (December 2023): Added double opt-in for signup forms with configurable confirmation emails, custom failure text, and redirect URLs. Also added captcha protection (hCaptcha and Friendly Captcha).
v0.14.0 (January 2024): Custom signup fields (text, checkbox, dropdown, tags, numbers), contact search and sorting improvements.
v0.15.0 (August 2024): MJML support for building responsive email templates. Users can now create mobile-friendly newsletters using MJML markup alongside the existing block editor and Markdown options.
v0.17 – v0.19: Previews, archives and welcome emails
v0.17.0 (March 2025): Preview emails: send test emails before launching a campaign. Mobile and desktop preview modes for checking email rendering. External IDs for contacts. French translation.
v0.18.0 (January 2026): Public campaign archives: share sent campaigns on a public page. Interaction-based segmentation: target subscribers who opened or clicked specific campaigns. Social media icons block in the editor. Spanish translation.
v0.19.0 (January-February 2026): Welcome emails: automatically send a greeting to new subscribers. Protected unsubscribe and opt-in links to prevent accidental activation by mail scanners. Bulgarian and Hungarian translations. Upgraded to Phoenix 1.7 and LiveView 1.x.
v0.20 – v0.30: New scheduler, transactional emails and templates
v0.20.0 (May 2026): Completely rewritten email scheduler, much faster for large campaigns. Brazilian Portuguese translation. Pre-filled form fields via URL query parameters.
v0.30.0 (June 2026): Major release. Templates and content slots: create reusable MJML/HTML/plain-text templates with dynamic content areas. Transactional emails API: send one-off messages (order confirmations, password resets) via a REST endpoint.
v0.30.2 (June 2026): Line-height setting in the editor, manual contact status changes. Current stable version.
Conclusion
Keila has grown from a basic newsletter tool into a solid, actively maintained self-hosted newsletter platform. With double opt-in, MJML templates, transactional emails, welcome emails, and a full REST API, it covers most use cases that used to need a paid SaaS service. The data ownership story is straightforward: you run it on your server, you control everything.
Deployment through EasyPanel takes under 30 minutes. You’ll need a VPS with at least 2 GB RAM and an SMTP provider to start sending. From there, Keila handles contact management, campaign building, scheduling, and statistics.
If Keila isn’t quite right for your needs, Notifuse is another self-hosted newsletter option to consider. And if you want to explore more self-hosted applications for your server, check out the Best Docker Containers for Home Server roundup.
Deploy Keila on Hetzner

