Disclosure: Some links in this article are affiliate links. We may earn a commission at no extra cost to you.
I Replaced $487/Mo of SaaS With $40 of VPS. Here Is the 2026 Self-Hosted Stack.
Eight battle-tested open-source tools, one Hetzner CX22, and the honest math on what self-hosting actually costs in maintenance hours.
On April 1, 2026, Mailchimp pushed its third price increase in 18 months: legacy plans went up another 11-13%, the second hike since the timeline we tracked in our Mailchimp price increases timeline. Two weeks later, Zylo's 2026 SaaS Management Index dropped the headline number that explains your credit card statement: SaaS spend rose 8% year-over-year while average app counts stayed flat. Translation: vendors are charging more for the same software.
Meanwhile, Hetzner's CX22 has held at roughly $5/mo since 2024. Coolify v4 launched in March 2026 and turned multi-app deployment into a one-click affair. The math on self-hosting your marketing stack is no longer a hobbyist debate. It is a $487/mo line item versus a $40/mo line item, and the gap is widening every quarter.
This is not an anti-SaaS manifesto. I run Brevo for transactional email and pay for it gladly. But if you are a solopreneur watching HubSpot's Breeze credits drain into oblivion (we did the math in our death of free-tier SaaS piece), here is the eight-tool stack I run on a single $5 box, what it replaces, and exactly where SaaS still beats it.
Quick answer: the $487 to $40 swap
Replace Mailchimp ($99), Google Analytics 360 ($0 but Plausible adds privacy compliance), Substack (10% revenue cut), Calendly ($16), Zapier ($49), HubSpot Marketing Hub Starter ($20), Mixpanel ($28), and Linear ($10) plus assorted tier upgrades totaling $487/mo. Run Listmonk, Plausible CE, Ghost, Cal.com, n8n, Mautic, PostHog, and Coolify on one Hetzner CX32 ($11/mo) plus Amazon SES ($5), Backblaze B2 backups ($6), and a domain ($15/yr or $1.25/mo). Total: $24-40/mo depending on volume.
What to look for in a self-hosted marketing tool
Not every open-source project belongs in production. I have buried more than one promising tool that lost its maintainer 18 months in. Five criteria separate stack-worthy projects from weekend experiments.
1. Maturity (years in production). Look for tools shipping for 4+ years with named v1.0 releases. Listmonk hit 1.0 in 2020. Ghost has been around since 2013. New does not mean bad, but new means you are part of the QA team.
2. Docker and Coolify support. If the install instructions involve compiling from source or hand-editing nginx configs, walk away. Every tool in this stack ships an official Docker image with a docker-compose.yml that Coolify can import directly. Setup time drops from a weekend to 10 minutes per tool.
3. Active maintainers. Check the GitHub commit graph. I want to see commits in the last 30 days, multiple contributors with merge rights, and a security policy. A bus factor of 1 is a deal-breaker for anything touching customer data.
4. Feature parity vs SaaS competitor. Be honest about the 80/20. Listmonk does not have Mailchimp's send-time optimization or 100+ integrations. It does have campaigns, segments, double opt-in, and analytics. For 90% of senders, that is enough.
5. Security update cadence. Look for a public CVE policy and patch releases within 7 days of disclosure. PostHog and Ghost both publish security advisories on schedule. Mautic has historically been slower; budget for that risk.
The full self-hosted stack at a glance
| Tool | Replaces | Setup (1-5) | Monthly Cost | Compare |
|---|---|---|---|---|
| Listmonk | Mailchimp, ConvertKit | 2 | $5 (SES) | vs Mailchimp |
| Plausible CE | Google Analytics | 2 | $0 | Plausible docs |
| Ghost | Substack, Beehiiv | 3 | $5 (SES) | vs Beehiiv |
| Cal.com | Calendly | 2 | $0 | Cal.com docs |
| n8n | Zapier, Make | 3 | $0 | vs Zapier |
| Mautic | ActiveCampaign, HubSpot | 4 | $5 (SES) | vs ActiveCampaign |
| PostHog | Mixpanel, Amplitude | 4 | $11 (CX32) | PostHog docs |
| Coolify | Vercel, Heroku, Render | 1 | $0 | Coolify docs |
The setup difficulty column is calibrated against my actual install logs. A 1 means "one shell command." A 5 would mean "hand-write systemd units." Nothing in this stack hits 5 anymore, which is the real story of 2026: Coolify v4 collapsed the Docker complexity tax to near zero.
1. Listmonk
Best for: Solopreneurs sending 10k-500k newsletter emails per month who want Mailchimp's core features without the per-subscriber tax.
Read the full Mailchimp review → · Listmonk install docs
Listmonk is a single Go binary backed by Postgres. It boots in under 200ms, runs on 256MB of RAM, and ships an admin UI that feels like Mailchimp circa 2018, which is to say: clean and functional. After Mailchimp's April 2026 13% hike, the per-subscriber math gets brutal at scale. A 50k list on Mailchimp Standard runs $385/mo. The same list on Listmonk plus Amazon SES costs about $5 in send fees and zero in subscription.
Setup difficulty: 2/5. One docker-compose file via Coolify, plus 30 minutes wiring SES credentials and DKIM. The trickier work is DNS, not the install.
Maintenance hours: Roughly 30 minutes per month. Postgres backups, a Docker image bump every 6-8 weeks, and the occasional bounce-handling cleanup.
Key features:
- Unlimited subscribers and lists, no tier upgrades ever
- Segmentation via SQL queries (more powerful than most SaaS, requires a few minutes to learn)
- Double opt-in, bounce handling, and click/open tracking out of the box
- Public REST API for sign-up forms and integrations
- Multi-language template support and per-list custom fields
Pricing: Free + $5/mo for Amazon SES at 50k sends/month, scaling to $30/mo at 300k sends.
Limitation: No native send-time optimization, no AI subject line generator, no behavioral automations beyond simple drip. You also own deliverability: SPF, DKIM, DMARC, and IP warmup are your job. Budget 2-3 weeks of warmup before you blast a 50k list.
Compare Listmonk to Mailchimp →
2. Plausible Analytics (Community Edition)
Best for: Sites that want clean, GDPR-compliant analytics without the cookie banner tax or GA4's UI.
Plausible is the easiest swap on this list. The Community Edition runs on Elixir + ClickHouse, takes one Coolify deploy, and uses a 1KB script tag. The hosted version starts at $9/mo for 10k pageviews, which is fair pricing if you do not want to run ClickHouse yourself. I run self-hosted because I already have the box.
Setup difficulty: 2/5. Coolify ships a Plausible CE template; it boots in 10 minutes. The annoying step is pointing your DNS at the analytics subdomain.
Maintenance hours: 15-30 minutes per month. ClickHouse can fragment if you ignore it, so set the retention policy and forget it.
Key features:
- Real-time dashboard with goal tracking and UTM parsing
- No cookies, no consent banner required in the EU
- Multi-site support from one install
- Email and Slack reports, weekly and monthly
- API access for custom dashboards
Pricing: Free self-hosted + $0 in send fees. Hosted starts at $9/mo.
Limitation: No session recording, no funnels beyond basic goals, no A/B testing. If you need behavioral analytics, pair it with PostHog. ClickHouse on a small VPS can be RAM-hungry; budget 2GB minimum.
Get the Plausible CE install guide →
3. Ghost
Best for: Publishers who want Substack's newsletter-plus-membership model without the 10% revenue cut.
Read the full Beehiiv review → · Ghost install docs
Ghost has been the open-source CMS-plus-newsletter combo since 2013. The 2024 Ghost 5 release added native paid memberships, Stripe integration, and tiered subscriptions. It is the only tool on this list that runs Node.js + MySQL, which adds a bit of memory overhead, but Coolify handles the orchestration cleanly.
Setup difficulty: 3/5. Ghost itself is simple, but configuring paid memberships involves a Stripe Connect handshake and a subdomain split between admin and public. Plan an hour, not 10 minutes.
Maintenance hours: 1 hour per month. Ghost ships major updates roughly twice a year and minor patches monthly. Theme upgrades on point releases occasionally bite.
Key features:
- Built-in newsletter sending via Mailgun (or any SMTP after a small config tweak)
- Paid memberships with Stripe Connect, free for the first 0% fee tier
- Editor that genuinely beats Substack's, with embeds and custom HTML cards
- Public API and Zapier-ready webhooks for n8n integration
- Theme system based on Handlebars, with hundreds of free themes
Pricing: Free self-hosted + $5/mo for Mailgun (or use SES at roughly $1/mo for small lists).
Limitation: Mailgun lock-in for newsletters is the default; switching to SES requires editing config. The membership UX is good but not as polished as Substack's discovery feed. If discovery matters, the SaaS alternative wins on growth.
4. Cal.com
Best for: Anyone tired of Calendly's $16/mo paywall on team scheduling and round-robin.
Cal.com is the AGPL-licensed Calendly competitor that has somehow built feature parity with the paid tier in three years. Self-hosting gives you unlimited event types, team scheduling, round-robin, and workflow automations for $0/mo. The Next.js + Postgres stack is well-documented.
Setup difficulty: 2/5. Coolify template handles the Postgres provisioning. The longest step is OAuth wiring for Google Calendar.
Maintenance hours: 30-45 minutes per month. The release cadence is fast, occasionally weekly, so pin to LTS releases unless you enjoy reading changelogs.
Key features:
- Unlimited event types and team members
- Round-robin, collective, and managed event types
- Native Google Calendar, Outlook, and Apple Calendar sync
- Workflows with email and SMS reminders (SMS via Twilio)
- Embeddable widgets and routing forms
Pricing: Free self-hosted, no per-user fees ever.
Limitation: Updates ship fast, sometimes weekly, and breaking changes do happen. Pin to LTS releases and read the changelog before pulling. SMS workflows still cost Twilio credits regardless of self-hosting.
Get the Cal.com self-host guide →
5. n8n (self-hosted)
Best for: Anyone hitting Zapier's task limit or paying for steps that ought to be free.
Read the full Zapier review → · n8n hosting docs
n8n self-hosted is the workflow automation tool that finally killed my Zapier subscription. With unlimited executions, 400+ integrations, and the n8n 2.0 launch in early 2026 (covered in our n8n 2.0 launch breakdown), it is now the default automation layer for self-hosters. Workflows are JSON, version-controlled, and portable. For the deep dive, our n8n review walks through every node and pricing tier.
Setup difficulty: 3/5. The community edition is straightforward, but queue mode (needed past 100 workflows/day) requires Redis and a worker container. Budget two hours for the queue mode upgrade.
Maintenance hours: 1-2 hours per month. The fast release cadence means breaking changes in node libraries; subscribe to the changelog.
Key features:
- Unlimited workflow executions on self-hosted (Zapier charges per task)
- 400+ native integrations, including Listmonk, Ghost, and PostHog
- JavaScript and Python code nodes for custom logic
- Webhook triggers, cron schedules, and queue mode for scale
- Visual debugger that beats Zapier's task history UI
Pricing: Free self-hosted (community edition). Cloud starts at $24/mo if you want hosted.
Limitation: Some enterprise features (SSO, external secrets, log streaming) are gated to paid licenses even when self-hosted. The community edition is fine for solos and small teams. Maintenance overhead is real: 1-2 hours/month on average.
6. Mautic
Best for: Marketers who need ActiveCampaign-style automations and lead scoring without the $145/mo entry tier.
Read the full ActiveCampaign review → · Mautic 5.x install docs
Mautic is the heaviest tool on this list and the one I deploy most cautiously. It is the open-source marketing automation platform that Acquia adopted, with visual campaign builders, lead scoring, and dynamic content. It can do most of what HubSpot Marketing Hub does, but the UI feels like 2017 and the maintenance overhead is real. If you want the full SaaS comparison, our HubSpot review covers the higher-tier alternative.
Setup difficulty: 4/5. PHP-FPM, MySQL, cron jobs, and a queue worker. The Coolify template helps but you still own the cron tuning.
Maintenance hours: 3-4 hours per month. Subscribe to the security mailing list. Patches lag behind disclosure occasionally, so plan accordingly.
Key features:
- Visual drag-and-drop campaign builder with conditional branches
- Lead scoring and stages with custom point models
- Dynamic content based on contact fields and behavior
- Form builder with progressive profiling
- API for everything; n8n integrates cleanly
Pricing: Free self-hosted + roughly $5/mo for SES on a 30k-contact list.
Limitation: The setup is the hardest in this stack (4/5 on my scale). PHP + MySQL + cron jobs need attention. Security patches can lag, so subscribe to the security mailing list. Plan for 3-4 hours/month of maintenance, not 1-2.
Compare Mautic to ActiveCampaign →
7. PostHog
Best for: Product-led marketers who need event analytics, session recordings, and feature flags in one place.
PostHog is the all-in-one product analytics suite that replaces Mixpanel ($28+/mo), Hotjar ($32/mo), and LaunchDarkly ($10/mo). Self-hosted, it runs on a beefy stack (ClickHouse, Kafka, Redis) so I recommend a Hetzner CX32 ($11/mo) instead of CX22. The cloud version's 1M-event free tier is generous if you do not want the operational load.
Setup difficulty: 4/5. Helm chart or docker-compose, both work, neither is trivial. Budget a half-day for the first deploy.
Maintenance hours: 2-3 hours per month. ClickHouse and Kafka both want attention. Retention policies are not optional; without them, disk fills in 60 days.
Key features:
- Event tracking with autocapture (no manual instrumentation needed for clicks)
- Session recordings with privacy controls and rage-click detection
- Funnels, retention cohorts, and path analysis
- Feature flags and A/B tests
- Web analytics module (Plausible-style dashboard)
Pricing: Free self-hosted (CX32 = $11/mo). Cloud is free up to 1M events/mo.
Limitation: The self-hosted stack is operationally heavy. ClickHouse will eat RAM and disk if you are not careful with retention policies. For most solos, PostHog Cloud's free tier is the smarter choice. Self-host only if you have compliance requirements or are above the 1M event threshold.
Get the PostHog self-host guide →
8. Coolify
Best for: The orchestration layer that makes the other seven tools deployable in a weekend instead of a month.
Coolify is the open-source Vercel/Heroku/Render replacement that turned my multi-app Hetzner box into a manageable system. The v4 release in March 2026 added a service marketplace with one-click templates for Listmonk, Plausible, Ghost, n8n, and PostHog. It runs Docker, manages reverse proxies via Traefik, and handles Let's Encrypt automatically.
Setup difficulty: 1/5. One curl-bash installer, then point a wildcard DNS record at the box. Genuinely 10 minutes.
Maintenance hours: 30 minutes per month. Major version upgrades occasionally need manual migration steps; minor versions are uneventful.
Key features:
- One-click deploy templates for 80+ open-source apps
- Automatic Let's Encrypt SSL on every subdomain
- Built-in Postgres, MySQL, Redis, and ClickHouse provisioning
- Backup management with S3-compatible storage
- Git-based deploys for custom apps (push to main, ships in 60s)
Pricing: Free self-hosted forever. Cloud version is $5/mo if you want Coolify itself hosted.
Limitation: Coolify itself needs maintenance. Major version upgrades occasionally require manual migration steps. Read release notes before pulling. The hosted cloud version is worth the $5 if you do not want a meta-management problem.
Get the Coolify install guide →
The honest math: hidden costs of self-hosting
Maintenance is the real bill
If your time is worth $100/hour and you spend 4 hours/month maintaining the stack, you are paying $400/mo in opportunity cost on top of the $40 in hosting. The math only works if you genuinely enjoy ops or your time is cheaper than that. For most solos, the answer is yes; for engineers billing $200+/hour, the answer is sometimes no.
The $40/mo number is honest about hardware and SES. It is dishonest about everything else. Here is the real ledger.
Updates: 2-4 hours/month. Eight tools means eight changelogs to read and eight Docker pulls to schedule. Coolify cuts the mechanical time, but you still need to read release notes for breaking changes. Plan a monthly maintenance window.
Security patches: 1-2 hours/month. Subscribe to security mailing lists for Mautic, Ghost, and PostHog. CVEs in widely used PHP packages can require same-day patches. The cost is paying attention, which is a real cost.
Downtime risk: variable. A single Hetzner box has a real failure mode. Disk fills, RAM gets eaten, ClickHouse decides to merge tables at 3am. Mitigations: monitoring (UptimeRobot free tier), backups (Backblaze B2 at $6/TB), and a written runbook so you can fix things at 11pm without thinking.
Email deliverability: ongoing. Bringing your own SMTP means you own DKIM, SPF, DMARC, and IP reputation. Mailchimp's $99/mo includes 20 years of warmed IPs. SES at $5/mo includes a fresh IP that needs warming. Plan accordingly.
For the full life-cost analysis of running an online business in 2026, our real cost of online business piece breaks down where these hours actually go. The CISA cybersecurity advisories feed is the single most useful subscription for self-hosters; CVEs in Postgres, nginx, and Docker land there before they hit Hacker News.
When SaaS still wins (and why this isn't religious)
I run this stack and I still pay for SaaS. Here is exactly when SaaS is the right call.
1. Cold-start deliverability. If you are launching a list from zero and need to send 100k emails next week, you cannot warm a fresh SES IP that fast. Use a hosted ESP. GetResponse handles warmup, deliverability monitoring, and abuse compliance for you. The reviewed alternative is at our GetResponse review.
2. Compliance-heavy industries. If you need SOC 2, HIPAA, or ISO 27001 reports for your stack, building those on a self-hosted box is a six-figure project. Pay HubSpot or Klaviyo for the audit reports. The credits-based pricing on HubSpot Breeze (covered in our hubspot-breeze-pricing-2026 piece) is annoying but the compliance work is done for you.
3. Discovery and growth networks. Beehiiv's recommendation network has driven real subscriber growth that Ghost cannot match. If discovery is your acquisition channel, use beehiiv. The full breakdown is in our beehiiv review.
4. Teams larger than 5 people. The maintenance hours scale with the team. At 10 seats, paying for MailerLite or Brevo is cheaper than dedicating 8 hours/week of an engineer's time. The break-even is roughly 3 paid SaaS seats.
5. Complex multi-app integrations at scale. If you are running 20+ integrations with fragile webhooks, n8n self-hosted will give you headaches that Make handles for you. The visual debugger and 99.9% SLA matter when payroll depends on a Stripe-to-Notion sync. For a side-by-side, see our Make review.
My actual stack (April 2026)
Self-hosted: Listmonk (newsletter), Ghost (blog + memberships), Cal.com (booking), n8n (automation), Plausible (web analytics), Coolify (orchestration). Paid SaaS: Brevo (transactional email, $9/mo for warmup), Stripe (payments), Notion (docs). Total: $24/mo Hetzner + $14/mo SaaS = $38/mo. The pre-stack number was $487/mo.
Frequently asked questions
How much technical skill do I really need to run this stack?
You need to be comfortable with a terminal, SSH keys, and DNS records. You do not need to write code. Coolify v4 (March 2026) handles Docker, reverse proxies, and Let's Encrypt automatically. If you have ever deployed a side project to a VPS, you can run this stack. Budget a weekend for initial setup and roughly 2-4 hours per month for updates.
What happens if my VPS goes down at 2am?
Your newsletter does not send, your analytics gap, and your booking page returns a 502. This is the single biggest tradeoff versus SaaS. Mitigations: Hetzner publishes a 99.9% SLA, Coolify supports automated backups to S3-compatible storage (Backblaze B2 is $6/TB), and you can configure UptimeRobot (free tier) to alert you. For mission-critical email, keep a Brevo or GetResponse account warm as a fallback sender.
Will Listmonk's deliverability match Mailchimp?
Not out of the box. Mailchimp's IP reputation is built on 20 years of warming. With Listmonk you bring your own SMTP relay (Amazon SES at $0.10 per 1,000, Postmark at $1.25 per 1,000, or Brevo's transactional plan). SES costs roughly $5/mo for a 50k-subscriber list sending weekly, but you handle DKIM, SPF, DMARC, and warmup yourself. Plan for 2-3 weeks of warmup before sending to your full list.
Can I move back to SaaS if self-hosting fails?
Yes, and this is why open standards matter. Listmonk exports to CSV. Ghost exports JSON. Plausible exports CSV per site. n8n exports workflow JSON. PostHog exports events. The lock-in cost of self-hosting is near zero compared to migrating off a SaaS that owns your data model. If you bail after 6 months, you keep every subscriber, post, and event.
Does this stack work for a 5-person team or just solo?
It works up to roughly 10 seats, but the math changes. SaaS pricing scales linearly per seat (HubSpot Marketing Hub Professional is $890/mo for 3 seats in 2026). Self-hosted tools generally include unlimited users. The constraint is human: who patches the server when the sysadmin is on vacation? For teams of 5+, either dedicate 4 hours/week of an engineer's time or stay on SaaS. The break-even is roughly 3 paid SaaS seats.
Next steps
Start with Coolify and one tool. Pick the SaaS subscription that annoys you most and replace it. If Mailchimp's April 2026 hike is the trigger, deploy Listmonk this weekend. If it is Calendly, Cal.com installs in 10 minutes via Coolify. The whole-stack migration is a six-month project; the first-tool migration is a Saturday afternoon.
For the broader picture on which tools to keep paying for and which to replace, our curated AI and marketing tools directory ranks every option by where it actually wins. Start there, pick one swap, and ship.
