A Windows VPS is a common home for browser automation: testing web apps, filling internal forms, generating reports from web dashboards, monitoring pages, or running RPA (robotic process automation) tools that only exist for Windows. It runs 24/7, and keeps the work off your own computer.
Use automation responsibly: only automate sites and accounts you’re authorised to use, follow their terms of service, and don’t use automation for spam, fake engagement, or getting around security measures. See the VPS.DO legal policies.
Choose your tool
| Tool | Language | Notes |
|---|---|---|
| Playwright | Python, Node.js, .NET, Java | Modern, reliable auto-waiting; bundles browsers |
| Selenium | Many languages | Long-established; WebDriver for Chrome, Edge, Firefox |
| Puppeteer | Node.js | Chrome/Chromium focused |
| Power Automate Desktop | Visual (low-code) | Microsoft’s RPA tool, included in Windows 11; may be installed on Windows Server, check licensing |
| UiPath, AutoHotkey | Visual / script | Desktop + web automation |
Set up Playwright (Python) on Windows Server
winget install Python.Python.3.12 # or download from python.org
python -m venv C:\bots\venv
C:\bots\venv\Scripts\Activate.ps1
pip install playwright
playwright install chromium
A minimal script:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://example.com/dashboard")
page.screenshot(path="C:/bots/out/dashboard.png", full_page=True)
browser.close()
See Chocolatey and winget on Windows Server.
Headless vs headed
- Headless (no visible window): lower resource use, and runs without a desktop session. It’s the best choice for scheduled jobs.
- Headed (a visible browser): needed for some RPA tools, debugging, or sites that behave differently. It requires an interactive desktop session.
Keep it running after you close RDP
When you disconnect an RDP session, the session (and its programs) keeps running. When you sign out, everything in it closes. So:
- for headed automation, disconnect (don’t sign out). Avoid session time limits that log off disconnected sessions. See RDP multiple sessions;
- minimised RDP windows can stop rendering on the client side, which breaks some GUI automation (image-based clicks). Use headless mode, or keep the window open;
- for unattended runs after a reboot, configure an automatic logon for a dedicated user (with care), or use headless tasks under Task Scheduler.
Scheduling
Use Task Scheduler for recurring runs:
$action = New-ScheduledTaskAction -Execute "C:\bots\venv\Scripts\python.exe" -Argument "C:\bots\report.py"
$trigger = New-ScheduledTaskTrigger -Daily -At 6:00
Register-ScheduledTask -TaskName "Daily report" -Action $action -Trigger $trigger -User "botuser" -Password "…" -RunLevel Limited
“Run whether user is logged on or not” works for headless jobs. Headed browsers need “Run only when user is logged on”. See Windows scheduled tasks with PowerShell.
Sizing
Each browser instance uses roughly 300 MB–1 GB of RAM, depending on the pages. Windows itself needs 2+ GB.
| Workload | Suggested VPS |
|---|---|
| 1–2 headless browsers, scheduled jobs | 2 vCPU, 4 GB RAM |
| 3–5 concurrent browsers | 4 vCPU, 8 GB RAM |
| Many parallel sessions | 8 vCPU, 16 GB+ RAM, or split across servers |
Windows plans need at least 50 GB of disk on VPS.DO. See Windows VPS.
Reliability tips
- Use explicit waits (Playwright auto-waits), and stable selectors (
data-testid), not brittle XPaths. - Log every run, save screenshots on failure, and alert yourself on errors.
- Clean up: close browsers, and delete temporary profiles and downloads, so disk and memory don’t fill up. See Windows disk cleanup.
- Store credentials in Windows Credential Manager or environment variables, not in scripts.
Linux alternative
Headless Playwright or Selenium runs just as well (and lighter) on a Linux VPS. Use Windows when you need Windows-only apps, Edge with specific policies, or desktop RPA. See web scraping on a VPS.
Quick reference
| Need | Approach |
|---|---|
| Scheduled, no UI | Headless Playwright + Task Scheduler |
| Visible browser / RPA | Disconnected RDP session, no sign-out |
| Install | pip install playwright && playwright install chromium |
| RAM per browser | ~0.3–1 GB |
Related: PowerShell basics and Windows Server performance tuning.