Skip to content

Install AcelleMail on AWS EC2

This guide has moved. The install walkthrough for any server, an AWS EC2 instance included, is Install AcelleMail and Get Started.

This guide has moved

👉 Please read the install guide here: Install AcelleMail and Get Started.

That one guide applies to any server, an AWS EC2 instance included. It walks through the installation wizard step by step (system check, site and admin details, database, cron job) and then the first sending server and plan. It is the install walkthrough we keep current, so follow it instead of a server-specific copy that drifts out of date.

13 comments

7 comments

  1. Aditi
    Any reason to use MariaDB over MySQL 8? We default to MariaDB everywhere but I see most Acelle install guides use MySQL.
    1. Admin
      No strong reason. The guides say MySQL 8 mostly because that's what the AWS RDS default lands on and it's what we test against, not because MariaDB is a problem. Everything the app does goes through Eloquent, so if MariaDB works for the rest of your stack, keep it. Two things worth checking either way: use utf8mb4 for the charset, and give the DB user enough grants to run migrations (it creates and alters tables). If you hit something on MariaDB that works on MySQL 8, tell me the version and the query, I'd rather fix it than have the guide quietly assume one engine.
  2. Olufemi
    Followed this on Ubuntu 24.04 last week. Zero issues. The php-imap and php-sqlite3 notes saved me a wizard-error round-trip.
    1. Admin
      24.04 is the newest anyone's reported back on. php-imap and php-sqlite3 get called out because they're the two the wizard's requirement check stops on and neither is in the default php meta package.
  3. Tomas
    clean walkthrough. The supervisor config copy-paste worked first try...
    1. Admin
      Good to know the supervisor block pasted clean. One thing worth flagging for anyone else on EC2: if you deployed as `ec2-user` rather than `www-data`, change the `user=` line in that config to match whoever owns the app directory, otherwise the workers start but the queue silently writes files root can't read later. The rest of the walkthrough assumes an Amazon Linux/Ubuntu path split, so if you hit a different supervisor conf.d location than the one listed, tell me which AMI and I'll add it to the article.
  4. Yuki
    Installed on a $12/mo DigitalOcean droplet for our 30k-subscriber list. Performance has been fine. Memory peaks around 1.6 GB during batch sends; comfortable on 2GB.
    1. Admin
      Matches what we see. It's worker count that moves that peak, not list size, so re-check it if you ever bump workers.
  5. Rafael
    Is the install wizard skipable for automated deploys? Asking because we Terraform our infra and clicking through a wizard is awkward...
    1. Admin
      No headless flag yet. Run the wizard once by hand, bake that box into an AMI, and let Terraform stamp out from it with per-env values in .env.
  6. Ahmed
    We use Hetzner instead of DO — same Ubuntu image, identical install. Probably $4/mo cheaper. The PTR record on Hetzner requires opening a support ticket but they respond same-day.
  7. Aisha
    for anyone using systemd-resolved (ubuntu 22+): set dnsstublistener=no in /etc/systemd/resolved.conf before installing. otherwise port 53 conflicts when you eventually run a bounce handler
    1. Admin
      This bites people who later put a local DNS resolver or a mail-facing daemon on the same box, and the failure looks unrelated because the install itself goes through fine. Worth noting for anyone hitting it that after editing /etc/systemd/resolved.conf you need `systemctl restart systemd-resolved`, and on 22.04 /etc/resolv.conf is a symlink to the stub file, so point it at /run/systemd/resolve/resolv.conf or you lose name resolution on the next boot. I'll add this as a note under the prerequisites section of the EC2 guide.

More in Installation & Setup