Modern web browsing on Windows XP, 98, and 95 — Chromium runs on your Linux server and streams pages to your legacy browser.
Install all required build and runtime libraries. Accept the EULA for ttf-mscorefonts-installer when prompted.
sudo apt install wget cmake make g++ pkg-config libxcb1-dev libx11-dev \ libpoco-dev libjpeg-dev zlib1g-dev libpango1.0-dev libpangoft2-1.0-0 \ ttf-mscorefonts-installer xvfb xauth libatk-bridge2.0-0 libasound2 \ libgbm1 libxi6 libcups2 libnss3 libxcursor1 libxrandr2 libxcomposite1 \ libxss1 libxkbcommon0 libgtk-3-0 libxdamage-dev
git clone https://github.com/ttalvitie/browservice.git cd ~/browservice
Downloads the prebuilt patched Chromium Embedded Framework (~400MB). This avoids compiling Chromium from scratch which requires 200GB disk and many hours.
cd ~/browservice wget https://github.com/ttalvitie/browservice/releases/latest/download/patched_cef_x86_64.tar.bz2
Extracts the CEF tarball and compiles the wrapper library. Takes several minutes.
./setup_cef.sh patched_cef_x86_64.tar.bz2
Compiles Browservice using all available CPU cores. Takes several minutes.
make -j$(nproc) release
Required for Chromium's security sandbox. Must be set as root or Browservice will fail to launch.
sudo chown root:root release/bin/chrome-sandbox && sudo chmod 4755 release/bin/chrome-sandbox
Find your ethernet interface name first, then configure a static IP via netplan. Wired ethernet is required for usable performance.
ip link show
Edit the netplan config. Replace enp4s0 with your interface name and adjust IPs as needed:
sudo nano /etc/netplan/00-installer-config.yaml
sudo netplan apply ip addr show enp4s0
Creates a service so Browservice starts automatically on boot. Adjust the username if your user is not server. Choose quality based on your client CPU.
sudo nano /etc/systemd/system/browservice.service
Slow CPU (Pentium D, P4) — quality 30:
Faster CPU (Core 2 Duo E6700+) — quality 70:
sudo systemctl daemon-reload && sudo systemctl restart browservice. The quality selector widget in the Browservice UI also lets you adjust it live per-window.sudo systemctl daemon-reload sudo systemctl enable browservice sudo systemctl start browservice sudo systemctl status browservice
Open your browser on the legacy machine and go to your server's static IP on port 8080.
http://192.168.1.53:8080
cd ~/browservice git pull wget https://github.com/ttalvitie/browservice/releases/latest/download/patched_cef_x86_64.tar.bz2 ./setup_cef.sh patched_cef_x86_64.tar.bz2 make -j$(nproc) release sudo chown root:root release/bin/chrome-sandbox && sudo chmod 4755 release/bin/chrome-sandbox sudo systemctl restart browservice