---
title: "How to install puppeteer on Ubuntu"
url: "https://ploi.io/documentation/server/how-to-install-puppeteer-on-ubuntu"
published: "2023-01-23"
last_updated: "2026-06-15"
---

# How to install puppeteer on Ubuntu

Puppeteer is a Node.js library from the Chrome team that lets you control a headless Chrome/Chromium browser — handy for web scraping, automating forms, generating PDFs and more.

Modern Puppeteer downloads its own compatible Chromium build automatically, so you mainly need Node.js and the system libraries Chromium depends on. [Login as the root user](https://ploi.io/documentation/ssh/how-do-i-login-as-root-user) and follow the steps below.

1. Make sure Node.js is installed
---------------------------------

Check your Node.js version:

```
node -v
```

If Node.js isn't installed (or is outdated), install a current LTS release through NodeSource — see [How do I upgrade my Node.js version?](https://ploi.io/documentation/server/how-do-i-upgrade-my-nodejs-version). Avoid the `nodejs` package from Ubuntu's default repositories, as it is usually several versions behind.

2. Install Chromium's system dependencies
-----------------------------------------

Chromium needs a set of shared libraries to run. Install them with:

```
apt update
apt install -y ca-certificates fonts-liberation libasound2t64 libatk-bridge2.0-0 libatk1.0-0 libcairo2 libcups2 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 xdg-utils
```

On Ubuntu 22.04 the audio library is named `libasound2` instead of `libasound2t64`; adjust that one package name if apt reports it can't be found.

3. Install Puppeteer
--------------------

Install Puppeteer inside your project so it pins a matching Chromium build:

```
cd /home/ploi/your-project
npm install puppeteer
```

Puppeteer downloads its own Chromium during installation, so you do not need to install the `chromium-browser` package separately.

4. Verify
---------

Run a quick one-liner with Node to confirm Chromium launches:

```
node -e "const p=require('puppeteer');(async()=>{const b=await p.launch({headless:'new'});console.log(await b.version());await b.close();})()"
```

If it prints a Chrome version, Puppeteer is working.