重启后无法在 Ubuntu 22.04 上通过 Puppeteer 启动 Chromium 浏览器(除非先通过 ssh 登录 - 然后它才能工作)

重启后无法在 Ubuntu 22.04 上通过 Puppeteer 启动 Chromium 浏览器(除非先通过 ssh 登录 - 然后它才能工作)

请帮帮我。

我有一个全新的 ubuntu 服务器 22.04,其中安装了 node (v18.12.1) / express,并使用 PM2 作为进程管理器。

我安装了 Puppeteer 和 Chromium 浏览器,它们运行良好。我使用它来生成高质量的 PNG 文件供个人使用。

问题是,当我重新启动服务器时,PM2 成功启动了节点应用程序,因此我的网站可以访问。我可以成功 ping 它并得到响应,因此重新启动后 Web 应用程序可以正常工作。

问题是(重启后)如果我向我的 Web 应用发送请求并说,嘿,给我一张这个截图,Puppeteer 无法启动浏览器。我收到以下错误:

Error: Failed to launch the browser process!
/usr/bin/chromium-browser: 12: xdg-settings: not found
2022/12/08 00:36:47.167545 cmd_run.go:1055: WARNING: cannot start document portal: dial unix 
/run/user/1001/bus: connect: no such file or directory
/system.slice/pm2-sammy.service is not a snap cgroup

现在,假设我重新启动服务器,并以用户 sammy 的身份通过 ssh 进入服务器(所有内容都已安装并应该以 - pm2 启动项保存在用户 /home.sammy 中等)并且如果我要求相同的屏幕截图,现在一切都按预期工作。

看起来只要 ssh 进入服务器就会触发某些操作,然后一切就都正常了。我不知道我错过了什么。顺便说一句,我在本地 Vagrant 机器上可以正常使用。

我认为在重新启动时用户 sammy 下没有运行会话,因此它在 ssh 登录后可以工作,因为会话已启动?

答案1

好的,伙计们,我找到了解决方案。我会将其作为答案发布,希望它能帮助到别人。

我不得不启用用户逗留功能。

loginctl enable-linger sammy

Google 的简单解释:

What does enable linger do?
Enable/disable user lingering for one or more users. If enabled for a specific 
user, a user manager is spawned for the user at boot and kept around after 
logouts. This allows users who are not logged in to run long-running services.

我现在能够在服务器重启后直接通过 puppeteer 启动 chromium 浏览器,而无需先进行 ssh 登录。

相关内容