{"id":13579867,"url":"https://github.com/zet4/alpine-tor","last_synced_at":"2025-09-02T06:44:33.182Z","repository":{"id":48353280,"uuid":"62998051","full_name":"zet4/alpine-tor","owner":"zet4","description":"Just a simple rotating tor pool with haproxy load balancer. (with opt-in privoxy support)","archived":false,"fork":false,"pushed_at":"2021-07-30T13:03:16.000Z","size":14,"stargazers_count":108,"open_issues_count":7,"forks_count":47,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-05T23:32:47.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zet4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-10T12:41:18.000Z","updated_at":"2024-01-03T08:19:12.000Z","dependencies_parsed_at":"2022-08-26T04:43:43.807Z","dependency_job_id":null,"html_url":"https://github.com/zet4/alpine-tor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zet4/alpine-tor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zet4%2Falpine-tor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zet4%2Falpine-tor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zet4%2Falpine-tor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zet4%2Falpine-tor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zet4","download_url":"https://codeload.github.com/zet4/alpine-tor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zet4%2Falpine-tor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273244301,"owners_count":25070959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T15:01:44.176Z","updated_at":"2025-09-02T06:44:33.118Z","avatar_url":"https://github.com/zet4.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"alpine-tor\n==================\n\n```\n               Docker Container\n               -------------------------------------\n               (Optional)           \u003c-\u003e Tor Proxy 1\nClient \u003c----\u003e   Privoxy \u003c-\u003e HAproxy \u003c-\u003e Tor Proxy 2\n                                    \u003c-\u003e Tor Proxy n\n```\n\nParents\n-------\n * [rdsubhas/docker-tor-privoxy-alpine](https://github.com/rdsubhas/docker-tor-privoxy-alpine)\n * [Negashev/docker-haproxy-tor](https://github.com/Negashev/docker-haproxy-tor)\n   * [marcelmaatkamp/docker-alpine-tor](https://github.com/marcelmaatkamp/docker-alpine-tor)\n   * [mattes/rotating-proxy](https://github.com/mattes/rotating-proxy)\n\n__Why:__ Lots of IP addresses. One single endpoint for your client.\nLoad-balancing by HAproxy.\n\nOptionaly adds support for [Privoxy](https://www.privoxy.org/) using\n`-e privoxy=1`, useful for http (default `8118`, changable via\n`-e privoxy_port=\u003cport\u003e`) proxy forward and ad removal.\n\nEnvironment Variables\n-----\n * `tors` - Integer, number of tor instances to run. (Default: 20)\n * `new_circuit_period` - Integer, NewCircuitPeriod parameter value in seconds.\n   (Default: 2 minutes)\n * `max_circuit_dirtiness` - Integer, MaxCircuitDirtiness parameter value in\n   seconds. (Default: 10 minutes)\n * `circuit_build_timeout` - Integer, CircuitBuildTimeout parameter value in\n   seconds. (Default: 60 seconds)\n * `privoxy` - Boolean, whatever to run insance of privoxy in front of haproxy.\n * `privoxy_port` - Integer, port for privoxy. (Default: 8118)\n * `privoxy_permit` - Space-separated list of source addresses for permit-access option. (Default: Unset)\n * `privoxy_deny` - Space-separated list of source addresses for deny-access option. (Default: Unset)\n * `haproxy_port` - Integer, port for haproxy. (Default: 5566)\n * `haproxy_stats` - Integer, port for haproxy monitor. (Default: 2090)\n * `haproxy_login` and `haproxy_pass` - BasicAuth config for haproxy monitor.\n   (Default: `admin` in both variables)\n * `test_url` - URL for health check throught Tor proxy.\n   (Default: http://google.com)\n * `test_status` - Integer, HTTP status code for `test_url` in working case.\n   (Default: 302)\n\nUsage\n-----\n\n```bash\n# build docker container\ndocker build -t zeta0/alpine-tor:latest .\n\n# ... or pull docker container\ndocker pull zeta0/alpine-tor:latest\n\n# start docker container\ndocker run -d -p 5566:5566 -p 2090:2090 -e tors=25 zeta0/alpine-tor\n\n# start docker with privoxy enabled and exposed\ndocker run -d -p 8118:8118 -p 2090:2090 -e tors=25 -e privoxy=1 zeta0/alpine-tor\n\n# test with ...\ncurl --socks5 localhost:5566 http://httpbin.org/ip\n\n# or if privoxy enabled ...\ncurl --proxy localhost:8118 http://httpbin.org/ip\n\n# or to run chromium with your new found proxy\nchromium --proxy-server=\"http://localhost:8118\" \\\n    --host-resolver-rules=\"MAP * 0.0.0.0 , EXCLUDE localhost\"\n\n# monitor\n# auth login:admin\n# auth pass:admin\nhttp://localhost:2090 or http://admin:admin@localhost:2090\n\n# start docket container with new auth\ndocker run -d -p 5566:5566 -p 2090:2090 -e haproxy_login=MySecureLogin \\\n    -e haproxy_pass=MySecurePassword zeta0/alpine-tor\n```\n\nFurther Readings\n----------------\n\n * [Tor Manual](https://www.torproject.org/docs/tor-manual.html.en)\n * [Tor Control](https://www.thesprawl.org/research/tor-control-protocol/)\n * [HAProxy Manual](http://cbonte.github.io/haproxy-dconv/index.html)\n * [Privoxy Manual](https://www.privoxy.org/user-manual/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzet4%2Falpine-tor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzet4%2Falpine-tor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzet4%2Falpine-tor/lists"}