BunnyStack v0.9.0 is live Get it now!

Skip to content

What BunnyStack is

BunnyStack runs a complete PHP web stack on your Windows machine, and every project gets its own https://<name>.test address. It is a portable alternative to Laragon, with one app window to manage everything.

ComponentWhat it doesDefault port
CaddyWeb server; serves every .test site over HTTPS80, 443
PHP (5.6 to 8.5)Several versions side by side; each project picks oneinternal
MariaDBDatabase server (user root)3306
MailpitCatches every email your sites send8025
RedisIn-memory cache (optional)6379

Optional extras, all installed from the Tools page: phpMyAdmin, Cloudflare Tunnel (for sharing a site publicly), Node.js, Python, Cmder, WP-CLI and Composer.

Getting started

BunnyStack ships as a zip. Extract it to a folder of your choice (for example D:\BunnyStack) and run bunnystack.exe from there. That folder becomes BunnyStack's home, and everything it downloads or creates stays inside it.

  1. Launch BunnyStack. If a required component is missing, it opens on the Tools page with the message "Install Caddy, MariaDB and a PHP version to get started".
  2. Install anything missing. Click Install next to Caddy, MariaDB or a PHP version if they aren't marked Installed. Add Mailpit, phpMyAdmin and the others if you want them.
  3. Trust the local certificate. Go to Settings > General > HTTPS and click Install next to Local certificate authority, so browsers trust every .test site.
  4. Start the stack. Click Start at the left end of the dock. It reads Running once everything is up.
  5. Approve the hosts file update. When Windows shows "Hosts file update needed", click it and accept the admin prompt, so your .test names resolve.

You land on the Overview page, which shows the state of the whole stack at a glance:

The Overview page: services on the left, recent projects on the right, the dock along the bottom
  • Services: click a row or its switch to start or stop Caddy, MariaDB, Mailpit or Redis. Each row shows its version and ports.
  • PHP · in use by projects: each PHP version your projects use, with a start/stop switch. The bug icon toggles Xdebug and the gear opens that version's settings.
  • Recent projects: the last five sites, with buttons to open the folder or the site in your browser. New project is at the bottom.
  • Doctor checks and repairs the setup. Sync regenerates the web server config, certificate and hosts file, then restarts what changed.
FolderContents
www/Your projects, one folder each
bin/Downloaded runtimes (Caddy, PHP, MariaDB and so on)
config/BunnyStack's settings and generated server config
data/Database files, caught mail, Redis data
logs/Log files for every service
ssl/The local certificate authority and site certificate

The dock

The floating dock at the bottom of the window is how you move around. Start, Overview, Settings and Quit are always there; the rest can be rearranged in Settings > Dock.

The Apps group opened from the dock: Mailpit, Logs, Share and Updates
Dock itemWhat it does
Start / RunningStarts or stops the whole stack
OverviewThe dashboard shown above
ProjectsList, create and edit your sites
AppsA group: Mailpit, Logs, Share and Updates
DatabasesImport, export and drop MariaDB databases
ToolsInstall components and manage PHP versions
phpMyAdmin ↗Opens phpMyAdmin in its own window, already logged in
Root ↗Opens your www folder in Explorer
Terminal ↗Opens Cmder (or a normal terminal) with PHP, Composer and WP-CLI on the path
SettingsApp preferences
QuitCloses BunnyStack

Items marked ↗ open a separate window. The Updates item shows an amber badge when updates are available, and Share shows a green count of live tunnels.

Closing the window: if services are running, BunnyStack asks what to do. Yes quits and stops everything; No hides the window to the system tray and keeps your sites running. Reopen it from the tray icon (Open).

Projects (your sites)

Each project is a folder in www/ served at https://<name>.test, with its own PHP version. Open Projects from the dock to see them all.

The Projects page, with filters by type and actions on each row

