The biggest issue with Herd Pro is that you cannot use Reverb out of the box with a site that has SSL enabled. Here is the workaround for it all to play nicely together.
First you will need to create two sites. The two I have here are as follows:
- reverb-ssl - This is a new Laravel 11 project using Breeze for the ease of Inertia. This also follows the setup for Reverb line by line.
- wss-reverb-ssl - This is an empty directory, we are going to use this only for editing a Nginx config and setting up a proxy to the reverb service.
Of note is that I'm using Herd Pro as well, so all additional services are being used directly though Herd Pro itself.
Onec those two sites have their SSL's as provisioned by Herd, we'll now fire up the Reverb Service. You can see I'm running both MySQL and Reverb as my Services and both are active.
Once this is running copy the enviroment variables and we'll adjust our Laravel Project which is the reverb-ssl directory.
The updated .env variables should now be:
APP_URL=https://reverb-ssl.test
REVERB_APP_ID=1001
REVERB_APP_KEY=laravel-herd
REVERB_APP_SECRET=secret
REVERB_HOST="wss-reverb-ssl.test"
REVERB_PORT=443
REVERB_SCHEME=https
Notice that they match the app ID, and that the nost matches that additional directory that we setup and added an SSL to. This is very important as this Host is where we are going to now edit an Nginx conf file and setup our proxy.
In your ~/Library/Application Support/Herd/config/valet/Nginx/
directory, there will be a wss-reverb-ssl.test file. Open that and you'll find a faily standard Nginx config file. We're going to replace a few lines.
You'll want to find these lines:
location / {
rewrite ^ "/Applications/Herd.app/Contents/Resources/valet/server.php" last;
}
And replace those lines with these:
location / {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# This is for Mac
proxy_pass http://0.0.0.0:8080;
# This is for Windows
proxy_pass http://localhost:8080;
}
Once this is saved, stop and restart the general Herd services (Nginx, PHP, DNSMasq) and you should be all set. Visting reverb-ssl.test will now have the ability to listen to Reverb via Echo!
Thank you 🙏,
I would like to add small thing.
you can add
/app
to the proxy listening target that way you don't need to make an empty directory. as all reverb request are prepended with/app
and keep
REVERB_HOST
pointing to your project.