Self-hosted email marketing with full source code. Pay once, own forever. Get AcelleMail — $74 →

Server Requirements and Hosting Options for AcelleMail

Minimum + recommended specs for AcelleMail by send volume, host comparison (DigitalOcean / Hetzner / AWS / Linode), and the operations cost of each tier.

The right server for AcelleMail is dictated by send volume, not subscriber count. A list of 5 million subscribers that you mail once a month needs less compute than a list of 100,000 you mail daily. This article gives concrete specs at four volume tiers, a provider comparison, and the operational considerations that determine your real cost.

Pick a tier from your monthly send volume

Tier Monthly sends Recommended specs Notes
Hobby < 50k 1 vCPU, 2 GB RAM, 20 GB SSD Single droplet. SQLite OK if < 10k subscribers.
Small 50k - 500k 2 vCPU, 4 GB RAM, 50 GB SSD MySQL on same host. Redis for queue.
Medium 500k - 5M 4 vCPU, 8 GB RAM, 100 GB SSD DB on the same host or split. 2 queue workers.
Large 5M - 50M 8 vCPU, 16 GB RAM, 200 GB SSD + separate DB DB on its own host (managed RDS or self-managed). 4-8 queue workers. Consider 2+ application hosts behind LB.
XL 50M+ Custom — multi-host, dedicated DB cluster, Redis cluster, separate sending-cluster MTAs Talk to AcelleMail support; this tier is rare and bespoke.

These figures assume 30-day rolling average. Black Friday spikes need ~2× headroom.

Software baseline (any tier)

