4.3 KiB
Overview
This guide will walk you through using 4get in docker with tor running in another container. This guide covers how to make outgoing and incoming traffic go through tor.
Starting tor
This guide will use luuul/tor
which is a simple image that installs and starts
tor in an alpine container SocksPort set to 0.0.0.0:9050
For additional configuration you can mount your own torrc
file to /etc/tor/torrc
Remember to set SocksPort 0.0.0.0:9050
otherwise communication between containers won't work.
You will see this warning Other people on the Internet might find your computer and use it as an open proxy. Please don't allow this unless you have a good reason.
As long as you don't publish this port (-p or --publish) it shouldn't be accessible to outside world.
Tor always starts a socks5 proxy on port 9050 by default.
Route outgoing requests over tor
create a folder named proxies
and create a file in that folder named onion.txt
this folder will be mounted to /var/www/html/4get/data/proxies/
directory structure
proxies/
onion.txt
put the following content into onion.txt
More information about this file available in proxy documentation.
# proxies/onion.txt
# Specify proxies by following this format:
# <protocol>:<address>:<port>:<username>:<password>
#
# Examples:
# https:1.3.3.7:6969:abcd:efg
# socks4:1.2.3.4:8080::
# raw_ip::::
#
# Available protocols:
# raw_ip, http, https, socks4, socks5, socks4a, socks5_hostname
# Local tor proxy
# Note: "tor" is the service name of luuul/tor in docker-compose.yaml
socks5:tor:9050::
create a file named docker-compose.yaml
with the following content
This docker compose file will run luuul/tor
and luuul/4get
and configure 4get to load proxies/onion.txt
for outgoing requests.
# docker-compose.yaml
version: "3.7"
services:
tor:
image: luuul/tor:latest
restart: unless-stopped
# Warning: Do not publish port 9050
fourget:
image: luuul/4get:latest
restart: unless-stopped
environment:
- FOURGET_PROTO=http
- FOURGET_SERVER_NAME=4get.ca
- FOURGET_PROXY_DDG="onion" # loads proxies/onion.txt
- FOURGET_PROXY_BRAVE="onion"
- FOURGET_PROXY_FB="onion"
- FOURGET_PROXY_GOOGLE="onion"
- FOURGET_PROXY_QWANT="onion"
- FOURGET_PROXY_MARGINALIA="onion"
- FOURGET_PROXY_MOJEEK="onion"
- FOURGET_PROXY_SC="onion"
- FOURGET_PROXY_SPOTIFY="onion"
- FOURGET_PROXY_WIBY="onion"
- FOURGET_PROXY_CURLIE="onion"
- FOURGET_PROXY_YT="onion"
- FOURGET_PROXY_YEP="onion"
- FOURGET_PROXY_PINTEREST="onion"
- FOURGET_PROXY_SEZNAM="onion"
- FOURGET_PROXY_NAVER="onion"
- FOURGET_PROXY_GREPPR="onion"
- FOURGET_PROXY_CROWDVIEW="onion"
- FOURGET_PROXY_MWMBL="onion"
- FOURGET_PROXY_FTM="onion"
- FOURGET_PROXY_IMGUR="onion"
- FOURGET_PROXY_YANDEX_W="onion"
- FOURGET_PROXY_YANDEX_I="onion"
- FOURGET_PROXY_YANDEX_V="onion"
ports:
- "80:80"
depends_on:
- tor
volumes:
- ./proxies/:/var/www/html/4get/data/proxies/
You can now start both containers with docker compose up -d
Route incoming requests over tor
This will create a hidden service that will be accessible via an onion link.
- create a file named
torrc
with the following content
# torrc
User root
DataDirectory /var/lib/tor
HiddenServiceDir /var/lib/tor/4get/
HiddenServicePort 80 fourget:80
- create a folder named "4get" which will contain your hidden service keys.
Make sure it has permission 600
otherwise you will get an error
Permissions on directory /var/lib/tor/4get/ are too permissive.
- create a
docker-compose.yaml
with the following content
# docker-compose.yaml
version: "3.7"
services:
fourget:
image: luuul/4get:latest
restart: unless-stopped
environment:
- FOURGET_PROTO=http
- FOURGET_SERVER_NAME=4get.ca
depends_on:
- tor
tor:
image: luuul/tor:latest
restart: unless-stopped
volumes:
- ./torrc:/etc/tor/torrc
- ./4get:/var/lib/tor/4get
-
You can now start both with
docker compose up -d
-
print onion hostname with
docker exec `docker ps -qf ancestor=luuul/tor:latest` sh -c "cat /var/lib/tor/4get/hostname"
or cat ./4get/hostname