A cost-efficient proxy system designed for cruise ships that minimizes satellite internet costs by reusing a single TCP connection for all outbound HTTP/S requests.
Browser/curl → Ship Proxy (8080) → Single TCP → Offshore Proxy (9999) → Internet
- Ship Proxy (Client): Runs on the ship, accepts HTTP proxy connections, queues requests, and forwards them sequentially over a single TCP connection
- Offshore Proxy (Server): Runs remotely, receives requests over TCP, forwards them to target servers, and sends responses back
- Single persistent TCP connection between ship and offshore proxy
- Sequential request processing to ensure reliability
- Support for all HTTP methods (GET, POST, PUT, DELETE, etc.)
- HTTPS support via CONNECT method tunneling
- Automatic reconnection on connection failures
- Docker support with multi-architecture builds
- Works with curl, browsers, and other HTTP clients
- Clone this repository
- Run the entire system:
docker-compose up -d- Test with curl:
# HTTP request
curl -x http://localhost:8080 http://httpforever.com/
# HTTPS request
curl -x http://localhost:8080 https://httpbin.org/get
# POST request
curl -x http://localhost:8080 -X POST -d "test data" http://httpbin.org/postRun the offshore proxy:
docker run -p 9999:9999 your-username/offshore-proxyRun the ship proxy:
docker run -p 8080:8080 -e OFFSHORE_HOST=localhost your-username/ship-proxy- Python 3.8+
- No additional dependencies (uses only standard library)
cd server
python server.pycd client
python client.py --offshore-host=localhost --offshore-port=9999curl -x http://localhost:8080 http://httpforever.com/curl -x http://localhost:8080 https://httpbin.org/get# GET
curl -x http://localhost:8080 http://httpbin.org/get
# POST
curl -x http://localhost:8080 -X POST -d '{"key":"value"}' -H "Content-Type: application/json" http://httpbin.org/post
# PUT
curl -x