Skip to content

Install AcelleMail on Debian 12 (Bookworm)

This guide has moved. The install walkthrough for any server, a Debian 12 server 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, a Debian 12 server 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.

10 comments

7 comments

  1. Quân
    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 real reason, the guides just predate MariaDB being common. Debian 12's MariaDB 10.11 is fine. Only thing: create the database as utf8mb4 with utf8mb4_unicode_ci, don't trust the server default.
  2. Aditi
    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.
  3. Chen
    Clean walkthrough. The supervisor config copy-paste worked first try.
  4. Yuki
    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
      Worth noting Debian 12 ships systemd-resolved too, so this isn't just an Ubuntu 22+ thing, the stub listener sits on 127.0.0.53:53 out of the box. The conflict only bites if you put a real resolver on the box (unbound, dnsmasq, a local BIND for reverse lookups), which a lot of people do once they start doing their own bounce and blocklist checks. The bounce handler itself just reads IMAP, it doesn't want port 53. I'll add it to the article as a note under the prerequisites section rather than a step, since it's conditional. One correction I'd make to your snippet: after editing /etc/systemd/resolved.conf you also want to point /etc/resolv.conf somewhere real, otherwise the box loses DNS entirely once you restart the service. Symlink it to /run/systemd/resolve/resolv.conf or write your own.
  5. Minh
    is the install wizard skipable for automated deploys? asking because we terraform our infra and clicking through a wizard is awkward.
    1. Admin
      No supported headless install path today, so on Debian 12 the wizard is still a manual step. It's on the list, and the shape we want is an artisan command that takes the same inputs the wizard collects (DB creds, app URL, admin account) so Terraform can bake the .env and run it in a provisioner instead of a browser. If you want to try it before that lands: the wizard's whole job is writing .env, running migrations, and creating the first admin. Those are all reachable from artisan, and the install screen is gated by a marker file the wizard drops at the end. People have wired that up by hand. It works, but it isn't documented and I'm not going to promise the marker path stays put across upgrades, so pin your version if you go that route. Tell me what your Terraform module needs to pass in and I'll make sure the command signature covers it.
  6. Anna
    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.
  7. 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.

More in Installation & Setup