To run Selenium tests on a Linux VPS, install Python and Selenium, provide a supported Chrome or Chrome for Testing browser, start Chrome in headless mode, and create a webdriver.Chrome() session. In current Selenium releases, Selenium Manager normally finds or downloads a compatible ChromeDriver automatically, so a separately downloaded driver is optional unless you need strict version pinning, offline operation, or a custom executable path.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
The reliable deployment pattern is: isolate Selenium in a virtual environment, verify the VPS architecture and browser libraries, run a small smoke test, then add logging, version controls, and resource limits before putting the worker into CI.
As an Amazon Associate I earn from qualifying purchases.
Free tools Windows power users keep installed
One-click scans. No signup required.
What ChromeDriver does in a Selenium setup
ChromeDriver is a separate executable that Selenium WebDriver uses to control Chrome. Your Python test sends WebDriver commands to Selenium; Selenium communicates with ChromeDriver; ChromeDriver starts and controls a Chrome process. The browser receives capabilities through Selenium’s ChromeOptions object, which is the interface for headless mode, custom binary paths, proxy settings, and other launch arguments.
A VPS usually has no graphical desktop session. That is why the browser must run headlessly: Chrome renders pages without opening a visible window, while your test still receives titles, elements, screenshots, cookies, and other WebDriver results.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
Selenium Manager is included with Selenium releases starting with version 4.6. When you do not supply a driver, it detects the browser, resolves a compatible driver, downloads it when necessary, and stores it in a local cache. This is the default path for a new installation, not a separate service that you must install.
Requirements before you connect to the VPS
Confirm these items before debugging Python code. Most failures that look like Selenium bugs are environmental.
- A Linux VPS with an architecture supported by the Chrome and Selenium combination you intend to use. Linux x64 has the broadest support. Newer Linux arm64 combinations have browser-version limits, so verify support before selecting an arm64 image.
- Enough memory for the browser, your test process, and any parallel sessions. A single lightweight smoke test and a large parallel suite have very different requirements; size the machine for the peak number of simultaneous Chrome processes.
- Python 3 and the
venvmodule, or an equivalent isolated-environment mechanism. - A supported Chrome or Chrome for Testing build, unless you intentionally allow Selenium Manager to obtain a managed browser.
- Outbound network access if Selenium Manager must discover or download a browser or driver. A firewall, proxy, or restricted CI network can prevent that step.
- Permission for the account running the test to execute both the browser and driver and to write Selenium Manager’s cache.
Do not assume that a package installed for the root account is available to an unprivileged CI account. The executable, browser binary, cache directory, and temporary files must all be usable by the same account that launches the test.
Selenium Manager or a manually pinned ChromeDriver?
Both approaches are valid. Choose based on how much control your deployment needs rather than downloading a driver by habit.
| Approach | How it works | Best fit | Trade-offs |
|---|---|---|---|
| Selenium Manager | Call webdriver.Chrome() without a driver path. Selenium detects the browser, resolves a compatible driver, downloads it when needed, and caches it locally. |
Developer machines, disposable VPS jobs, and teams that want minimal setup. | Initial runs may need outbound access; automatic updates can change the resolved artifact unless versions are controlled. |
| Manual driver pinning | Install a known ChromeDriver executable and pass its path through a Selenium Service object. |
Reproducible CI, offline networks, regulated environments, and carefully tested browser images. | You must update the browser and driver together and maintain executable paths and permissions. |
| Managed browser plus Selenium Manager | Allow Selenium Manager to obtain and use a managed browser instead of relying on a vendor-installed browser. | Isolated workers that need a controlled browser artifact. | Downloads require network access unless artifacts are pre-cached; storage and cache ownership must be managed. |
| Vendor-installed Chrome | Install Chrome or Chrome for Testing in the VPS image and let Selenium Manager resolve its driver, or supply a pinned driver. | Long-lived VPS images and teams that already manage OS packages. | OS image updates can change the browser independently of your Python environment. |
Selenium Manager supports settings for browser and driver versions, mirrors, proxies, offline mode, browser paths, driver paths, cache location, and timeouts. Those controls let you keep automatic discovery while making the resulting environment reproducible.
Step 1: Create an isolated Python environment
Log in as the account that will actually run the tests. On a Debian- or Ubuntu-style image, install Python and virtual-environment support using the distribution’s package manager, then create a project directory:
mkdir -p ~/selenium-vps-test
cd ~/selenium-vps-test
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
pip install -U selenium
The activation command changes the shell’s python and pip to the copies inside .venv. In automation, call the absolute paths, such as ~/selenium-vps-test/.venv/bin/python, so a non-interactive shell does not accidentally use the system interpreter.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
For repeatable deployments, record the Selenium version after testing it with your selected browser. Pin that version in your deployment requirements rather than allowing an unplanned upgrade during every worker build.
Step 2: Provide Chrome or Chrome for Testing
You have two practical choices:
Use a browser installed in the VPS image
Install a supported Chrome or Chrome for Testing build through your normal image or package-management process. Confirm that the binary is executable by the test account and discoverable in the environment. If the browser is installed in a nonstandard location, configure its path in ChromeOptions or through Selenium Manager’s browser-path setting.
Let Selenium Manager obtain a managed browser
This keeps the browser artifact under Selenium Manager’s control. It is convenient for disposable workers, but the first run needs access to the vendor endpoints used for discovery and downloads. In an offline environment, pre-populate the cache or provide an explicit browser and driver path instead.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Do not install several unrelated Chrome builds and hope Selenium chooses the intended one. Keep one clearly identified browser per worker image, or set the browser path explicitly and verify the resolved version in your logs.
Step 3: Write a headless smoke test
Create smoke.py with the smallest test that proves browser startup, navigation, and cleanup:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://example.com")
print(driver.title)
finally:
driver.quit()
Run it from the activated environment:
python smoke.py
A successful run prints the page title and exits without leaving a Chrome process behind. The finally block matters: it calls quit() even when navigation or an assertion fails, preventing abandoned browser processes from consuming the VPS over time.
The current Selenium Python API uses webdriver.Chrome() and Selenium Manager automatically when no driver is supplied. You therefore do not need to construct a driver path for the normal case.
Recommended Free Tools
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
Step 4: Add options only when the VPS needs them
Start with --headless and add flags only to address a demonstrated environment requirement. Every additional flag changes Chrome’s security or rendering behavior and can hide a real configuration problem.
- Headless operation:
options.add_argument("--headless")is the essential setting on a VPS without a graphical display. - Custom browser binary: set the ChromeOptions binary location when Chrome is not discoverable in the normal path.
- Proxy: configure the browser’s proxy as required by your network, and configure Selenium Manager separately when its discovery or download traffic must traverse a proxy.
- Logging: retain Selenium and ChromeDriver output in CI so a failed session includes the resolved browser, driver, and launch error.
Avoid copying large collections of flags from unrelated Docker examples. In particular, do not disable security controls merely because a blog post used those switches. If a test needs a special flag, document the reason and scope it to that worker.
Step 5: Use a manually pinned driver when reproducibility requires it
When your browser image and test suite must remain identical across runs, install a tested ChromeDriver executable and pass it through Selenium’s Service class:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
options = Options()
options.add_argument("--headless")
service = Service("/absolute/path/to/chromedriver")
driver = webdriver.Chrome(service=service, options=options)
try:
driver.get("https://example.com")
print(driver.title)
finally:
driver.quit()
Use an absolute path owned by, and executable by, the account running the test. Pin the browser image and driver artifact as one tested pair; pinning only Selenium’s Python package does not freeze the browser.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →If you previously supplied a stale driver path, remove it before returning to Selenium Manager. A wrong manual path takes precedence over automatic resolution and can produce a misleading version-mismatch error.
Where Selenium Manager keeps artifacts
By default, Selenium Manager stores downloaded drivers in ~/.cache/selenium. The cache belongs to the user who ran the command. A driver downloaded as root may be inaccessible to a CI user, while a cache on an ephemeral disk will be rebuilt on every worker.
For a long-lived worker, decide whether to persist that cache between jobs. For an ephemeral worker, allow the first job to download the artifact and capture the resulting logs. In a restricted network, configure offline mode and a pre-populated cache, or provide explicit browser and driver paths.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Keep the cache location, browser path, driver path, proxy, and timeout settings in the worker’s documented configuration. This makes a replacement VPS behave like the original instead of depending on an unrecorded home-directory state.
Architecture and operating-system compatibility
Linux x64
x64 Linux is the least surprising choice for Chrome-based automation because browser and driver builds are widely available. It is still necessary to match the browser, driver, Selenium release, and Linux libraries in the image.
Linux arm64
Selenium documents newer Linux arm64 support with browser-version limits. Confirm that the exact browser build you need exists for arm64 before provisioning the VPS. If it does not, use a supported x64 worker or install a compatible browser and driver manually with explicit paths.
Unsupported or unusual images
On minimal distributions, the browser may start only after required shared libraries are added. Read the exact missing-library message rather than installing a broad, unrelated package set. Selenium documentation gives libatk-bridge2.0-0 as an example of a library that may be required when Chrome for Testing cannot load.
Running tests in one-off jobs versus a persistent CI worker
| Pattern | Recommended setup | Operational concern |
|---|---|---|
| One-off VPS session | Use a virtual environment, headless mode, Selenium Manager, and a smoke test that always calls quit(). |
Expect a first-run download and ensure the job has outbound access. |
| Long-running CI worker | Build a known browser image, pin Selenium and browser versions, persist or pre-populate the cache, and collect logs. | Clean up every session and watch memory, temporary files, and abandoned Chrome processes. |
| Parallel test worker | Start with one session, then increase concurrency while observing memory and process limits. | Each session consumes browser resources; an undersized VPS can crash intermittently. |
For any pattern, make the smoke test a deployment gate. It catches a broken browser image before a full suite produces hundreds of less useful failures.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshooting ChromeDriver failures on a Linux VPS
“Driver not found” or a version mismatch
- Check that Chrome or Chrome for Testing is installed and discoverable by the test account.
- Remove stale
Servicepaths or other manual driver settings if you want Selenium Manager to resolve the driver. - Confirm that the browser and driver are executable by the same account.
- If you require a fixed pair, install the matching driver explicitly and pass its absolute path through
Service. - Inspect Selenium Manager’s logs to see which browser and driver it detected, where it looked, and where it cached the result.
Do not solve a mismatch by downloading a random “latest” driver. The browser and driver must be a compatible pair, and a reproducible worker should update that pair deliberately.
“No display” or session-creation failure
Use ChromeOptions with --headless on a VPS without a graphical session. If headless mode is already enabled, inspect the complete launch error for a missing library, invalid binary path, permissions problem, or unsupported architecture. ChromeDriver’s capabilities documentation is the reference for accepted browser options.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Missing shared library
Read the named library in the error. Install that library through the VPS distribution’s package manager, then rerun the smoke test. For Chrome for Testing, Selenium documentation cites libatk-bridge2.0-0 as one example of a required Linux library. Installing packages without checking the actual error can make the image larger without fixing the failure.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteProxy or firewall failure
Selenium Manager contacts vendor endpoints to discover and download browser artifacts. Permit the required outbound requests, or configure the Selenium Manager proxy setting, including SE_PROXY where appropriate. Remember that the browser’s own proxy configuration and Selenium Manager’s download proxy are separate concerns; a page-loading proxy does not automatically fix a blocked artifact download.
Architecture mismatch
Verify the VPS architecture, browser build, driver build, and Selenium support together. An x64 driver cannot control an arm64 browser installation simply because both are running Linux. On an unsupported arm64 browser version, switch to a supported build or an x64 worker rather than repeatedly changing Python settings.
Permission denied
Check execute permission on the browser and driver, read/write permission on the Selenium Manager cache, and ownership of temporary directories. Avoid mixing root-owned caches with an unprivileged CI account. Run the smoke test under the same user and environment used by the real job.
Intermittent crashes or timeouts
- Check VPS memory while the test is running and reduce parallel sessions if the machine is close to exhaustion.
- Inspect
/dev/shmand other temporary storage used by the browser. - Capture ChromeDriver and Selenium logs for the failing session.
- Confirm that every test path calls
quit(), including assertion and exception paths. - Separate browser-start failures from page-level failures by rerunning the minimal smoke test.
These checks identify common operational causes; no single flag or package fixes every intermittent crash.
Logging and reproducibility checklist
Before adding a full test suite, record enough information to recreate the worker:
- Selenium version and Python version.
- Linux distribution, kernel architecture, and whether the VPS is x64 or arm64.
- Chrome or Chrome for Testing version and how it was installed.
- Whether Selenium Manager or a manual
Servicepath selected the driver. - The Selenium Manager cache path and whether it is persistent.
- Proxy, offline, browser-path, driver-path, and timeout settings.
- ChromeDriver and Selenium logs for failed sessions.
- The number of concurrent browser sessions and the VPS memory available at that concurrency.
Pin the Selenium package and browser artifacts in deployment when reproducibility matters. Keep the smoke test in the image or repository so a new VPS can be validated before production tests run.
A practical decision guide
Choose Selenium Manager by default when
- You are starting a new VPS or disposable CI worker.
- The worker has outbound access for discovery and downloads.
- You want the least manual driver maintenance.
- You can tolerate controlled browser and driver updates.
Choose manual pinning when
- The network is offline or tightly allow-listed.
- A release must reproduce the same browser and driver pair.
- Your organization distributes a prebuilt browser image.
- You need an explicit nonstandard browser or driver location.
Choose x64 over arm64 when
- The required browser version is not available or supported on arm64.
- Your existing test artifacts and images target x64.
- You need the broadest compatibility with third-party browser dependencies.
Whichever route you choose, validate it with the same three operations: start a headless session, open a known URL, and close the session cleanly. Only then expand to authentication, screenshots, parallelism, or a complete regression suite.
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.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.




