Skip to content

Laravel Herd ​

Laravel Herd is a native macOS application that bundles PHP and Nginx to serve sites locally with minimal configuration. Combined with MariaDB and Redis installed via Homebrew, it provides a full local stack for most Laravel projects.

Laravel Herd ​

Only the free tier of Herd is required for standard local development. The pro tier is not needed.

Installation ​

Download and install Herd from herd.laravel.com. Follow the setup wizard – it will configure PHP-FPM and Nginx automatically and start both at login.

Adding sites ​

Herd watches ~/Herd by default. Any directory placed there will automatically be served at http://{directory-name}.test.

To serve a project outside of ~/Herd, open the Herd menu bar icon, go to Sites, and click Add Site, then select the project root.

PHP versions ​

Herd ships with several PHP versions. The active version can be changed under PHP in the Herd interface and applies globally unless overridden per-site.

To set a PHP version for a specific site, click the site in the Sites list and choose a version from the PHP dropdown.

Local TLS ​

To serve a site over HTTPS locally, select it in the Sites list and click Secure. Herd will generate and trust a local certificate automatically.

Set your local app URL accordingly:

dotenv
APP_URL=https://{site-name}.test

MariaDB ​

The free tier of Herd does not bundle a database server, so MariaDB is installed separately via Homebrew.

Installation ​

bash
brew install mariadb
brew services start mariadb

The service will start automatically at login from this point on.

Securing the installation ​

Run the security script to set a root password and remove default loose permissions:

bash
mariadb-secure-installation

At minimum, set a root password and remove anonymous users when prompted.

Environment variables ​

dotenv
DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_project
DB_USERNAME=root
DB_PASSWORD=your_root_password

Note: Laravel versions prior to 11 do not have a dedicated mariadb connection driver. Use mysql for those projects instead.

Redis ​

Installation ​

bash
brew install redis
brew services start redis

The service will start automatically at login from this point on.

Verifying the connection ​

bash
redis-cli ping

A PONG response confirms Redis is reachable.

Environment variables ​

dotenv
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

To use Redis for caching and queues:

dotenv
CACHE_STORE=redis
QUEUE_CONNECTION=redis

Typesense ​

Typesense is not required on all projects. Where it is needed, run it locally via Docker Compose rather than installing it directly.

docker-compose.yml ​

Add a docker-compose.yml to the project root:

yaml
services:
    typesense:
        image: typesense/typesense:27.1
        ports:
            - '8108:8108'
        volumes:
            - typesense-data:/data
        command: '--data-dir /data --api-key=your_api_key --enable-cors'

volumes:
    typesense-data:

Replace your_api_key with any string – this is a local-only key so the value does not matter.

Starting and stopping ​

bash
docker compose up -d
docker compose down

Environment variables ​

dotenv
SCOUT_DRIVER=typesense
TYPESENSE_API_KEY=your_api_key
TYPESENSE_HOST=localhost
TYPESENSE_PORT=8108
TYPESENSE_PROTOCOL=http