macrostack

Layer 5 · self-hosting reality check

What it actually takes to self-host phpList

The docs say not stated by the vendor. phpList is built to run on ordinary shared web hosting; its manual is written around a hosting provider's hourly sending caps.. In practice you want 1–2 GB on a VPS for phpList with MySQL. A long-time phpList forum helper called a 2 GB VPS fine for slower sending, with more RAM needed as the database grows.. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.

Usually reached from Mailchimp alternatives, where phpList is one of the picks.

Wondering whether you need to at all? Is Mailchimp free? — what the free tier actually allows, and where the wall is.

RAM — documented minimumnot stated by the vendor. phpList is built to run on ordinary shared web hosting; its manual is written around a hosting provider's hourly sending caps.
RAM — what it really needs1–2 GB on a VPS for phpList with MySQL. A long-time phpList forum helper called a 2 GB VPS fine for slower sending, with more RAM needed as the database grows.
CPU1 vCPU; not stated by the vendor
DiskMySQL holds subscribers, messages and per-message statistics and grows with every campaign. The bounce mailbox needs emptying; the manual says to delete bounces once they are fetched.
Monthly cost$6–12/mo on a 1–2 GB VPS, plus an SMTP relay: Amazon SES is $0.10 per 1,000 emails
Setup time1–2 hours on a LAMP host; longer to set up the bounce mailbox and SPF/DKIM for your relay
How you install itThe release zip or tgz on Apache with PHP 8.1+ and MySQL or MariaDB, then the web installer. Or the official phplist/phplist Docker image pinned to a version tag, with a separate MySQL. Either way, add cron jobs for processqueue and processbounces.
Ongoing maintenanceTwo cron jobs (the queue every 5 minutes, bounces daily), a dedicated bounce mailbox set in config.php, send-rate settings matched to your relay's limits, and upgrades by replacing files and running the database upgrade.
Where it stops scalingYour relay's rate and phpList's batch settings limit throughput more than the box does. The manual's old full-speed figure is about 3,000 personalised messages an hour. For large lists, move MySQL to its own server and raise the relay's limits.

The thing that catches people out

The official Docker image's `latest` tag is not a release. It is a build of the git master branch that, in phpList's own words, 'runs as a non-production (non sending) system only', and Docker Hub shows it was last rebuilt in July 2025, while the real releases (3.6.17 and 3.7.0) came out in August 2026. Anyone who writes `image: phplist/phplist` gets a newsletter tool that will not send. Pin a version tag such as 3.7.0, and upgrade by changing that tag on purpose.

When not to self-host phpList

You want visual automations, a drag-and-drop editor and a modern interface: Mautic does automation, and Keila or listmonk do simple newsletters. Also skip it if you cannot manage a bounce mailbox and your own sending reputation; phpList's hosted service or Mailchimp handle that.

Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.

Other Layer 5 self-hosting guides

Common questions

How much RAM does phpList actually need?
1–2 GB on a VPS for phpList with MySQL. A long-time phpList forum helper called a 2 GB VPS fine for slower sending, with more RAM needed as the database grows. in practice. The documented minimum is not stated by the vendor. phpList is built to run on ordinary shared web hosting; its manual is written around a hosting provider's hourly sending caps., which is the figure at which the process starts rather than the figure at which it works under real use. 1 vCPU; not stated by the vendor alongside it.
What does self-hosting phpList cost per month?
$6–12/mo on a 1–2 GB VPS, plus an SMTP relay: Amazon SES is $0.10 per 1,000 emails This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for two cron jobs (the queue every 5 minutes, bounces daily), a dedicated bounce mailbox set in config.php, send-rate settings matched to your relay's limits, and upgrades by replacing files and running the database upgrade.
How long does it take to set up phpList?
1–2 hours on a LAMP host; longer to set up the bounce mailbox and SPF/DKIM for your relay, via The release zip or tgz on Apache with PHP 8.1+ and MySQL or MariaDB, then the web installer. Or the official phplist/phplist Docker image pinned to a version tag, with a separate MySQL. Either way, add cron jobs for processqueue and processbounces..
When should I NOT self-host phpList?
You want visual automations, a drag-and-drop editor and a modern interface: Mautic does automation, and Keila or listmonk do simple newsletters. Also skip it if you cannot manage a bounce mailbox and your own sending reputation; phpList's hosted service or Mailchimp handle that.
What is the most common mistake when self-hosting phpList?
The official Docker image's `latest` tag is not a release. It is a build of the git master branch that, in phpList's own words, 'runs as a non-production (non sending) system only', and Docker Hub shows it was last rebuilt in July 2025, while the real releases (3.6.17 and 3.7.0) came out in August 2026. Anyone who writes `image: phplist/phplist` gets a newsletter tool that will not send. Pin a version tag such as 3.7.0, and upgrade by changing that tag on purpose.
The Macrostack brief

New swaps, worth your inbox.

A short, occasional email when we add a high-intent alternative or ship a new head-to-head. No spam, no selling your address — unsubscribe in one click.