Wiki Wiki Web

Web Traffic Tunnels: Bypassing Blocks with Lightweight Proxies

(Sovereign Cloud – Access & Resilience)

Web traffic tunnelling exists because the Internet gives intermediaries structural power to censor, surveil, throttle, or block whatever they dislike — and tunnelling remains the simplest, most battle-tested way an individual can reclaim control over the first hop.

Real use cases for digital nomads and residents of restricted regions:

  • Hotel, co-working, airport, and ferry Wi-Fi routinely block or throttle every known VPN protocol — yet almost never block outbound SSH on port 22.
  • Streaming services, banks, freelance platforms, and ad networks increasingly soft-block or CAPTCHA-bomb commercial VPN and datacenter IPs — your own VPS usually looks like a boring residential connection.
  • When every popular VPN shows 400+ ms latency and jitter during peak hours, a single-user tunnel to a nearby VPS is often 5–10× faster for Zoom, remote desktop, and quick research.
  • VPN providers see everything you do — and you have no realistic way to know what they actually do with that visibility.
  • In polities that implement protocol-aware filtering — whether as permanent policy or during protest crackdowns — high-volume or sustained encrypted traffic on port 22 can trigger throttling, connection resets, or active disruption. Switching to a non-standard port or tunnelling SSH inside HTTPS (e.g., via sslh, stunnel, or obfs4) often restores connectivity.

It's your lightweight, hard-to-block Plan B.

This guide shows you how to enable secure web browsing by tunnelling your traffic through a VPS using an SSH connection and a lightweight HTTP proxy.

What a Forward Proxy Does

A forward proxy sits between your device and the internet. When you configure your browser to use it:

  • Your web requests go to the proxy server
  • The proxy forwards them to the destination websites
  • The content comes back through the proxy to you

To the outside world, your traffic appears to come from the VPS IP address, not your actual location.

Resource Requirements

ItemMinimumTypical for 1–3 users
RAM256 MB512 MB–1 GB
Disk2–5 GB5–10 GB (with cache if using Squid)
Bandwidth500 GB–1 TB/month2–5 TB (generous EU/US plans)
Monthly cost~$3–5~$4–8

Recommended providers: Hetzner (EU), Vultr, Linode, DigitalOcean — any with good connectivity to Asia.

Tinyproxy Setup (Minimal, Memory-Efficient)

Tinyproxy is a lightweight HTTP/HTTPS proxy designed for small footprints. It's ideal for a personal tunnel: simple to configure, uses ~2–5 MB RAM, and does exactly what you need.

1. Install Tinyproxy on Ubuntu/Debian VPS

```bash sudo apt update sudo apt install -y tinyproxy ```

2. Configure for localhost-only access

Edit /etc/tinyproxy/tinyproxy.conf:

```bash sudo nano /etc/tinyproxy/tinyproxy.conf ```

Ensure these lines are present and uncommented:

``` Port 8888 Allow 127.0.0.1 Allow ::1 Listen 127.0.0.1 ConnectPort 80 ConnectPort 443 LogLevel Connect ```

This configuration:

  • Binds the proxy to localhost only (Listen 127.0.0.1) — not accessible from the internet
  • Allows connections only from the VPS itself (Allow 127.0.0.1)
  • Restricts to web traffic only (ConnectPort 80 and 443)

3. Start and enable Tinyproxy

```bash sudo systemctl restart tinyproxy sudo systemctl enable tinyproxy ```

4. Verify the configuration

```bash

From the VPS itself (should work)

curl --proxy http://127.0.0.1:8888 http://ifconfig.me

From your local machine (should fail — this is correct!)

curl --proxy http://:8888 http://ifconfig.me ```

The second command should fail because the proxy is locked to localhost. This is exactly what we want — it ensures only encrypted SSH tunnels can reach it.

Using the Tunnel from Your Local Machine

1. Create an SSH tunnel

From your local terminal:

```bash ssh -L 3128:localhost:8888 user@your-vps-hostname -N ```

This command:

  • -L 3128:localhost:8888 forwards local port 3128 to the VPS's localhost port 8888
  • -N tells SSH not to open a remote shell (just forward ports)
  • Leave this terminal window open while you browse

