That’s strange, it makes me think PuppeteerSharp is not opening the correct chromium binary. Can you try running this command to first make sure the arm build of chromium is installed and working:
If that works, then you’re either not setting the environment variable properly (Environment="PUPPETEER_EXECUTABLE_PATH=/usr/local/bin/chromium-wrapper") or for some reason it’s being ignored/overridden by Manager/PuppeteerSharp.
I tried your setup and it isn’t working. Would you mind having a look to see if you can spot my mistake?
Clicking the PDF button on a sales invoice (or anywhere else) does not cause anything to hit the logs. I watched journalctl --unit=manager-server --follow
It does cause the following javascript error Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘digest’) at sha256Hex (pdf.js?version=25.11.27.3143:33:38) at getBlob (pdf.js?version=25.11.27.3143:52:23) at async getPdf (pdf.js?version=25.11.27.3143:97:22)
Here’s my setup
I’m running 25.11.27.3143 on Debian GNU/Linux 13 (trixie) headless
I tweaked your instructions a bit to fit my setup.
apt update && apt install chromium which chromium /usr/bin/chromium
chromium --version Chromium 142.0.7444.175 built on Debian GNU/Linux 13 (trixie)
The gist of that discussion above is that your browser will only allow some features if you have an SSL certificate on the domain the code is running in.
Are you accessing Manager over HTTP instead of HTTPS? In my setup I have it behind a subdomain through Cloudflare so I can access it via a URL like https://manager.my-website.com.
I have installed a new clean Ubuntu 24.04 ARM64 server just to make sure I am not doing something wrong. Installed latest manager version, nginx and installed ssl certificate. Then I tried above steps but unfortunately same error is appearing on new server.
<h1>Internal Error</h1><hr />Manager 25.12.2.3146<hr /><pre>PuppeteerSharp.ProcessException: Failed to launch browser!
at PuppeteerSharp.States.ProcessStartingState.StartCoreAsync(LauncherBase p) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/States/ProcessStartingState.cs:line 83
at PuppeteerSharp.States.ProcessStartingState.StartCoreAsync(LauncherBase p) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/States/ProcessStartingState.cs:line 89
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Launcher.cs:line 77
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options) in /home/runner/work/puppeteer-sharp/puppeteer-sharp/lib/PuppeteerSharp/Launcher.cs:line 110
at ManagerServer.HttpHandlers.Pdf.Post() in /home/runner/work/Manager/Manager/ManagerServer/HttpHandlers/Pdf.cs:line 38
at ManagerServer.HttpServer.<>c.<<Build>b__0_16>d.MoveNext() in /home/runner/work/Manager/Manager/ManagerServer/HttpServer.cs:line 270
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|7_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)</pre><p><a href="javascript:window.history.back();">Go back</a>