DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk8 min

How to Take Website Screenshots with Puppeteer on a Low-Cost Indian Cloud Server

A practical guide to running Puppeteer on an Indian Linux VPS, from compatible Node and Chrome setup to full-page capture, Docker, security and troubleshooting.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To capture a website with Puppeteer on an Indian Linux VPS, install a current Node.js runtime and Puppeteer, let Puppeteer download its compatible Chrome for Testing browser, then navigate to the page and call page.screenshot(). For the currently documented Puppeteer 25.12.0, the requirements page specifies Node.js 22.12 or later and Debian or Ubuntu Linux on x64 or arm64. A low-cost VPS may run the workflow, but no provider or small plan is proven to meet a particular screenshot workload without testing it.

Set up Puppeteer on a Linux VPS

Puppeteer controls a browser, so deployment involves more than installing a Node package: the compatible browser, operating-system libraries, fonts, writable storage and safe browser execution all matter.

As an Amazon Associate I earn from qualifying purchases.

Check the runtime and server image

Puppeteer’s current 25.12.0 system requirements specify Node.js 22.12 or later and Chrome for Testing on Debian/Ubuntu Linux x64 and arm64. Confirm the operating system and CPU architecture of your VPS before installing. These requirements may change with future Puppeteer releases, so check the official supported browsers and system requirements for the version you deploy.

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

Create a project and install Puppeteer

On a supported server with Node.js installed, create a project and install Puppeteer using npm:

mkdir site-shot
cd site-shot
npm init -y
npm install puppeteer

Puppeteer’s install process normally downloads a matched Chrome for Testing browser. Its installation guide estimates the Linux browser download at about 282 MB, so allow for download time and disk space. If your package manager or deployment pipeline disables install scripts, verify that the browser was actually downloaded; otherwise, launching Puppeteer can fail because its expected browser executable is missing. See the Puppeteer installation guide for current installation details.

Capture a website screenshot

Save this as capture.mjs in the project directory. It accepts a target URL as its first argument and saves a full-page PNG. The URL is encoded and checked before navigation; the browser is closed in a finally block even if navigation or capture fails.

import puppeteer from 'puppeteer';

const rawUrl = process.argv[2];
if (!rawUrl) {
  throw new Error('Usage: node capture.mjs https://example.com');
}

const target = new URL(rawUrl);
if (!['http:', 'https:'].includes(target.protocol)) {
  throw new Error('Only http and https URLs are supported');
}

const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();
  await page.goto(target.href, {
    waitUntil: 'networkidle2',
    timeout: 60000
  });
  await page.screenshot({
    path: 'page.png',
    fullPage: true,
    type: 'png'
  });
} finally {
  await browser.close();
}

Run it with node capture.mjs https://example.com. The example follows Puppeteer’s documented navigation and screenshot flow; it has not been executed against your VPS. networkidle2 waits for a period with no more than two network connections, which is often useful for pages that load assets after the initial HTML. It does not guarantee that every animation, delayed widget or lazy-loaded image has finished.

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

Choose the capture area

  • fullPage: true captures the full scrollable document; the default is false, which captures the viewport.
  • Use clip to capture a specific rectangle when you need a fixed region. A clip includes coordinates and dimensions, so keep the viewport stable when exact framing matters.
  • Set a fixed viewport with await page.setViewport({ width: 1440, height: 900 }); before navigation when repeatable viewport dimensions matter.
  • For a page with late-loading content, wait for a known selector using await page.waitForSelector('.content-ready'); before taking the screenshot. Choose a selector that actually indicates the content you need.

See the ScreenshotOptions API for the current options and types. A page that continually polls or keeps network connections open may never become idle as expected; in that case, wait for a meaningful selector or use a deliberate delay instead of relying on network idleness alone.

Handle Linux dependencies and browser security

Chrome can fail to start even when the JavaScript is valid. Linux browser builds depend on system libraries and fonts, and the required packages can vary with the distribution and browser version. Use Puppeteer’s current troubleshooting guide for Debian/Ubuntu dependencies. If Chrome reports a missing shared library, inspect the browser binary’s unresolved libraries and install the matching operating-system package rather than guessing from an old package list.

Keep Chrome’s sandbox enabled where possible. Puppeteer explains that sandboxing helps protect the host from untrusted web content and strongly discourages the routine use of --no-sandbox. That is especially important for a screenshot service that accepts URLs from users: a target page is untrusted input, not just an image source. Restrict which URLs and network destinations jobs can access, limit CPU, memory and execution time, and avoid exposing server credentials to the browser process.

Rank #3
Synology DS225+ Private Cloud Media Server - Stream, Back Up Photos & Share Files, Intel CPU for Hardware Transcoding (2-Bay Diskless NAS)
  • Your Personal Streaming Server - Build your own Netflix-style media library and stream 4K movies, shows and photos to any device without monthly fees
  • Create Your Own Cloud - Store your entire photo, video and music collection; access from anywhere with fast 282 MB/s transfer speeds
  • Creator-Grade Backup Solution - Protect your irreplaceable content with automated backups to cloud services, external drives and remote NAS
  • Multi-Layered Data Protection - Combine RAID redundancy, automated backups and snapshot technology to prevent data loss from any cause
  • Smart Home Surveillance - Support up to 30 IP cameras with AI detection, instant alerts and secure remote monitoring

Run Puppeteer in Docker if you need a reproducible image

Puppeteer publishes a Docker image containing Chrome for Testing and its required dependencies. Its documented sandbox invocation uses --cap-add=SYS_ADMIN and --init:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
docker run --init --cap-add=SYS_ADMIN 
  --rm -i ghcr.io/puppeteer/puppeteer:latest

