The right server for Senddera 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 Senddera 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 Senddera 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-upgradesfor 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
Senddera'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
crontabline. - You have hard SOC 2 / HIPAA compliance requirements and no time to assemble the controls (Senddera 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 — Senddera's TCO and control wins.
Related reading
- Installing Senddera on Ubuntu 22.04 — step-by-step
- Installing Senddera on DigitalOcean — provider-specific recipe
- Docker deployment guide for Senddera — for container-first teams
- Setting up queue workers and cron jobs — the production-readiness checklist
- Scaling Senddera for 100k emails per day — when you outgrow Small tier
FAQ
Can I run Senddera 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 Senddera 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 Senddera 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, Senddera 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):
- Sustained queue depth > 1,000. Run
php artisan queue:size(or check the Senddera 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. - MySQL
Threads_running > 20for minutes at a time. Runmysqladmin 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). - Disk usage > 80 %. Senddera'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), Senddera 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 "Senddera was working last month" tickets.