monolithic kernel

GitHub Actions の Ubuntu 24.04 で Puppeteer が動かない問題

表題の通り、Ubuntu 24.04 (記事公開時点での latest) を使っていると、Puppeteer が動かない問題がある。

[Bug]: “No usable sandbox!” with user namespace cloning enabled · Issue #12818 · puppeteer/puppeteer

これは、Ubuntu の AppArmor が Puppeteer がダウンロードした Chrome のバイナリを実行させないようにしているために起きている。Ubuntu 22.04 (ubuntu-22.04) を使うことでも回避できるのだが、Ubuntu 24.04 を使いたい場合には、SUID sandbox という古い sandbox で実行することで回避できるようである。

Troubleshooting | Puppeteer

GitHub Actions の workflow に落とし込むと以下のようになる。

jobs:
task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
- run: |
npm ci
# https://pptr.dev/troubleshooting#issues-with-apparmor-on-ubuntu
- name: Prepare puppeteeer SUID sandbox
id: sandbox
run: |
SANDBOX=$(find ~/.cache/puppeteer -type f -name chrome_sandbox | head -n1)
sudo chown root:root "$SANDBOX"
sudo chmod 4755 "$SANDBOX"
echo "sandbox_path=$SANDBOX" >> "$GITHUB_OUTPUT"
- run: |
npm run task
env:
CHROME_DEVEL_SANDBOX: ${{ steps.sandbox.outputs.sandbox_path }}

Related articles