The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →To take a Puppeteer screenshot on an Ubuntu VPS, install Puppeteer and its matching Chrome for Testing browser, install the required Linux libraries, then launch Puppeteer in headless mode and save a page screenshot. The browser setup is the standard Ubuntu/Debian path; an Indian data-center location matters mainly when choosing where to run jobs for nearby users or data sources, not for the installation steps.
Choose the browser installation path
Recommended: Puppeteer-managed Chrome
For a new Node.js project, install the puppeteer package. It downloads a compatible Chrome for Testing version by default. Puppeteer’s v25.12.0 installation guide puts the Linux browser download at approximately 282 MB; that is the download size, not a guarantee of total disk usage after extraction, dependencies, browser profiles, and screenshots. See the Puppeteer installation guide.
As an Amazon Associate I earn from qualifying purchases.
Chrome for Testing is supported on Debian/Ubuntu Linux on both x64 and arm64. Check the VPS architecture before provisioning or diagnosing a missing or incompatible browser binary; the supported-platform details are in Puppeteer’s supported platforms.
Alternative: manage Ubuntu’s Chromium yourself
Ubuntu’s Chromium package has a snap context, so using it is a separate browser-management choice, not a drop-in assumption that fits every VPS image. If you manage the browser yourself, use puppeteer-core and set executablePath to the actual browser binary. Verify that the installed Chromium version works with your Puppeteer version and VPS image. The available documentation does not establish that this approach is universally preferable to Puppeteer-managed Chrome.
#1 Best Overall
Install Puppeteer and browser dependencies
-
Confirm the machine’s architecture and install a supported Node.js runtime. Puppeteer’s current system requirements page specifies Node.js 22.12 or later; check the system requirements again when provisioning because runtime requirements can change.
-
Create a project and install Puppeteer:
mkdir puppeteer-shot && cd puppeteer-shot npm init -y npm install puppeteer -
If the package manager skipped Puppeteer’s install script and no browser was downloaded, explicitly install Chrome for Testing:
npx puppeteer browsers install chromeAlternatively, allow Puppeteer’s install script according to your package manager’s policy. Avoid silently assuming the browser exists just because the Node package installed.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.Rank #2
Linux Builder Learn How to Use Linux, Ubuntu Linux 22.04 Bootable 8GB USB Flash Drive - Includes Boot Repair and Install Guide- The preinstalled USB stick allows you to learn how to learn use Linux, boot and load Linux without uninstalling your current OS! 30 day money back guarantee no questions asked! See s://.gnu.org/philosophy/selling.en.html for more info about open source software!
- Comes with easy to follow install guide. 24/7 software support via email included. (Only USB flash drives sold by the seller Linux Builder include this)
- Ubuntu 22.04 - 'Jammy Jellyfish'
- Comprehensive installation includes lifetime free updates and multi-language support, productivity suite, Web browser, instant messaging, image editing, multimedia and email for your everyday needs
- Boot repair is a very useful tool! This USB drive will work on all modern day computers, laptops or desktops, custom builds or manufacture built!
-
Install Chrome and its required operating-system dependencies with apt privileges during provisioning:
sudo npx puppeteer browsers install chrome --install-depsThis command needs root/apt privileges for system packages. Run setup as a privileged provisioning step, then run the application and browser as an unprivileged user. Do not respond to a permissions error by running the production browser process as root. See Puppeteer’s troubleshooting guidance.
-
Make sure the runtime account can read Puppeteer’s browser cache. By default it is under
$HOME/.cache/puppeteer; if installation and execution use different users or home directories, the runtime account may not see the installed browser.Rank #3
Capture a screenshot with Puppeteer
Save the following as screenshot.mjs in the project. Puppeteer runs headless by default, so a VPS does not need a visible desktop. The code sets a viewport, navigates, saves a full-page PNG, and closes the browser even if navigation or capture fails.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'page.png', fullPage: true });
} finally {
await browser.close();
}
Run it with:
node screenshot.mjs
The networkidle2 wait condition is only an example. Pages with long-lived connections or delayed rendering may not become network-idle at the right time. For those pages, choose a more appropriate navigation condition or wait for a specific selector that indicates the content is ready. Puppeteer’s overview documents the launch, page, navigation, and screenshot flow at pptr.dev.
Account for the Indian VPS location
A data center located near Indian users or the source systems your job visits can reduce network distance, but no India-specific screenshot latency or performance benchmark is established here. Select a provider only after checking the actual data-center location, x64 or arm64 architecture, available CPU and memory, disk capacity, bandwidth, and outbound-network restrictions. No provider, instance size, price, or uptime figure is verified for this guide.
Rank #4
Troubleshoot common launch and capture failures
“Could not find Chrome” or no browser executable
The package manager may have blocked Puppeteer’s install script. Run npx puppeteer browsers install chrome, then confirm the runtime account can read the browser cache in its own home directory.
Chrome reports missing shared libraries
Use the documented --install-deps route during privileged setup. To investigate an existing install, inspect the browser binary’s shared-library dependencies with ldd and compare missing libraries against Puppeteer’s current Debian/Ubuntu dependency guidance. Common dependency families include NSS, GTK, GBM, fontconfig, and X11 components; do not assume a hand-written package list covers every Ubuntu image or release.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →“No usable sandbox!” or a sandbox-related launch error
Keep Chrome’s sandbox enabled where possible. Puppeteer strongly discourages --no-sandbox because sandboxing is a security boundary for web content; diagnose missing libraries and the host’s user-namespace configuration first. Ubuntu 23.10 and later may apply an AppArmor profile affecting Chrome stable at /opt/google/chrome/chrome, which can block user namespaces and affect Puppeteer-downloaded Chrome for Testing. Check the current Puppeteer troubleshooting page for a release-specific remedy rather than applying an old workaround blindly. Use --no-sandbox only for trusted content when you accept the security trade-off.
Navigation hangs or the screenshot misses content
A page may keep network connections open or render important content after navigation appears complete. Replace networkidle2 with a condition suited to the page, or wait for a selector tied to the content you need before calling screenshot().
Profile, cache, or output write errors
Check that the unprivileged runtime user can write its browser profile and the directory where the screenshot is saved. Also check available disk space: the browser download is substantial, and extracted files, libraries, profiles, and output require additional room. The cited documentation does not establish a universal minimum VPS disk, RAM, or CPU size.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server: a GET request can return a PNG, JPEG, WebP, or PDF without you provisioning Chrome on the VPS. Cookie and consent banners, newsletter popups, and chat widgets are removed before capture; each cleanup step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in headers. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture.
Recommended Free Tools
One-call cURL example (see the ScreenshotNeo API documentation; replace the key and target URL):
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, with no card required.
Quick Recap
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.

