You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无GUI的Ubuntu Server上运行Chrome headful模式?

在无GUI Ubuntu Server上用Puppeteer以Headful模式运行Chrome的解决方案

可行性说明

完全可以实现你的需求——在无GUI的Ubuntu Server上以headful模式运行Chrome配合Puppeteer,核心是通过虚拟显示服务模拟图形环境,同时避开权限和GPU相关的坑。

问题分析

你遇到的错误主要来自三个方面:

  • Snap版Chromium的AppArmor权限限制,导致DBus调用失败
  • 虚拟环境下的GPU渲染问题,Chrome无法找到合适的图形配置
  • 以root用户运行带来的权限冲突

分步解决方案

1. 替换为官方Google Chrome(推荐)

Snap版Chromium有严格的沙箱限制,换成官方Chrome能减少大部分权限问题:

# 下载Chrome安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# 安装依赖并安装Chrome
sudo apt install -y ./google-chrome-stable_current_amd64.deb

2. 使用xvfb-run简化虚拟显示配置

手动启动Xvfb容易遗漏配置,xvfb-run会自动处理虚拟显示的创建和环境变量设置:

# 先安装xvfb
sudo apt install -y xvfb

3. 调整Puppeteer代码配置

在你的Node.js代码里,指定Chrome路径并添加必要的启动参数,禁用GPU和沙箱(无GUI环境下不需要):

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    // 指定官方Chrome的路径
    executablePath: '/usr/bin/google-chrome-stable',
    // 启用headful模式
    headless: false,
    // 禁用GPU渲染,避免图形配置错误
    args: [
      '--no-sandbox',
      '--disable-gpu',
      '--disable-dev-shm-usage',
      '--disable-software-rasterizer',
      '--window-size=1280,1024'
    ],
    // 传递虚拟显示的环境变量
    env: {
      ...process.env,
      DISPLAY: process.env.DISPLAY || ':99'
    }
  });

  // 后续你的业务代码
  const page = await browser.newPage();
  await page.goto('https://example.com');
  // ...

  await browser.close();
})();

4. 用普通用户运行程序(避免root权限问题)

以root用户运行Chrome会触发更多权限限制,创建一个普通用户来运行你的应用:

# 创建普通用户
sudo useradd -m puppeteer-user
# 切换到该用户
su - puppeteer-user

然后在这个用户环境下安装依赖、运行你的Node.js应用。

5. 一键运行命令

用xvfb-run直接启动你的Node.js应用,它会自动创建虚拟显示:

xvfb-run -a node your-app.js

-a参数会自动找可用的显示端口,不用手动指定:99。

验证方法

如果想确认Chrome是否真的在headful模式运行,可以截图验证:
在代码里添加截图代码:

await page.screenshot({ path: 'page-screenshot.png' });

运行后查看生成的截图,能看到完整的页面内容就说明headful模式生效了。

内容的提问来源于stack exchange,提问作者Lorik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:43:34