Use Filter projects (or press /) and the All / WordPress / Laravel / Plain switch to narrow the list. The icons on each row, left to right:

  • Plug (WordPress only): turn plugins on and off without logging in to WordPress.
  • ↗ open the site in your browser, folder open it in Explorer, pencil edit it.
  • Undo arrow (Restore defaults): the project's PHP version, preset, extra hostnames and WordPress rules go back to their defaults. Its files in www/ and its database are left untouched. The same button is on the edit page.

Removing a project for good: delete its folder in www/ first, then click Restore defaults. With the folder gone, BunnyStack has nothing to re-detect, so the project disappears from the list.

Create a project

  1. Click New project (on Projects or Overview).
  2. Enter a Name. Root (www/<name>) and Host (<name>.test) fill in automatically.
  3. Pick a PHP version and a Preset: Plain, WordPress or Laravel.
  4. Optionally add Extra hostnames (type one and press Enter). They get a hosts-file entry and a certificate on the next Sync.
  5. Click Create project. BunnyStack syncs automatically, and the site is live over HTTPS.
The New project form

Install WordPress or Laravel in one step

With the WordPress or Laravel preset, turn on Install it now. BunnyStack downloads the chosen version, creates the database and, for WordPress, sets up the admin user (default admin / admin). The install keeps running if you leave the page; a toast tells you when it's done.

Install it now and the WordPress rules for a new WordPress project

WordPress rules add server-level extras per site:

  • wp-rocket: serve WP Rocket's cached pages directly.
  • imagify-webp: serve .webp images to browsers that support them.
  • Uploads proxy: enter your production URL, and any image missing locally is fetched from the live site, so you don't need to copy wp-content/uploads. Add an htpasswd user and password if production is password-protected.

Already have a site? Copy its folder into www/ and click Sync. BunnyStack detects new folders and adds them as projects ("Added new project(s): …").

Tools, PHP versions and Xdebug

The Tools page installs everything BunnyStack can run, and manages the PHP versions your projects use.

The Tools page: components on the left, PHP versions on the right
  • Components: click Install next to any tool. Caddy and MariaDB are required; the rest are optional. Installing Cloudflare Tunnel adds Share to the dock.
  • PHP versions: each tile shows how many projects use that version. Versions no project uses are hidden from Overview and don't start with the stack.
  • Add a PHP version: pick a branch in the drop-down and click Install. It always fetches the newest patch release. For an end-of-life version, extract it from windows.php.net into bin/php/X.Y.Z/.
  • Check for updates jumps to the Updates page and checks everything.

Per-version settings

Click a PHP tile (or the gear on Overview) to change settings for that version only:

  • php.ini: memory limit, upload size, execution time and other common values. Empty fields use the defaults from Settings > PHP. Edit php.ini directly opens the raw file (Ctrl+S saves).
  • Modules: tick the extensions you need, such as intl, gd or zip.
  • Click Save to restart that PHP version with the new settings.

Debugging with Xdebug

The Debugging card on a PHP version page
  1. Open the PHP version your project uses and switch on Xdebug. The first time, BunnyStack downloads the matching build.
  2. Choose the Modes you need (Step debugging is the default).
  3. Set Start debugging to On every request, or On trigger to debug only requests carrying XDEBUG_TRIGGER.
  4. Point your IDE at the IDE port (default 9003) and click Save.

The quickest route is the bug icon next to a PHP version on Overview. Only one PHP version can have Xdebug on at a time.

Databases

MariaDB listens on localhost:3306 with user root. The Databases page covers everyday import and export; phpMyAdmin ↗ at the top right opens the full admin tool, already logged in.

The Databases page, with the import zone above the list of databases