2. Configure your browser

Chromium/Chrome/Edge (start with this flag): ```bash chromium --proxy-server="localhost:3128" ```

Firefox: Settings → Network Settings → Manual proxy configuration HTTP Proxy: localhost Port: 3128 ✓ Also use this proxy for HTTPS

System-wide (macOS/Linux): ```bash export http_proxy="localhost:3128" export https_proxy="localhost:3128" ```

Android/iOS: Use apps like Proxydroid (Android) or Shadowrocket / Potatso (iOS) to set HTTP proxy per Wi-Fi.

All your browser traffic is now securely tunnelled through the encrypted SSH connection to your VPS.

Alternative: Squid (Feature-Rich, Caching, Ad Filtering)

If you need more than basic proxying — like disk caching to speed up repeated visits, or built-in ad/tracker blocking — Squid is a powerful alternative. The trade-off is higher resource usage.

Squid vs Tinyproxy: Quick Comparison

FeatureTinyproxySquid
RAM footprint~2–5 MB~50–100 MB
Disk cachingNoYes (speeds up repeated visits)
Ad blockingExternal only (via browser extensions)Built-in with ACL lists
ConfigurationMinimal (~10 lines)Moderate (many options)
Multiple usersFine for 1–3Better for 5+
Setup time5 minutes15–20 minutes

When to Choose Squid

  • You want to block ads/trackers at the proxy level for all devices
  • You frequently visit the same sites and want cached pages to load faster
  • You're already running other services on the VPS and have RAM to spare
  • You want access logs and detailed traffic statistics

When Tinyproxy Is Enough

  • You just need to bypass blocks — nothing fancy
  • You're on a low-memory VPS (256–512 MB total)
  • You prefer minimal configuration that "just works"
  • You already use browser-based ad blockers

Squid Setup Summary

For those who want Squid instead, the minimal setup is:

```bash sudo apt install squid -y ```

Edit /etc/squid/squid.conf:

``` http_port 3128 acl home_network src 127.0.0.1 ::1 http_access allow home_network http_access deny all forwarded_for off via off ```

Then use the same SSH tunnel command, just point to port 3128 instead:

```bash ssh -L 3128:localhost:3128 user@your-vps-hostname -N ```

For ad blocking with Squid, see the full Squid guide or community blocklists.

Security Notes

  • SSH encryption: Your traffic is encrypted between your device and the VPS
  • No encryption beyond the VPS: From VPS to destination, traffic is normal HTTP/HTTPS (which is fine for most browsing, as sites themselves use HTTPS)
  • Authentication: Consider setting up SSH keys (not passwords) for the tunnel
  • Keep your VPS updated: Regular sudo apt update && sudo apt upgrade

Pros & Cons of Proxy Tunnels vs Full VPN

AspectSSH + Proxy TunnelWireGuard / OpenVPN
Setup difficultyVery easyEasy–medium
SpeedExcellent (light encryption)Good (heavier encryption)
Covers all trafficWeb/HTTP/HTTPS onlyAll traffic (apps, updates, etc.)
Battery impactVery lowHigher
Blocks ads/trackersBrowser extensions or SquidNo (needs separate DNS)
Hides IP from sitesYesYes
Good for blocked sitesYes — especially when VPNs are blockedYes — but often targeted

Recommendation for Restricted Environments

Use SSH + Tinyproxy when:

  • You need quick access to specific blocked websites
  • Hotel/airport Wi-Fi blocks VPNs but allows SSH (port 22)
  • You want minimal battery drain on a laptop
  • You're comfortable leaving a terminal window open

Use Squid when:

  • You want ad blocking for all devices without browser extensions
  • You have extra RAM on your VPS
  • You'd benefit from caching (repeated visits to same sites)

Use WireGuard when:

  • You need all device traffic protected (email apps, updates, etc.)
  • You're on a trusted network but want full privacy
  • You don't mind higher battery use

Many people run both on the same cheap VPS:

  • Tinyproxy on port 8888 for lightweight browser access via SSH
  • WireGuard for full-device VPN when needed

This keeps your sovereign cloud flexible while solving very real access problems.


Happy tunnelling!