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

Install AcelleMail on a DigitalOcean Droplet

AcelleMail on DigitalOcean — the right droplet plan, image, regional placement, optional Managed Database setup, monitoring + backups, and the install steps that differ from a generic VPS.

DigitalOcean is the easiest cloud provider for AcelleMail — predictable pricing, the simplest of the major hyperscalers' admin UI, free transfer up to a generous monthly cap, and an honest outbound-port policy (port 25 is blocked by default but can be opened on request, which matters if you're running a local MTA — most AcelleMail users don't, since they use SES/Mailgun/etc.).

This guide is the DigitalOcean-specific overlay on top of the generic Install AcelleMail on Ubuntu 24.04 walkthrough. The actual install commands are the same; what differs is the droplet sizing, the optional Managed Database choice, the Reserved IP / Backups / Monitoring setup, and the sending-related quirks.

Step 1 — Pick the right droplet

Tier Droplet plan $/mo When to use
Hobby Basic Premium AMD 1 vCPU / 2 GB $14 < 50k sends/month, hobby projects
Small Basic Premium AMD 2 vCPU / 4 GB $24 50k - 500k sends/month — default for most ops
Medium Basic Premium AMD 4 vCPU / 8 GB $48 500k - 5M sends/month
Large CPU-Optimized 8 vCPU / 16 GB $144 5M - 50M sends/month, plus Managed DB
XL Multi-droplet behind Load Balancer $250+ 50M+ sends/month

The "Premium AMD" tier is the right default — same RAM/CPU as Basic but with newer-gen CPUs and NVMe SSDs. Avoid Intel Premium unless you have an Intel-only workload.

Why these recommendations: at Small tier, the bottleneck is queue worker throughput plus MySQL IO. Premium AMD's NVMe storage doubles random-write IOPS over the standard tier — measurable on campaigns of 500k+ recipients. CPU-Optimized kicks in at Medium when queue concurrency passes 4 workers; CPU contention starts to dominate IO contention.

Step 2 — Region

For AcelleMail, region matters less than DNS A-record propagation time and proximity to your sending API endpoint. Pick the region closest to your users (admin UI latency), then verify your sending API endpoint is reachable.

A note on Amazon SES: the default SES region is us-east-1. From DO nyc1/nyc3 you'll see <10ms latency; from sgp1 (Singapore) it's ~250ms. For high-throughput sending, match DO region to SES region (DO lon1 ↔ SES eu-west-1, DO sgp1 ↔ SES ap-southeast-1).

Step 3 — Image: Ubuntu 24.04 LTS

The DO Ubuntu 24.04 base image is the right starting point. Avoid the marketplace "LAMP"/"LEMP" stacks — they install opinionated configurations (older PHP, Apache instead of nginx) you'd then have to undo.

Step 4 — Optional: Managed MySQL

At Medium tier and above, splitting MySQL to DO's Managed Database is worth $15-30/month for the operational reduction:

  • Automated backups + point-in-time restore (vs. cron + scp)
  • Failover replica if you opt into the HA tier
  • Connection pooling at the database edge

Pick "Database with VPC peering" so the connection from your droplet stays on the private network. Connection details (host, port, user, password) live in DO's UI; copy them into the AcelleMail web installer (Step 10 of the Ubuntu guide) instead of localhost/acellemail. Skip the MySQL install on the droplet entirely.

Step 5 — Reserved IP

Assign a Reserved IP before pointing DNS at the droplet. When you eventually need to migrate or rebuild, you can reassign the same IP without DNS propagation downtime.

DO console → Networking → Reserved IPs → Assign to droplet
Then: A record  mail.example.com → <reserved IP>

Step 6 — Backups

Enable DO Backups: $4-25/month depending on droplet size, weekly snapshots with 4-week retention. The cheapest disaster-recovery option short of a separate restic/borg setup. For a serious backup strategy you want both: DO Backups for whole-droplet rollback, plus daily DB dumps to an off-site target. See the backup strategy cookbook.

Step 7 — The actual install

Follow the Ubuntu 24.04 install guide verbatim. SSH in, create the sudo user, run Steps 1-10. If you took the Managed DB option (Step 4 here), skip the Ubuntu guide's Step 3 and just confirm reachability:

mysql -h <managed-db-host> -P <port> -u <user> -p -e 'SELECT 1'

Step 8 — Monitoring + alerts

DO's built-in Monitoring agent is included free. Enable during droplet creation (or apt install do-agent afterwards), then in the console:

Monitoring → Alerts → Create Alert Policy
- CPU usage > 80% for 5 minutes → email
- Memory usage > 90% for 5 minutes → email
- Disk usage > 85% → email
- Public outbound bandwidth > 80% of cap → email (sending-bill protection)

