Adds readme. fully working
This commit is contained in:
parent
133b4820d7
commit
4f3d19a71a
|
@ -4,3 +4,4 @@ Dockerfile
|
||||||
.gitignore
|
.gitignore
|
||||||
.drone.yml
|
.drone.yml
|
||||||
Makefile
|
Makefile
|
||||||
|
run.sh
|
|
@ -1,7 +1,9 @@
|
||||||
FROM ubuntu:15.04
|
FROM php:5.4.42-cli
|
||||||
|
|
||||||
VOLUME /var/lib/docker
|
VOLUME /var/lib/docker
|
||||||
|
|
||||||
|
VOLUME /tmp
|
||||||
|
|
||||||
COPY ./install_docker.sh /usr/local/bin/install_docker
|
COPY ./install_docker.sh /usr/local/bin/install_docker
|
||||||
|
|
||||||
RUN chmod +x /usr/local/bin/install_docker
|
RUN chmod +x /usr/local/bin/install_docker
|
||||||
|
@ -10,7 +12,7 @@ RUN bash /usr/local/bin/install_docker
|
||||||
|
|
||||||
COPY docker /usr/bin/docker
|
COPY docker /usr/bin/docker
|
||||||
|
|
||||||
ADD ./dind/wrapdocker /usr/local/bin/wrapdocker
|
COPY ./dind/wrapdocker /usr/local/bin/wrapdocker
|
||||||
|
|
||||||
RUN chmod +x /usr/local/bin/wrapdocker
|
RUN chmod +x /usr/local/bin/wrapdocker
|
||||||
|
|
||||||
|
@ -22,6 +24,8 @@ COPY ./tor-router.sh /usr/local/bin/tor-router
|
||||||
|
|
||||||
COPY ./new_ip.sh /usr/local/bin/new-ip
|
COPY ./new_ip.sh /usr/local/bin/new-ip
|
||||||
|
|
||||||
|
COPY ./haproxy-config.php /opt/haproxy-config.php
|
||||||
|
|
||||||
RUN chmod -v +x /usr/local/bin/stop-tor-router
|
RUN chmod -v +x /usr/local/bin/stop-tor-router
|
||||||
|
|
||||||
RUN chmod -v +x /usr/local/bin/start-tor-router
|
RUN chmod -v +x /usr/local/bin/start-tor-router
|
||||||
|
|
5
Makefile
5
Makefile
|
@ -12,8 +12,5 @@ dind:
|
||||||
docker:
|
docker:
|
||||||
cp -aruv /usr/bin/docker docker
|
cp -aruv /usr/bin/docker docker
|
||||||
|
|
||||||
build: docker all
|
|
||||||
docker build -t znetstar/tor-router:0.0.1 .
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
bash install.sh
|
docker build -t znetstar/tor-router:0.0.1 .
|
11
README.md
Normal file
11
README.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Creates multiple instances of Tor and switches between them in a round-robin fashion.
|
||||||
|
|
||||||
|
Based on Docker, HAProxy and of course Tor
|
||||||
|
|
||||||
|
Run using
|
||||||
|
./run.sh
|
||||||
|
|
||||||
|
Use the enviornment variable TOR_INSTANCES to set how many instances of Tor you'd like to run
|
||||||
|
Use the enviornment variable TOR_PORT to set the port you'd like to connect to. The TOR_PORT variable can also be an ip address and port (TOR_PORT=127.0.0.1:9050)
|
||||||
|
|
||||||
|
By default TOR_INSTANCES is set to 5 and TOR_PORT is set to 0.0.0.0:9050
|
28
haproxy-config.php
Normal file
28
haproxy-config.php
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
global
|
||||||
|
user root
|
||||||
|
group root
|
||||||
|
|
||||||
|
defaults
|
||||||
|
log global
|
||||||
|
mode http
|
||||||
|
option dontlognull
|
||||||
|
timeout connect 5000ms
|
||||||
|
timeout client 50000ms
|
||||||
|
timeout server 50000ms
|
||||||
|
errorfile 400 /usr/local/etc/haproxy/errors/400.http
|
||||||
|
errorfile 403 /usr/local/etc/haproxy/errors/403.http
|
||||||
|
errorfile 408 /usr/local/etc/haproxy/errors/408.http
|
||||||
|
errorfile 500 /usr/local/etc/haproxy/errors/500.http
|
||||||
|
errorfile 502 /usr/local/etc/haproxy/errors/502.http
|
||||||
|
errorfile 503 /usr/local/etc/haproxy/errors/503.http
|
||||||
|
errorfile 504 /usr/local/etc/haproxy/errors/504.http
|
||||||
|
|
||||||
|
listen socks *:<?php echo getenv('TOR_PORT').PHP_EOL; ?>
|
||||||
|
<?php
|
||||||
|
$instances = intval(getenv("TOR_INSTANCES"));
|
||||||
|
|
||||||
|
$current_instance = 0;
|
||||||
|
while( $current_instance < $instances )
|
||||||
|
{ ?> server <?php echo $current_instance; ?> <?php echo getenv('INSTANCE_PREFIX').$current_instance; ?>:9050 check <?php $current_instance++; echo PHP_EOL; } ?>
|
||||||
|
mode tcp
|
||||||
|
balance roundrobin
|
|
@ -1,7 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
export TOR_INSTANCES=${TOR_INSTANCES:-5}
|
||||||
|
export TOR_PORT=${TOR_PORT:-9050}
|
||||||
|
|
||||||
apt-get update -y
|
apt-get update -y
|
||||||
apt-get install -yqq curl git tar
|
apt-get install -yqq curl git tar btrfs-tools
|
||||||
|
|
||||||
echo 'installing docker...'
|
echo 'installing docker...'
|
||||||
|
|
||||||
|
@ -27,7 +30,7 @@ apt-get install -y lxc-docker-1.5.0
|
||||||
|
|
||||||
# END: docker installer
|
# END: docker installer
|
||||||
|
|
||||||
echo 'running tor-router...'
|
echo 'starting up tor-router...'
|
||||||
/usr/bin/docker run --privileged -v /var/run/docker.sock:/var/run/docker.sock -p 9050:9050 --rm -it znetstar/tor-router:0.0.1
|
/usr/bin/docker run --rm -it -e TOR_INSTANCES=$TOR_INSTANCES -e TOR_PORT=$TOR_PORT --name tor-router --privileged -v /tmp:/tmp -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker znetstar/tor-router:0.0.1
|
||||||
|
|
||||||
exit 0
|
exit 0
|
|
@ -10,12 +10,15 @@ do
|
||||||
index=$[index+1]
|
index=$[index+1]
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "stop haproxy"
|
echo "shutting down haproxy..."
|
||||||
docker rm -f haproxy
|
docker rm -f haproxy
|
||||||
|
|
||||||
echo "closing port"
|
echo 'removing files...'
|
||||||
iptables -A INPUT -p tcp --dport 9050 -j REJECT
|
rm -rf /tmp/haproxy.cfg
|
||||||
|
rm -rf /tmp/tor
|
||||||
|
|
||||||
#sleep 5
|
#sleep 5
|
||||||
|
|
||||||
|
echo 'tor router has shut down'
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
64
startup.sh
64
startup.sh
|
@ -1,10 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
export TEMP_HA_CONFIG=$(mktemp)
|
export TOR_CMD='tor --MaxCircuitDirtiness 60 --RunAsDaemon 0 --CookieAuthentication 0 --controlport 0.0.0.0:9051 --HashedControlPassword 16:4E9480609FC7089F604C83E788481164C25C205288E17D9E5E73EB050B --PidFile tor.pid --SocksPort 0.0.0.0:9050 --DataDirectory /data/tor --ExcludeSingleHopRelays 0 --NewCircuitPeriod 30 --EnforceDistinctSubnets 0 --AllowDotExit 1'
|
||||||
export TOR_CMD='tor --MaxCircuitDirtiness 60 --RunAsDaemon 0 --CookieAuthentication 0 --controlport 0.0.0.0:9051 --HashedControlPassword 16:4E9480609FC7089F604C83E788481164C25C205288E17D9E5E73EB050B --PidFile tor.pid --SocksPort 0.0.0.0:9150 --DataDirectory /data/tor --ExcludeSingleHopRelays 0 --NewCircuitPeriod 30 --EnforceDistinctSubnets 0 --AllowDotExit 1'
|
|
||||||
|
|
||||||
index="0"
|
|
||||||
|
|
||||||
|
index=0
|
||||||
|
instances=''
|
||||||
#docker -d &
|
#docker -d &
|
||||||
|
|
||||||
while [ $index -lt $TOR_INSTANCES ]
|
while [ $index -lt $TOR_INSTANCES ]
|
||||||
|
@ -15,61 +14,22 @@ do
|
||||||
docker rm -f $current_instance
|
docker rm -f $current_instance
|
||||||
echo "instance $current_instance removed"
|
echo "instance $current_instance removed"
|
||||||
|
|
||||||
# control_port=$(cat $2/$current_instance)
|
|
||||||
echo "instnce $current_instance will be assigned control port control port $control_port"
|
|
||||||
|
|
||||||
echo "creating instance $current_instance..."
|
echo "creating instance $current_instance..."
|
||||||
docker run --name $current_instance -d -v /data --restart="on-failure" znetstar/tor $TOR_CMD
|
docker run -d -v /tmp/tor/$current_instance:/data --name $current_instance --restart="on-failure" znetstar/tor $TOR_CMD
|
||||||
echo "instance $current_instance created"
|
echo 'created $current_instance'
|
||||||
|
instances="$instances --link $current_instance:$current_instance"
|
||||||
|
|
||||||
index=$[$index+1]
|
index=$[$index+1]
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "removing haproxy..."
|
echo "removing haproxy..."
|
||||||
docker kill haproxy
|
|
||||||
docker rm -f haproxy
|
docker rm -f haproxy
|
||||||
|
|
||||||
echo "writing config..."
|
echo "writing config..."
|
||||||
cat << EOF > $TEMP_HA_CONFIG
|
php /opt/haproxy-config.php > /tmp/haproxy.cfg
|
||||||
global
|
|
||||||
user root
|
|
||||||
group root
|
|
||||||
|
|
||||||
defaults
|
echo "started tor-router"
|
||||||
log global
|
clear;
|
||||||
mode http
|
docker run --name haproxy -d -p $TOR_PORT:9050 $instances -v /tmp/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:1.5.9
|
||||||
option dontlognull
|
|
||||||
timeout connect 5000ms
|
|
||||||
timeout client 50000ms
|
|
||||||
timeout server 50000ms
|
|
||||||
errorfile 400 /usr/local/etc/haproxy/errors/400.http
|
|
||||||
errorfile 403 /usr/local/etc/haproxy/errors/403.http
|
|
||||||
errorfile 408 /usr/local/etc/haproxy/errors/408.http
|
|
||||||
errorfile 500 /usr/local/etc/haproxy/errors/500.http
|
|
||||||
errorfile 502 /usr/local/etc/haproxy/errors/502.http
|
|
||||||
errorfile 503 /usr/local/etc/haproxy/errors/503.http
|
|
||||||
errorfile 504 /usr/local/etc/haproxy/errors/504.http
|
|
||||||
EOF
|
|
||||||
|
|
||||||
echo "listen socks :$TOR_PORT" > $TEMP_HA_CONFIG
|
|
||||||
|
|
||||||
cat <<-EOF >> $TEMP_HA_CONFIG
|
|
||||||
mode tcp
|
|
||||||
balance roundrobin
|
|
||||||
EOF
|
|
||||||
|
|
||||||
index="0"
|
|
||||||
instances=""
|
|
||||||
while [ $index -lt $TOR_INSTANCES ]
|
|
||||||
do
|
|
||||||
current_instance=$INSTANCE_PREFIX$index
|
|
||||||
instances=$instances" --link $current_instance:$current_instance"
|
|
||||||
cat <<-EOF >> $TEMP_HA_CONFIG
|
|
||||||
server $current_instance $current_instance:9050 check
|
|
||||||
EOF
|
|
||||||
index=$[$index+1]
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "starting haproxy..."
|
|
||||||
docker run -d -p 9050:9050 --name haproxy $instances -v $TEMP_HA_CONFIG:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:1.5.9
|
|
||||||
echo "tor server setup is complete"
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
|
@ -6,8 +6,8 @@ sleep 5
|
||||||
echo 'starting tor router...'
|
echo 'starting tor router...'
|
||||||
/usr/local/bin/start-tor-router
|
/usr/local/bin/start-tor-router
|
||||||
|
|
||||||
docker kill haproxy
|
docker logs -f haproxy &
|
||||||
docker start -a -i haproxy
|
docker wait haproxy
|
||||||
|
|
||||||
echo 'stopping tor router...'
|
echo 'stopping tor router...'
|
||||||
/usr/local/bin/stop-tor-router
|
/usr/local/bin/stop-tor-router
|
||||||
|
|
Loading…
Reference in a new issue