# torrc for the Mangalord crawler. # # Mounted into the dockurr/tor container at /etc/tor/torrc. The # crawler talks to this daemon over the internal compose network only: # `expose:` on the tor service surfaces 9050/9051 to sibling # containers, never to the host. # SOCKS5 proxy that reqwest and Chromium use. IsolateDestAddr + # IsolateDestPort means each new (destination IP, port) draws a fresh # circuit — so a SIGNAL NEWNYM picks up promptly on the next # navigation instead of having to wait for an existing dirty circuit # to age out. SOCKSPort 0.0.0.0:9050 IsolateDestAddr IsolateDestPort # Control port for SIGNAL NEWNYM. We rely on the dockurr/tor # entrypoint to inject `HashedControlPassword ` from its # PASSWORD env var (see docker-compose.yml `tor.environment.PASSWORD`) # via a higher-priority --defaults-torrc. We just need to declare the # port itself here. ControlPort 0.0.0.0:9051 # Keep circuits dirty for a while so a single chapter (which serial- # fetches all its images through the same SOCKS endpoint) finishes on # one circuit rather than mid-circuit-rotating in a way that looks like # anti-bot evasion to the target. NEWNYM still forces a fresh circuit # immediately when we want one — this is just the idle-rotation knob. MaxCircuitDirtiness 600 # Drop privileges to the image's `tor` user after binding ports. # Required because /var/lib/tor (the image's DataDirectory volume) # is owned by tor:tor and tor refuses to use a data dir it doesn't # own. Our entrypoint runs as root only so it can call # `tor --hash-password` and write /tmp/torrc. User tor # Data + logs. DataDirectory /var/lib/tor Log notice stdout