For external uptime monitoring, UptimeRobot (free, 5-min checks) or Better Uptime (paid, 30-sec checks). Point them at https://mail.example.com/admin/login (unauthenticated, returns 200 when healthy).

Port 25 — the sending question

DO blocks outbound port 25 by default. If you're using a sending API (SES via HTTPS, Mailgun via HTTPS, SendGrid via HTTPS) — which 95 % of AcelleMail users do — this is irrelevant. AcelleMail talks to the sending API on port 443.

If you specifically want to run a local MTA (Postfix/Exim) and send via SMTP from your droplet, open a DO support ticket requesting port 25 unblock. Typically granted on accounts in good standing within hours. But for almost every AcelleMail use case, this isn't worth the ops complexity — use SES.

Cost worked example

Small-tier production install:

Line item $/month
Droplet (Premium AMD 2/4) 24
Reserved IP (free when assigned) 0
Backups 4.80
Managed MySQL (basic, 1 GB) — optional 15
Monitoring + alerts (DO) 0
Amazon SES (50k - 500k sends/month) 5 - 50
Domain 1
Total 30 - 95

Compare to Mailchimp Standard at the same scale (500k sends, 100k contacts): $185/month. Cost gap widens with scale.

Related reading

FAQ

Why not DO App Platform or Functions?

App Platform is for stateless web apps; AcelleMail's queue workers and scheduler need long-running processes that don't fit App Platform's 12-factor model. Functions is for short-lived event handlers — also wrong shape. Droplets are the right primitive.

Do I need a load balancer?

Not until Large tier (multiple droplets). DO Load Balancer adds $12/month and is only worth it when you have ≥ 2 application droplets behind it. At Hobby/Small/Medium, single droplet with Backups + Monitoring is right.

Can I get a dedicated IP from DO?

Reserved IPs (Step 5) give you a stable IP — that's a "dedicated IP" for email-reputation purposes, since no one else will ever use it. If you need multiple IPs for IP rotation in high-volume sending, use multiple droplets each with their own Reserved IP, configured as separate AcelleMail sending servers.

What about the DO Marketplace AcelleMail image?

There isn't an official one. There are unofficial community images, but they're rarely up to date and they bundle opinions you'd want to replace anyway. Use the bare Ubuntu 24.04 image and follow the install guide.

DO Spaces for asset offload

DigitalOcean Spaces is S3-compatible object storage at $5/month for 250 GB + 1 TB egress. AcelleMail can offload campaign images, attachments, and bounce-log archives there to keep the droplet's disk usage flat. In the AcelleMail admin UI: Settings → Storage → Filesystem driver → S3-compatible, paste your Spaces endpoint + access key.

The win is mostly disk-space discipline: 250k subscribers × an average of 3 attachment-bearing campaigns/year × 200 KB ≈ 150 GB. Without offloading, that fills the droplet's local SSD in 6-12 months. With Spaces, the droplet stays at 5-10 GB indefinitely.

Snapshots for blue-green deploys

DO snapshots are $0.06/GB/month — cheap enough to take one before any non-trivial AcelleMail upgrade. The flow:

  1. Before upgrade: create a manual snapshot from the DO console. Takes 2-5 minutes for a 50 GB droplet.
  2. Apply the upgrade following the Acelle upgrade guide.
  3. Verify AcelleMail is healthy.
  4. If anything broke: create a new droplet from the snapshot, point the Reserved IP at it, deactivate the broken one. ~5 minutes total downtime.

This is dramatically safer than relying on rollback through the in-place upgrade. The snapshot is your insurance policy for any single upgrade.

VPC + private networking

By default, droplets in the same DO region join an automatic VPC; eth1 is the private interface. AcelleMail → Managed MySQL traffic should always route over eth1 (DO Managed DBs publish a private hostname like private-db-mysql-nyc1-12345-do-user-1234567-0.b.db.ondigitalocean.com). Never use the public hostname; it's slower, more expensive (egress charges), and unnecessary.

For multi-droplet setups (load-balanced AcelleMail), the VPC also makes droplet-to-droplet traffic free — only egress to the public internet is metered.

When to upgrade from a single droplet

DO makes droplet resize easy — power off, click a bigger plan, power on. Down for 60-90 seconds. Three signals it's time:

  1. CPU consistently > 70 % during your peak send window. Upgrade the droplet, or split queue workers to a second droplet.
  2. Memory pressure (free RAM < 200 MB sustained, swap in use). MySQL's buffer pool is the most-likely cause; bump RAM by one tier.
  3. Disk > 80 % used and df -h /var/lib/mysql shows the DB is the largest occupant. Either offload assets to Spaces, archive old bounce logs, or upgrade — in that priority order.

A worth-knowing wrinkle: DO can resize CPU + RAM "permanently" (locks-in the new disk size too) or "with options" (resize back later). Always pick the latter unless you're certain you won't need to scale down for billing reasons.

More in Installation & Setup