Skip to content

Containerized pool of multiple Tor instances with load balancing and HTTP proxy.

License

Notifications You must be signed in to change notification settings

gluttony/torpool

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Pulls Size

torpool

Containerized pool of multiple Tor instances with load balancing and HTTP proxy.

Key features

  • Multiple Tor instances with a single endpoint for the end user
  • Easy configured (IP rotation, country selection of the exit node, etc)
  • Lightweight alpine based Docker image
  • HTTP proxy with Privoxy
  • HTTP/Socks load balancing with HAProxy
  • Does not using root user inside Docker
              +-----------------------------------------------+
              | Docker                                        |
              |                                               |
              |                   +-------+            +----+ |
              |                   |Privoxy|------------|Tor1| |
              |                   +-------+        |   +----+ |
+------+      | +-------+         +-------+        |   +----+ |
|Client|--------|Haproxy|-------- |Privoxy|--------|---|Tor2| |
+------+      | +-------+         +-------+        |   +----+ |
              |     |             +-------+        |   +----+ |
              |     |             |Privoxy|--------|---|Tor3| |
              |     |             +-------+        |   +----+ |
              |     |                              |          |
              |     |                              |          |
              |     +------------------------------+          |
              |                                               |
              +-----------------------------------------------+

Usage

Start 5 Tor instances:

docker run -d -p 9200:9200 -p 9300:9300 u1234x1234/torpool:1.0.3 --Tors=5

HTTP proxy is accessible at port 9300:

curl --proxy localhost:9300 https://ipinfo.io/ip

Socks is accessible at port 9200:

curl --socks5 localhost:9200 https://ipinfo.io/ip

To make Tor instances rotate:

docker run -d -p 9200:9200 -p 9300:9300 u1234x1234/torpool:1.0.3 --MaxCircuitDirtiness 30 --NewCircuitPeriod 30

Use only US exit nodes:

docker run -d -p 9200:9200 -p 9300:9300 u1234x1234/torpool:1.0.3 --ExitNodes {us}

Tor connections through the SOCKS5 proxy

docker run -d -p 9200:9200 -p 9300:9300 u1234x1234/torpool:1.0.3 --Socks5Proxy 192.168.1.100:1080

List of available Tor options

To view HAProxy stats page:

docker run -d -p 9200:9200 -p 9300:9300 -p 9500:9500 u1234x1234/torpool:1.0.3

Then open in browser https://localhost:9500/haproxy_stats and enter HAProxy username and password. The default username is haproxy, password is password, but it can be changed using using the volume mounting:

echo "pss" > pass_file
docker run -d -p 9200:9200 -p 9300:9300 -p 9500:9500 -v "$PWD/pass_file":/run/secrets/haproxy_password u1234x1234/torpool:1.0.3

Expected password location: /run/secrets/haproxy_password, username: /run/secrets/haproxy_username.

Docker-compose example:

version: '3'
services:
  torpool:
    image: u1234x1234/torpool:1.0.3
    command: ['--Tors', '2', '--NewCircuitPeriod', '30', '--MaxCircuitDirtiness', '30']
    container_name: torpool
    ports:
      - "9200:9200"
      - "9300:9300"
      - "9500:9500"

Why

There is a lot of great projects on github, but non of them provides all the options listed above. Some of them:

About

Containerized pool of multiple Tor instances with load balancing and HTTP proxy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.6%
  • Dockerfile 14.4%