Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk6 min

How to Run Puppeteer Screenshots on an Indian Debian VPS

A practical Debian VPS setup for Puppeteer screenshots: install its compatible Chrome, resolve Linux dependencies, and fix common launch problems.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

On a Debian VPS in India, install Puppeteer’s matching Chrome for Testing build and Debian’s required shared libraries, then launch the browser from Node.js. The VPS’s location does not change Chrome’s documented Linux dependencies. Puppeteer’s standard puppeteer package downloads a compatible browser during installation; use puppeteer-core only when you will manage the browser yourself.

Check your Debian VPS before installing

Confirm the Debian release, CPU architecture, Node.js version, and which Linux user will run the screenshot job. Puppeteer’s current system-requirements guide lists Node.js 22.12 or newer and Debian or Ubuntu on x64 or arm64 for Chrome for Testing. Check the requirements for the specific Puppeteer version you install, since support and browser pairings can change. Puppeteer system requirements

As an Amazon Associate I earn from qualifying purchases.

For example, check Node and architecture with:

node --version
uname -m
cat /etc/debian_version

If your server is arm64, confirm the selected release supports that platform before proceeding. Also ensure the deployment user can access the Puppeteer browser cache; a browser installed under one user’s home directory may not be available to a service running as another user.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Puppeteer and its compatible browser

Recommended: let Puppeteer manage Chrome

From your Node project directory, install the standard package:

npm install puppeteer

Ordinarily, this downloads a compatible Chrome for Testing browser as part of installation. The Linux browser download is approximately 282 MB, so allow for that download and enough disk space. Puppeteer installation guide

Some package managers or deployment configurations block install scripts. If Puppeteer installed but its browser did not, run the browser installer explicitly:

npx puppeteer browsers install

On Debian or Ubuntu, you can also ask the Puppeteer browser CLI to install Chrome and attempt to install the operating-system dependencies:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo npx puppeteer browsers install chrome --install-deps

The --install-deps option installs OS packages and therefore requires root privileges. If you prefer not to delegate dependency installation to the CLI, install the required Debian packages through your normal system administration process instead. Puppeteer browser CLI

Use puppeteer-core only for a self-managed browser

puppeteer-core does not download Chrome. Install it when you already manage a compatible browser—for example, a centrally installed browser or a remote browser—and provide the executable path when launching. Do not pair arbitrary Chrome and Puppeteer versions: check Puppeteer’s supported-browser mapping for the version you use. Puppeteer supported browsers

npm install puppeteer-core

Then point Puppeteer at the browser you installed:

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/usr/bin/google-chrome',
    headless: true
  });
  try {
    const page = await browser.newPage();
    await page.goto('https://example.com', { waitUntil: 'networkidle2' });
    await page.screenshot({ path: 'shot.png', fullPage: true });
  } finally {
    await browser.close();
  }
})();

Replace /usr/bin/google-chrome with the actual path to your compatible browser. With the standard puppeteer package, the browser is managed for you, so you normally do not need to set executablePath.

Take a screenshot with Puppeteer

Save this as screenshot.js in the project where you installed puppeteer, then run node screenshot.js. This captures a full-page PNG after navigation reaches the networkidle2 condition:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  try {
    const page = await browser.newPage();
    await page.goto('https://example.com', {
      waitUntil: 'networkidle2',
      timeout: 60000
    });
    await page.screenshot({ path: 'screenshot.png', fullPage: true });
  } finally {
    await browser.close();
  }
})();

Change the URL and output filename for your job. If the site keeps making background requests, navigation may not settle promptly at a network-idle condition; choose a suitable navigation wait condition or wait explicitly for a page element your job needs.

Resolve missing Debian libraries

Chrome needs shared libraries supplied by the operating system. When launch fails with a missing-library error, inspect the Chrome executable’s dynamic dependencies rather than guessing which package to add. Puppeteer’s troubleshooting guide describes this approach and lists common Linux dependencies. Puppeteer troubleshooting

  1. Find the Chrome executable installed for Puppeteer. The browser CLI can show installed browsers with npx puppeteer browsers list; use the reported executable path for the next check.
  2. Run the dependency check against that executable: ldd /path/to/chrome | grep not.
  3. For each missing library, install the Debian package that provides it, using the dependency guidance for your Debian environment.
  4. Retry the screenshot as the same Linux user and service environment that will run it in production.

The diagnostic command can return no lines when it finds no unresolved shared libraries. That does not rule out other launch problems, such as an inaccessible browser cache, insufficient permissions, or an environment-specific sandbox restriction.

Troubleshoot common screenshot failures

Symptom Likely cause What to check or do
No browser found after npm install Install scripts were blocked, so the browser download did not run. Run npx puppeteer browsers install as the project user, then retry.
Chrome exits immediately or reports a missing shared library A required Debian library is absent. Run ldd /path/to/chrome | grep not and install packages for the missing libraries.
Browser works in a shell but not under a service The service user may have a different home directory, cache, permissions, or environment. Check which user runs the job and confirm that user can read and execute Chrome and access the browser cache.
Custom Chrome launches unpredictably or fails with protocol/version errors The browser may not match the Puppeteer release. Use the browser installed by puppeteer, or consult the supported-browser mapping before choosing a manually managed Chrome version.
Navigation times out The page may be slow, unreachable from the VPS, or still making requests. Check the URL from the VPS, set an appropriate navigation timeout, and choose a wait condition suited to the page instead of assuming every site becomes idle.
Temptation to disable Chrome’s sandbox Some Linux environments have sandbox or AppArmor-specific complications. Diagnose the environment-specific cause first. Do not disable the sandbox as a routine fix; changing sandbox settings reduces browser isolation and has a security trade-off.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Reliability, performance, and VPS sizing

Browser installation adds a substantial download—the Puppeteer installation guide puts the Linux Chrome for Testing download at approximately 282 MB—and the process also depends on the server’s available disk space, memory, and CPU. The reviewed documentation does not establish an Indian VPS provider, instance size, or capacity tier for screenshot workloads, so size the server against your own page complexity and concurrency rather than treating a particular tier as recommended.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For repeatable deployments, install dependencies and the browser during image or release preparation, run the job as a consistent non-root service user where your environment permits, and verify a real screenshot in the same environment used in production. Record the Puppeteer release and browser pairing so upgrades can be checked against the supported-browser mapping.

Or skip the browser setup

If you want a screenshot without installing Chrome and its Linux libraries on the VPS, ScreenshotNeo provides a website screenshot API and MCP server. A single GET request can return PNG, JPEG, WebP, or PDF. For example, this cURL request captures a page as WebP; see the ScreenshotNeo API documentation for setup and options:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.