Running the Go proxy
Stand up the TLS-stripping Go proxy that lets the browser reach HTTPS sites from inside Mac OS 9.
MacSurf Proxy is a single binary. It listens for plain HTTP proxy requests, fetches upstream via HTTPS, and returns plain HTTP. No config files, no dependencies.
macsurf-proxy [--port 8765] [--auth user:password]
Default port is 8765. Auth is optional — if set, clients must send Proxy-Authorization: Basic headers.
1. Local Network (No Install)
Build and run directly. Your Mac connects over LAN.
cd proxy/
go build -o macsurf-proxy .
./macsurf-proxy --port 8765
Or with auth:
./macsurf-proxy --port 8765 --auth myuser:mypassword
Find your machine's LAN IP (ip addr or ifconfig). On the Mac, configure the proxy as http://<your-lan-ip>:8765. That's it.
If you have a firewall, open port 8765:
sudo ufw allow 8765/tcp
2. VPS with systemd (Ubuntu/Debian)
Build the binary
cd proxy/
CGO_ENABLED=0 go build -o macsurf-proxy .
Create the user
sudo useradd --system --no-create-home --shell /usr/sbin/nologin macsurf
Install the binary
sudo cp macsurf-proxy /usr/local/bin/
sudo chmod 755 /usr/local/bin/macsurf-proxy
Write the environment file
sudo mkdir -p /etc/macsurf-proxy
sudo tee /etc/macsurf-proxy/env > /dev/null <<'EOF'
MACSURF_PROXY_ARGS=--port 8765 --auth myuser:mypassword
EOF
sudo chmod 600 /etc/macsurf-proxy/env
Change myuser:mypassword to real credentials. If you don't want auth, use:
MACSURF_PROXY_ARGS=--port 8765
Install the service
sudo cp macsurf-proxy.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now macsurf-proxy
Verify
sudo systemctl status macsurf-proxy
journalctl -u macsurf-proxy -f
curl -x http://myuser:mypassword@localhost:8765 http://example.com
Firewall
sudo ufw allow 8765/tcp
For production, put this behind a VPN or restrict source IPs. An open proxy on the internet will get abused.
3. Docker
Build
cd proxy/
docker build -t macsurf-proxy .
Run
docker run -d --name macsurf-proxy -p 8765:8765 macsurf-proxy --port 8765 --auth myuser:mypassword
Without auth:
docker run -d --name macsurf-proxy -p 8765:8765 macsurf-proxy
Verify
curl -x http://myuser:mypassword@localhost:8765 http://example.com
Logs
docker logs -f macsurf-proxy
4. Classilla Configuration (Mac OS 9)
Classilla is a maintained Mozilla fork for Mac OS 9 that supports HTTP proxies. Use it today to validate MacSurf Proxy before MacSurf Browser exists.
Step by step
- Open Classilla
- Go to Edit > Preferences
- In the left sidebar, expand Advanced and select Proxies
- Select Manual proxy configuration
- In the HTTP Proxy field, enter your proxy machine's IP address (e.g.
192.168.1.50) - In the Port field next to it, enter
8765 - Check Use this proxy server for all protocols
- Leave No Proxy for set to
localhost, 127.0.0.1 - Click OK
If you enabled auth on the proxy
Classilla supports HTTP Basic proxy auth. On first request, it will prompt for username and password. Enter the credentials you passed to --auth. Check "remember" if offered.
Testing
Browse to http://example.com — this goes through the proxy as plain HTTP and should load immediately.
Browse to https://macintoshgarden.org — Classilla sends a CONNECT request, the proxy tunnels TLS end-to-end. The page should load normally with the lock icon.
If pages don't load, verify:
- The proxy is running and reachable from the Mac (
ping <proxy-ip>from another machine on the same network) - Port 8765 is open on the proxy machine
- The IP and port in Classilla match exactly