A web-based remote browser system that allows users to access websites through a browser running on your server. This helps bypass network restrictions and enhances privacy by isolating the browsing activity from the user's local device.
- Access blocked websites: Requests originate from your server, not the user's network
- Enhanced privacy: Websites see your server's IP, not the user's
- No local installation: Works in any modern browser without plugins or software
- Secure isolation: Browser session runs in an isolated container
- User-friendly interface: Simple URL bar, navigation controls, and session management
The system consists of three main components in a single container:
- Browser environment: Google Chrome running with VNC access
- Proxy service: Node.js application managing the browser session
- Web interface: User-facing UI for interacting with the remote browser
- Podman and podman-compose
- Linux/WSL environment (tested on Fedora WSL)
- Port 3000 open on your firewall (or configure a different port)
-
Make sure you have Podman installed:
# Fedora/RHEL/CentOS sudo dnf install podman -y # Install podman-compose sudo dnf install python3-pip -y pip3 install --user podman-compose # Add pip binaries to your PATH if needed export PATH="$HOME/.local/bin:$PATH"
-
Clone this repository:
git clone https://github.com/yourusername/isolated-browser.git cd isolated-browser -
Build and run the container:
podman-compose -f all-in-one-compose.yml build podman-compose -f all-in-one-compose.yml up -d
-
Access the service at
http://localhost:3000
The all-in-one container includes:
- A Node.js-based Express server providing the web interface
- A virtual X11 display using Xvfb
- Google Chrome running in incognito mode
- x11vnc server to capture the screen
- NoVNC to provide web-based VNC access
When a user opens the service:
- They enter a URL in the landing page
- The system loads Chrome with the requested URL
- The NoVNC interface is displayed, showing the live Chrome session
- The user can browse normally with all traffic going through the server
- Isolation: The browser runs in a container with limited privileges
- Privacy mode: Chrome always runs in incognito mode
- No persistence: Session data is cleared when the container is stopped
- Input validation: All user input is validated before processing
If running in Windows Subsystem for Linux (WSL):
-
Make sure X11 forwarding is set up:
# Install X server on Windows if needed (VcXsrv or Xming) # Set DISPLAY in WSL export DISPLAY=:0
-
Forward ports from Windows to WSL:
# Run in PowerShell as Administrator netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=(wsl hostname -I)
You can modify:
- Session duration: Change the timer in browser.html
- Browser options: Edit the Chrome flags in the Dockerfile
- UI appearance: Modify the CSS in browser.html and index.html
- VNC not connecting: Check if port 6080 is accessible
- Browser not starting: Check container logs with
podman-compose -f all-in-one-compose.yml logs - Navigation issues: The browser is instructed to open URLs via commands; if navigation fails, check the server logs
This project is licensed under the MIT License - see the LICENSE file for details.
This tool is provided for educational and legitimate use cases only. Please respect website terms of service and local laws when using this system.

