Statamic's installation docs list Laravel Herd first, marked “Recommended” — and to be fair, free Herd genuinely serves a Statamic site. Statamic is flat-file at its core: a Laravel application that needs PHP and a web server, no database required. The catch arrives the moment your build becomes a real client site: form notification emails, a database for users or cache at scale, the right Node version for the frontend build — and on Herd, each of those is a Pro feature at $99/year. Here's what the free tier actually covers, where the wall is, and the free way around it.
What free Herd covers — honestly, quite a lot
Free Herdgives you PHP, nginx and .test domains with trusted HTTPS. For a flat-file Statamic site — content in Markdown and YAML, no users beyond yourself, no forms — that's a complete setup, and if that's your project, the official recommendation is good advice and you can stop reading.
Where the Pro wall appears
Real Statamic builds hit three of Herd's Pro gates quickly. Mailis the big one: Statamic's form notifications and password resets send email, and without local mail capture you're either testing against a real mailbox or not testing at all — capture is Pro on Herd (and on ServBay; the free tools are compared in our Mailpit guide). Databases arrive when you move users, cache or queues off the filesystem — one shared Pro instance on Herd. Node version management— for the Vite build every modern Statamic frontend runs — is Pro as well. None of this is a criticism of Herd's engineering; it's the free-tier boundary, and Statamic builds cross it early.
The free full-stack route
composer create-project statamic/statamic mysite
# add the folder to PortBay, press Play
# → https://mysite.test, PHP pinned, Mailpit catching form mailStatamic + PortBay, step by step
Two comment lines carry the whole setup, so here is each step in order, with what happens under the hood.
- Create the project. Run the composer command above, or point PortBay at an existing Statamic folder. The app reads the stack and fills in the runtime, start command and web root; for Statamic that web root is
public, the same directory the official docs have you serve. - Pin the PHP version. Statamic 5 needs PHP 8.2 or newer. PortBay detects the PHP versions installed on your machine (Homebrew, ServBay, the system PATH) and the project pins one of them, so a legacy client site on 8.1 next door keeps its own runtime. If no 8.2+ install exists, the Languages screen shows the
brew installcommand and can run it for you. - Press Play. PortBay issues a certificate for
mysite.testthrough mkcert, resolves the hostname with its managed local DNS, and routes requests through a bundled Caddy edge to PHP-FPM. The control panel athttps://mysite.test/cploads on an origin the browser trusts, and the same trusted HTTPS on .test domains covers every project you add after this one. Certificates live under~/Library/Application Support/PortBay/certs/, and a Certificates page lists each one with its expiry and a one-click reissue. - Send a test form. Mailpit starts with the app, and PortBay injects
MAIL_HOSTandMAIL_PORTinto every project process it starts, so Statamic's form notifications and password resets land in the local inbox at127.0.0.1:8025without a single.envedit. Values you set yourself win over the injected defaults. - Add a database when flat-file stops fitting. Statamic runs from Markdown and YAML until you move users, cache or queues into a database. When that day comes, open Databases, pick MySQL, MariaDB or PostgreSQL, name the instance, and click Create; first-time MySQL and PostgreSQL initialisation runs in the background and can take a minute or two. Link the instance to the project and PortBay injects
DATABASE_URLand theDB_*variables into the project's process on every start, with your own.envvalues winning on conflict. The local database manager keeps each instance in its own data directory on its own port, so two client sites never share a server. - Build the frontend. Most current Statamic starter kits build their CSS and JS with Vite, which needs Node. PortBay detects Node versions the same way it detects PHP (Homebrew, nvm, mise, asdf) and the project can pin one, so the build stops depending on whatever your shell has linked.
The check that it all worked takes a minute: load https://mysite.test, submit the contact form, open the Mailpit inbox, and confirm the message arrived. That loop, page plus form plus inbox, is the part of a real Statamic build that free Herd cannot cover, and here it costs nothing.
The honest trade
PortBay (free, open source, macOS) includes the pieces Herd gates: built-in Mailpit so every form notification lands in a local inbox, a per-project MySQL, MariaDB or PostgreSQL database for the day you outgrow flat-file, and Node managed alongside PHP for the frontend build — plus trusted HTTPS on .test, same as Herd. The honest trade: Herd remains the most Laravel-polished tool in the category, it has a Windows build, and if you already pay for Pro the gates above are open. But “recommended by the docs” shouldn't cost $99/year to become usable for a site with a contact form. The switch guide covers moving an existing Herd setup across without breaking it, and the download is free — try it on one Statamic project next to Herd and keep whichever earns the spot.
