Syntax highlighting of 961bfc9 ~( itnotes/tor)

= Tor =

<<TableOfContents()>>

== Refs ==

https://iplocation.io/
https://iplocation.com/

== HTTP proxy via torproxy ==

https://hub.docker.com/r/dperson/torproxy
https://sccmrookie.blogspot.com/2016/03/tor-country-codes-list.html

Create config file ''torrc'' with list of "exit nodes"

{{{
ExitNodes {ru},{by},{kz},{ua}
StrictNodes 1

}}}

Run torproxy container

{{{
docker run --rm \
  -p 8118:8118 \
  -v /path/to/torrc:/etc/tor/torrc:ro \
  --name torh \
  dperson/torproxy
# --- or without config on localhost
docker run --rm \
  -p 127.0.0.1:8118:8118 \
  --name torh \
  dperson/torproxy

}}}

Check tor configuration

{{{
# --- var 1
curl -Lx http://localhost:8118 http://jsonip.com/
# --- var 2
docker run --rm \
  -e http_proxy=http://torh:8118 \
  -e https_proxy=http://torh:8118 \
  --link torh \
  alpine/httpie http://httpbin.org/get

}}}

Place IP address from response to https://iplocation.com/

Run torproxy in compose

{{{
torproxy:
  container_name: torproxy
  image: dperson/torproxy:latest
  volumes:
    - ./torrc:/etc/tor/torrc:ro
  expose:
    - 1881

someservice:
  # ...
  environment:
    http_proxy: "http://torproxy:8118"
    https_proxy: "http://torproxy:8118"

}}}

== Socks5 proxy ==

https://github.com/ogarcia/docker-tor

torrc

{{{
SOCKSPort 0.0.0.0:9050
DataDirectory /var/lib/tor

}}}

data dir

{{{
mkdir data
chown 100:100 data

}}}

Run container

{{{
# export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080

docker run --rm -d \
  --name=tors \
  -p 9050:9050 \
  -v /path/to/torrc/dir:/etc/tor \
  -v /path/to/data:/var/lib/tor \
  connectical/tor

# --- for devhost
cd
docker run --rm \
  --name=tors \
  -p 9050:9050 \
  -v $(pwd)/tmp/tor/cfg:/etc/tor \
  -v $(pwd)/tmp/tor/data:/var/lib/tor \
  connectical/tor

}}}

Check configuration

{{{
curl -x socks5://localhost:9050 https://jsonip.com/
# --- or
docker run --rm \
  -e http_proxy=socks5://tors:9050 \
  -e https_proxy=socks5://tors:9050 \
  --link tors \
  alpine/httpie http://httpbin.org/get

}}}

== Running custom Tor ==

https://dev.to/nabarun/running-tor-proxy-with-docker-56n9

torrc

{{{
SOCKSPort 0.0.0.0:9050

}}}

Dockerfile

{{{
# set alpine as the base image of the Dockerfile
FROM alpine:latest

# update the package repository and install Tor
RUN apk update && apk add tor

# Copy over the torrc created above and set the owner to `tor`
COPY torrc /etc/tor/torrc
RUN chown -R tor /etc/tor

# Set `tor` as the default user during the container runtime
USER tor

# Set `tor` as the entrypoint for the image
ENTRYPOINT ["tor"]

# Set the default container command
# This can be overridden later when running a container
CMD ["-f", "/etc/tor/torrc"]

}}}

{{{
docker build -t tora .
docker run --rm -d \
    --name tora \
    -p 9050:9050 \
    tora

curl https://check.torproject.org/api/ip
curl --socks5 127.0.0.1:9050 https://check.torproject.org/api/ip

}}}

== Native TOR ==

Config

{{{
sudo vim /etc/tor/torrc

}}}

Sevice

{{{
sudo systemctl status tor

}}}

Logs

{{{
sudo journalctl -b --no-pager -f /usr/bin/tor

}}}