Use the image and invocation documented for the Puppeteer version you deploy; do not assume a floating latest tag is a fixed production version. In containers with restricted filesystem access, ensure the browser profile, cache and temporary paths are writable. The official Docker guide documents the image and sandbox requirements.

Choose a low-cost Indian VPS by workload, not headline price

There is no tested minimum RAM, screenshot throughput, latency figure or universally cheapest Indian provider for this workload. A simple page and a long, script-heavy page do not place the same demands on CPU, memory, disk or transfer. Compare the current plan specifications against your intended pages and job volume, then test representative captures before committing.

What to compare Why it matters
Monthly price and billing terms Prices and plan bundles can change; check the live regional offer rather than relying on an old comparison.
CPU and RAM Each browser process consumes resources, and simultaneous jobs compete for them. No minimum size or concurrency level is established for every workload.
Disk and transfer allowance The browser download is substantial, and screenshots, temporary browser files and page assets need storage and network capacity.
India region and networking Check whether the provider offers a location that suits your users and target sites, plus any region-specific transfer limits.
OS, architecture and setup effort Confirm compatibility with Puppeteer’s supported Linux/browser combination and account for the work of maintaining system dependencies.
Scaling and operational controls Consider whether you can add capacity and manage job concurrency, timeouts and resource limits as demand changes.

DigitalOcean describes Droplets as Linux VPS servers and lists a Bangalore datacenter. AWS Lightsail publishes bundled Linux/Unix plans; its transfer allowances can differ for India regions from standard bundle figures. These pages establish provider options, not a benchmark or proof that a particular low-cost plan will handle your pages at a given rate. Review their live plan and regional terms before choosing.

Improve throughput and reliability

Start with one job at a time and observe the server under the actual pages you need to capture. Increase concurrency gradually while monitoring memory, CPU, disk space and failures. A browser-per-job design is straightforward, but opening many browsers at once can exhaust a small server; reuse or queueing designs can improve resource control, but require careful isolation and lifecycle management.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Set navigation timeouts and close the browser in a finally block so failed pages do not leave browser processes behind.
  • Use a selector-based readiness condition for pages whose meaningful content appears after the initial network activity.
  • Write outputs to a known writable directory and enforce a retention policy for screenshots and temporary files.
  • Log the target, duration, navigation outcome and capture error without recording secrets such as authorization headers or cookies.
  • Test representative pages at the intended concurrency. No provider-specific performance results or sizing guarantee are available for this workflow.

Troubleshoot common failures

Symptom Likely cause What to do
Browser executable not found Install scripts were blocked or Puppeteer’s matched browser was not downloaded. Check the install output and Puppeteer’s browser cache; allow the supported install step to run or follow the official installation instructions for your deployment.
Chrome exits immediately or reports missing libraries Required Linux shared libraries or fonts are absent. Follow the current Puppeteer troubleshooting instructions for your distro and inspect unresolved shared libraries on the browser executable.
Permission denied writing profile, cache or screenshot The service user or container cannot write to the configured path. Choose writable profile, cache, temporary and output locations, then check ownership and container filesystem restrictions.
Sandbox-related launch failure The environment does not permit Chrome’s sandbox configuration. Prefer configuring the sandbox and container permissions as documented. Do not make --no-sandbox the default workaround, especially when visiting arbitrary URLs.
Navigation times out The site is slow, blocked, or keeps connections active beyond the timeout. Check network access and the target response; tune the timeout to the workload, and use a selector or bounded wait when network-idle is unsuitable.
Screenshot misses images or dynamic content Content loaded after the chosen readiness condition, or below-the-fold assets were lazy-loaded. Wait for a page-specific ready selector; scroll or otherwise trigger lazy content before capture if required by the target page.
Server runs out of memory or becomes slow Too many simultaneous browser jobs or resource-heavy pages. Reduce concurrency, impose job limits, monitor resource use and test a larger plan against your actual workload before scaling.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If you would rather not install and maintain Chrome on a VPS, ScreenshotNeo provides a website screenshot API. One GET request returns an image or PDF. Its API can accept consent banners as a visitor and remove more than 60 known consent platforms, newsletter popups and chat widgets before capture; those steps can be turned off. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers say which outcome occurred. It also offers an MCP server for AI agents, with the tools take_screenshot, get_page_info and capture_pdf.

cURL example, adapted to the requested target URL; see the ScreenshotNeo API documentation for setup and options:

Best Value
Rack Mount Bracket for Ubiquiti Unifi Cloud Gateway UCG Max and Ultra, 1U 10-inch, Compatible with UCG-Ultra & UCG-Max (White)
  • COMPATIBILITY: Specially designed to mount Ubiquiti UniFi Cloud Gateway models UCG-Ultra and UCG-Max securely in place
  • RACK SPECIFICATIONS: Standard 1U height rack mount bracket engineered for 10-inch rack installations, offering efficient space utilization
  • MOUNTING SOLUTION: Provides stable and secure placement for your UniFi Cloud Gateway UCG Max or UCG Ultra device in server room or network cabinet setups
  • PACKAGE CONTENTS: Includes one (1x) 1U 10-inch rack mount bracket specifically designed for UniFi UCG Ultra & UCG Max Gateway installations
  • INSTALLATION: Purpose-built bracket ensures proper device positioning and reliable mounting in standard 10-inch rack environments
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

ScreenshotNeo’s free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Sign up for free.

Frequently Asked Questions

Can I use a URL from a user directly in a screenshot service?

Treat it as untrusted input: validate schemes, restrict network destinations and resources, and keep browser sandboxing enabled where possible.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

Does Puppeteer guarantee a screenshot after network idle?

No. Network idleness is a navigation condition, not proof that every delayed, animated or lazy-loaded element is ready; wait for a meaningful page-specific condition when needed.

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
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

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.