Import a dump

  1. Drag a .sql, .sql.gz or .sql.zip file onto the Import a dump box, or click Choose file.
  2. Check the Database name (it's guessed from the file name). The database is created if it doesn't exist.
  3. Click Import (or press Enter). A progress toast shows how far along it is. There is no upload-size limit.

Export: click Export on a row, choose .sql, .sql.gz or .sql.zip, then pick where to save it.

Drop: the red trash icon deletes a database after you confirm. This can't be undone, so export first if you might need it.

If MariaDB is stopped, the page says so and offers to start the stack.

Mail, sharing and logs

Mail (Mailpit)

Mailpit catches every email your local sites send, so nothing reaches real inboxes. Open it from Apps > Mailpit. A Windows notification ("New email") appears for each message; click it to open the message.

WordPress sites are covered automatically: BunnyStack routes their mail to Mailpit, or to logs/emails/ if Mailpit is off. Turn this off in Settings > WordPress. To let one site send real mail, add define( 'BUNNYSTACK_MAIL_PASSTHROUGH', true ); to its wp-config.php.

Share a site publicly

With Cloudflare Tunnel installed, Apps > Share lists your projects. Pick one to open a temporary public URL, which is copied to your clipboard, so a client or phone can see the site. Live tunnels show Copy and Disconnect buttons; Disconnect all closes every tunnel.

Logs

Apps > Logs shows the last 1,000 lines from each service. Pick a source (caddy, mariadb, php-8.3 and so on) at the top, search, or filter to warnings and errors. Scrolling up pauses the live view; click Following to resume.

The Logs page showing Caddy's log

Settings, updates and shortcuts

Every setting saves the moment you change it; there is no Save button.

Settings > General
TabWhat you set there
GeneralWhether Mailpit and Redis start with the stack; automatic update checks at startup; beta releases; install or remove the local HTTPS certificate authority
PHPDefault PHP version for new projects; number of PHP workers (a recommended value is shown); default php.ini values for all versions
DockReorder, hide or group dock items
WordPressCatch WordPress email in Mailpit
AboutVersion number and the full changelog

Customize the dock

Drag rows to reorder them, or drop one onto the lower half of a group row to nest it. The eye icon moves an item to Hidden. New group creates your own popover group, and Reset to default undoes everything. Right-click the dock to jump straight here.

Settings > Dock

Updates

Open Apps > Updates and click Check again. BunnyStack checks each tool's own release feed, plus itself. Nothing downloads until you click Update (or Update all). When BunnyStack itself updates, it verifies the download's signature, then asks you to quit and reopen to finish.

Keyboard shortcuts

KeysAction
Ctrl+1 … Ctrl+9Jump to dock items in order, starting at Overview (hover an item to see its number)
/Focus the search box on Projects, Logs or Plugins
EscClose a popover, menu or confirmation dialog
← / →Switch Settings tabs
Space or EnterStart or stop the focused service row on Overview
Enter or commaAdd an extra hostname; Backspace removes the last one
Ctrl+SSave when editing php.ini directly

Troubleshooting

When something looks wrong, click Doctor first. It checks the whole setup, rebuilds the config, certificate and hosts file, and restarts services. Any failed check appears on the Tools page with an Install button where one helps.

ProblemFix
name.test doesn't load ("site can't be reached")Click Sync, then approve the "Hosts file update needed" notification and the admin prompt
Browser shows a certificate warningSettings > General > HTTPS: install the local certificate authority, then restart the browser
A new folder in www/ isn't listedClick Sync on Projects or Overview
An extra hostname doesn't resolveClick Sync; aliases are written to the hosts file only on Sync
A service won't startOpen Apps > Logs, choose that service, and filter to ERROR. Another program may already be using its port (80, 443, 3306)
Emails never arriveThey're meant to: open Apps > Mailpit to read them
Xdebug doesn't stop at breakpointsCheck that Xdebug is on for the PHP version the project uses, and that your IDE listens on port 9003
Closed the window but sites still runBunnyStack is in the system tray. Right-click its icon and choose Quit to stop everything

Where are my files? Projects live in www/ inside the BunnyStack folder, and database files in data/. Restoring a project's defaults never touches either.