Component Minimum Recommended (2026)
OS Ubuntu 20.04 / Debian 11 / Rocky 8 Ubuntu 24.04 LTS
PHP 8.1 8.3 (8.4 should also work; PHP 9 not yet)
MySQL / MariaDB MySQL 5.7 / MariaDB 10.3 MySQL 8.0 or MariaDB 11
Redis (optional) 7.x — strongly recommended for queue + cache
Web server Apache 2.4 Nginx 1.24+
Process manager systemd Supervisor (worker recovery cleaner than systemd's restart on busy queues)
TLS Let's Encrypt certbot --nginx with auto-renewal

Provider comparison

The 4-tier table below uses the Small tier (50k - 500k sends/month) as a like-for-like comparison. All prices are 2026 list prices, USD/month, before any committed-spend discount. Adjust by tier (~2× per step up).

Provider Plan vCPU RAM SSD Egress $/mo Notes
Hetzner CX22 2 4 GB 40 GB 20 TB $5 Cheapest in EU, no AMD/Intel choice
Hetzner CPX21 3 (AMD) 4 GB 80 GB 20 TB $9 Better CPU-to-$ ratio than CX22
DigitalOcean Premium AMD 2vCPU/4GB 2 (AMD) 4 GB 80 GB 4 TB $24 Best ops UX (managed DB, snapshots, monitoring)
Linode Shared 2GB 1 2 GB 50 GB 2 TB $12 Cheaper than DO, slightly worse UX
Vultr High-Frequency 2vCPU 2 4 GB 64 GB 3 TB $24 Strong CPU benchmark; routes to Asia faster than DO
AWS EC2 t3.medium + 50 GB gp3 2 4 GB 50 GB 100 GB free, then $0.09/GB ~$30 + traffic Most flexible; egress costs add up; spot pricing 70 % cheaper if you can tolerate interruption
AWS Lightsail $20 plan 2 4 GB 80 GB 4 TB $20 EC2 with the bill predictability of DO

Top picks per use case:

  • Side-project / hobby (< 50k/month): Hetzner CX11 ($4/mo) — best price-performance globally.
  • Production small business (50k - 500k/month): Hetzner CPX21 ($9) for cost, DigitalOcean Premium AMD ($24) for ops quality.
  • Production medium business (500k - 5M/month): DigitalOcean managed DB + Premium AMD droplet, ~$80/mo all-in. AWS if you already have AWS infra.
  • Sending-server-as-a-service (lots of customers, lots of egress): AWS with reserved instances + S3 for backups.

Cost beyond the server

The server is rarely the largest line item. The real recurring costs:

Line item Typical $/month at Small tier
Server (above) $5 - $30
Sending API (Amazon SES at $0.10/1k) $5 - $50 (50k - 500k sends)
Domain + DNS (Cloudflare free tier OK) $0 - $5
Backups (off-site, e.g. BorgBase or Restic to B2) $2 - $10
Monitoring (UptimeRobot free, Better Uptime $9, etc.) $0 - $20
Subtotal $12 - $115

Compare to Mailchimp's Standard tier at the same scale: $35-$185/month for 10k-100k contacts (no per-send cost included). At 500k sends/month the AcelleMail TCO is ~5× cheaper — and the gap widens with volume.

Operations cost — the hidden expense

A self-hosted setup at 500k+ sends/month is not zero-ops. Plan for:

  • Backups. Daily DB dump + weekly full filesystem snapshot. Test restore quarterly.
  • OS patching. unattended-upgrades for security; manual review of major upgrades.
  • TLS renewal. certbot auto-renew, but verify with a calendar reminder.
  • Bounce-handler maintenance. Email log rotation, FBL handler health-check.
  • Monitoring. Uptime check on the public site, queue depth, disk space, MySQL slow-query log.
  • Incident response. Plan for "site down" + "campaign stuck in sending" runbooks. The KB has a troubleshooting playbook library.

A reasonable estimate is 2-4 hours/month of attention for a Small-tier site once steady state is reached. Compare to Mailchimp's "0 hours, but you pay $185" — the trade-off is real, not theoretical.

When NOT to self-host

AcelleMail's value proposition assumes you have, or can build, basic Linux operations skill. If you don't and can't, choose a SaaS:

  • You don't have anyone who can SSH into a Linux box.
  • You can't write or read a crontab line.
  • You have hard SOC 2 / HIPAA compliance requirements and no time to assemble the controls (AcelleMail can be made compliant, but the work is yours).
  • Your sending pattern is peaky (zero for 25 days, blast on day 30) — SaaS handles bursts better.

For everyone else — agencies, SaaS founders, e-commerce stores, newsletter publishers, regulated-industry teams who want their data on-prem — AcelleMail's TCO and control wins.

Related reading

FAQ

Can I run AcelleMail on shared hosting?

Technically yes (cPanel + PHP 8.1+ + MySQL is enough), realistically no — the queue worker needs a long-running process and the cron needs reliable execution, both of which most shared hosts kill. Use a $5 VPS instead.

Do I need a dedicated IP?

Only at Medium tier and above (500k+ sends/month). Below that, shared IPs from your sending API (SES, SendGrid) deliver better — they have established reputation that you'd have to warm from scratch on a dedicated IP.

Where should I put the database?

Same host as AcelleMail at Small tier. Split to a managed DB (DigitalOcean Managed MySQL, AWS RDS, etc.) at Medium+ for backup + failover. Don't co-locate Redis with MySQL on the same disk — IO contention will hurt both.

What about Docker / Kubernetes?

Docker works fine for AcelleMail and there's a Docker deployment guide in this KB. Kubernetes is overkill until you're at XL tier with multiple application hosts; even then, a 2-host setup with HAProxy is simpler.

Sample 12-month cost projections

The numbers above are list prices; the question is what they actually total over a year of operation. Three common scenarios:

Scenario A — solo founder, growth from 5k to 80k contacts.

  • Months 1-3: Hetzner CX22 ($5) + SES ($1) + domain ($1) = $7/month.
  • Months 4-9: Hetzner CPX21 ($9) + SES ($5-15) + domain ($1) = $15-25/month.
  • Months 10-12: same hardware, list grew = $20-30/month.
  • 12-month total: ~$200-250. Same year on Mailchimp Standard: $1,000-1,800.

Scenario B — agency hosting 30 client lists totaling 250k contacts.

  • DigitalOcean Premium AMD 4vCPU/8GB ($48) + DO Managed MySQL ($15) + Backups ($10) + SES ($30) + domain ($1) = $104/month.
  • 12-month total: ~$1,250. Same year on Mailchimp Premium for an agency consolidator: $4,800-7,200.

Scenario C — SaaS company with 1.5M monthly transactional + marketing sends.

  • AWS m6i.large 1-yr Reserved ($50) + RDS Multi-AZ ($60) + EBS + snapshots ($15) + SES ($150) + Route 53 ($3) = $278/month.
  • 12-month total: ~$3,350. Mailchimp at this scale is impossible (no transactional product); SendGrid Pro Plus ~$1,000/month + still need a CRM ~$500/month → $18,000/year.

The break-even versus SaaS is generally at 50k-100k sends/month. Below that, SaaS hassle-cost wins; above, AcelleMail TCO wins decisively.

Triggers that mean "time to scale up"

Three signals consistently mean a tier upgrade is overdue (and ignoring them ends in a campaign that hangs or a queue depth that grows unbounded):

  1. Sustained queue depth > 1,000. Run php artisan queue:size (or check the AcelleMail dashboard's Queue Status) at peak hour. If the depth doesn't drain to single-digits between campaigns, your worker count + DB throughput is the bottleneck. Add workers first; if CPU/IO redlines, upgrade the tier.
  2. MySQL Threads_running > 20 for minutes at a time. Run mysqladmin extended-status | grep -E 'Threads_running|Innodb_row_lock'. Sustained contention means the DB is at capacity — split it to a managed instance or upgrade RAM (so the buffer pool fits the working set).
  3. Disk usage > 80 %. AcelleMail's storage/logs/, the bounce log, the campaign-attachment cache, and the database all grow over time. The fix is rotation/archive plus tier upgrade if archive doesn't reclaim enough. The DigitalOcean Spaces offload pattern is the cleanest way to cap local-disk growth.

What "operations cost" actually buys you

The 2-4 hours/month of attention cited above isn't busywork — it's:

  • 5 min/week: scan UptimeRobot dashboard, check disk usage, look at fail2ban ban list.
  • 20 min/month: rotate / verify the daily DB dump, eyeball Grafana for any metric drifting outside its band, verify last week's certbot renewal.
  • 45 min/quarter: OS package updates (apt upgrade), AcelleMail patch upgrade if one was released, restore-from-backup test.
  • 2-3 hours/year: annual hardening re-audit (run the post-install hardening checklist again), key rotation, certificate renewals you've been deferring.

If you can't carve out this time, or you're not the kind of person who'll do it, a managed-hosting layer (such as paying a freelancer to run the maintenance script monthly) is the right answer rather than skipping it. Skipped maintenance is the #1 cause of "AcelleMail was working last month" tickets.

More in Installation & Setup