Cross-posted from the HTML to Image blog, where the original lives.
Browsershot is the package most Laravel developers reach for when they need to turn HTML into an image. It wraps Puppeteer, drives real Chrome and produces pixel-accurate output. On your machine it works first time. Then you deploy, and the first render throws Failed to launch the browser process!.
The problem is not Browsershot's code. The problem is what it demands from the machine it runs on.
What Browsershot actually asks of your server
Browsershot is a PHP package with a second runtime hiding inside it. To run it in production you need Node.js, the Puppeteer npm package, a Chrome or Chromium binary, the long tail of shared libraries Chrome links against (libnss3, libatk, libgbm and friends on a slim Debian image) and a font set wide enough to cover whatever your templates contain, emoji included.






