From 82879637b6b63344210e095ca8268ab7798ce8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A2ni=20Marques?= Date: Sat, 19 Sep 2026 01:22:33 +0200 Subject: [PATCH] ops: host tor.service SoT drop configs/tor CTR --- configs/tor/Containerfile | 18 -- configs/tor/README.md | 64 ----- configs/tor/container-koopa-tor-relay.service | 28 -- configs/tor/create-container.sh | 39 --- configs/tor/migrate-identity.sh | 39 --- configs/tor/torrc | 16 -- configs/tor/torrc.minimal | 192 ------------- configs/tor/torrc.sample | 257 ------------------ host/tor/README.md | 29 +- 9 files changed, 7 insertions(+), 675 deletions(-) delete mode 100644 configs/tor/Containerfile delete mode 100644 configs/tor/README.md delete mode 100644 configs/tor/container-koopa-tor-relay.service delete mode 100755 configs/tor/create-container.sh delete mode 100755 configs/tor/migrate-identity.sh delete mode 100644 configs/tor/torrc delete mode 100644 configs/tor/torrc.minimal delete mode 100644 configs/tor/torrc.sample diff --git a/configs/tor/Containerfile b/configs/tor/Containerfile deleted file mode 100644 index 0e1fb31..0000000 --- a/configs/tor/Containerfile +++ /dev/null @@ -1,18 +0,0 @@ -# koopa-tor-relay — Tor non-exit relay -# Process is NOT root: debian-tor remapped to uid/gid 1000 for rootless -# podman + host volumes (~/koopa-tor-relay/{data,log} owned by hernani). -# Recreate container with: --user 1000:1000 --userns=keep-id (see README). -FROM docker.io/library/debian:stable-slim -ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update \ - && apt-get install -y --no-install-recommends tor nyx ca-certificates tor-geoipdb \ - && rm -rf /var/lib/apt/lists/* \ - && mkdir -p /var/lib/tor /var/log/tor \ - && groupmod --gid 1000 debian-tor \ - && usermod --uid 1000 --gid 1000 debian-tor \ - && chown -R debian-tor:debian-tor /var/lib/tor /var/log/tor \ - && chmod 700 /var/lib/tor -EXPOSE 8080 9051 -USER debian-tor:debian-tor -ENTRYPOINT ["/usr/bin/tor"] -CMD ["-f", "/etc/tor/torrc", "--runasdaemon", "0"] diff --git a/configs/tor/README.md b/configs/tor/README.md deleted file mode 100644 index 4f618f6..0000000 --- a/configs/tor/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Tor relay — koopa (`KoopaRelay`) - -Live: **podman** container **`koopa-tor-relay`** (rootless hernani, `--network host`). -Host layout: `~/koopa-tor-relay/{torrc,data,log,build}`. -Mirror in this repo: `configs/tor/`. - -| Setting | Value | -|---------|--------| -| Nickname | `KoopaRelay` | -| Fingerprint | `02C7EECCDF7814FBA2DB1CBAED000D06E8A32EE8` | -| ORPort | **8080** (IPv4 + IPv6; VeciGate WAN DNAT → koopa:8080) | -| ControlPort | **127.0.0.1:9051** | -| ExitRelay | **0** (non-exit) | -| SocksPort | **0** | -| MyFamily | `52BB94DDC1292F950CF728708AC48523E018A718` | -| Bandwidth* | 2000 MBytes rate/burst | -| Image | `localhost/koopa-tor-relay:latest` (Debian stable + tor + nyx) | -| Process user | **non-root** `debian-tor` remapped to **uid/gid 1000** (`USER` in image) | -| Rootless note | recreate with `--user 1000:1000 --userns=keep-id` so `~/koopa-tor-relay/data` (hernani) stays writable | - -## Files - -| File | Role | -|------|------| -| `torrc` | Active policy (mounted read-only into container) | -| `Containerfile` | Image build (tor, nyx, tor-geoipdb); **not** root process | -| `create-container.sh` | Recreate container non-root + host net + volume mounts | -| `migrate-identity.sh` | One-shot copy of `/var/lib/tor` → container data (same identity) | -| `container-koopa-tor-relay.service` | systemd --user unit template | -| `torrc.minimal` / `torrc.sample` | Distro templates (reference) | - -## Ops - -```bash -# build image + recreate non-root container (as hernani) -cd ~/koopa-tor-relay/build # or configs/tor mirror -podman build -t localhost/koopa-tor-relay:latest -f Containerfile . -./create-container.sh # or: bash configs/tor/create-container.sh -podman start koopa-tor-relay -systemctl --user enable --now container-koopa-tor-relay.service - -# status -podman ps --filter name=koopa-tor-relay -podman exec koopa-tor-relay id # expect uid=1000(debian-tor) -systemctl --user status container-koopa-tor-relay -ss -lntp | grep -E '8080|9051' -tail -f ~/koopa-tor-relay/log/notices.log - -# monitor -podman exec -it koopa-tor-relay nyx -``` - -### Cutover (host package → container) - -1. `sudo systemctl stop tor && sudo systemctl disable tor` (prefer `mask` so it never returns) -2. `sudo ~/koopa-tor-relay/migrate-identity.sh` (or copy of this script) -3. `podman start koopa-tor-relay` / user unit enable -4. Confirm fingerprint and ORPort reachability - -Do **not** run host `tor.service` and the container at the same time. - -Monitoring helpers: `scripts/monitoring/tor_*.sh`. -Firewall: `configs/firewalld/public-ports.md` (**8080/tcp**). -Router: `../vecigate-admin-log` (WAN :8080 → koopa). diff --git a/configs/tor/container-koopa-tor-relay.service b/configs/tor/container-koopa-tor-relay.service deleted file mode 100644 index 051b56e..0000000 --- a/configs/tor/container-koopa-tor-relay.service +++ /dev/null @@ -1,28 +0,0 @@ -# container-koopa-tor-relay.service -# Install on koopa as hernani: -# mkdir -p ~/.config/systemd/user -# cp configs/tor/container-koopa-tor-relay.service ~/.config/systemd/user/ -# systemctl --user daemon-reload -# systemctl --user enable --now container-koopa-tor-relay.service -# Requires: loginctl enable-linger hernani (root, once) -# -# autogenerated by Podman 5.8.3 (paths are host-specific; regenerate if container id changes) - -[Unit] -Description=Podman container-koopa-tor-relay.service -Documentation=man:podman-generate-systemd(1) -Wants=network-online.target -After=network-online.target -RequiresMountsFor=/run/user/1000/containers - -[Service] -Environment=PODMAN_SYSTEMD_UNIT=%n -Restart=always -TimeoutStopSec=70 -ExecStart=/usr/bin/podman start koopa-tor-relay -ExecStop=/usr/bin/podman stop -t 10 koopa-tor-relay -ExecStopPost=/usr/bin/podman stop -t 10 koopa-tor-relay -Type=forking - -[Install] -WantedBy=default.target diff --git a/configs/tor/create-container.sh b/configs/tor/create-container.sh deleted file mode 100755 index 2f7156a..0000000 --- a/configs/tor/create-container.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Recreate koopa-tor-relay as non-root (uid 1000) under rootless podman keep-id. -# Run as hernani on koopa (not root). Stops/removes existing container first. -set -euo pipefail - -NAME=koopa-tor-relay -IMAGE="${TOR_IMAGE:-localhost/koopa-tor-relay:latest}" -BASE="${KOOPA_TOR_BASE:-$HOME/koopa-tor-relay}" - -if [[ ! -f "$BASE/torrc" ]]; then - echo "ERROR: missing $BASE/torrc" >&2 - exit 1 -fi -mkdir -p "$BASE/data" "$BASE/log" -# Host ownership: hernani (uid 1000) ↔ container debian-tor (uid 1000) via keep-id -chmod 700 "$BASE/data" 2>/dev/null || true - -if podman ps -a --format '{{.Names}}' | grep -qx "$NAME"; then - podman stop "$NAME" 2>/dev/null || true - podman rm "$NAME" -fi - -podman create \ - --name "$NAME" \ - --replace \ - --network host \ - --user 1000:1000 \ - --userns keep-id \ - --restart unless-stopped \ - -v "$BASE/torrc:/etc/tor/torrc:ro" \ - -v "$BASE/data:/var/lib/tor:Z" \ - -v "$BASE/log:/var/log/tor:Z" \ - --label org.hacktivism.service=tor \ - --label org.hacktivism.container=koopa-tor-relay \ - --label org.hacktivism.managed_by=koopa-admin \ - "$IMAGE" - -echo "created $NAME (user 1000:1000, userns=keep-id, host net)" -echo "start: podman start $NAME # or systemctl --user start container-koopa-tor-relay" diff --git a/configs/tor/migrate-identity.sh b/configs/tor/migrate-identity.sh deleted file mode 100755 index 344fddd..0000000 --- a/configs/tor/migrate-identity.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Copy host Tor identity → container data. Works with: sudo ./migrate-identity.sh -set -euo pipefail - -if [[ "$(id -u)" -ne 0 ]]; then - exec sudo -H "$0" "$@" -fi - -OWNER="${SUDO_USER:-hernani}" -if [[ "$OWNER" == root ]]; then OWNER=hernani; fi -BASE="$(getent passwd "$OWNER" | cut -d: -f6)/koopa-tor-relay" -SRC=/var/lib/tor -DST="$BASE/data" - -if [[ ! -d "$BASE" ]]; then - echo "ERROR: missing $BASE" >&2 - exit 1 -fi -if systemctl is-active --quiet tor 2>/dev/null; then - echo "ERROR: stop host tor first: systemctl stop tor" >&2 - exit 1 -fi -if command -v podman >/dev/null 2>&1; then - if runuser -u "$OWNER" -- podman ps --format "{{.Names}}" 2>/dev/null | grep -qx koopa-tor-relay; then - echo "ERROR: stop container first: podman stop koopa-tor-relay" >&2 - exit 1 - fi -fi - -echo "Copying $SRC → $DST (identity keys as $OWNER)…" -mkdir -p "$DST" -rsync -aHAX --delete "$SRC"/ "$DST"/ -chown -R "${OWNER}:${OWNER}" "$DST" -chmod 700 "$DST" - -echo "--- fingerprint ---" -[[ -f "$DST/fingerprint" ]] && cat "$DST/fingerprint" || echo "(no fingerprint file yet)" -[[ -f "$DST/fingerprint-ed25519" ]] && cat "$DST/fingerprint-ed25519" || true -echo "OK — $DST ready. Then: podman start koopa-tor-relay" diff --git a/configs/tor/torrc b/configs/tor/torrc deleted file mode 100644 index 63cd8cf..0000000 --- a/configs/tor/torrc +++ /dev/null @@ -1,16 +0,0 @@ -# KoopaRelay — active policy (podman koopa-tor-relay, host network) -# Live paths: ~/koopa-tor-relay/{torrc,data,log} on koopa -Log notice file /var/log/tor/notices.log -Nickname KoopaRelay -ContactInfo info+koopa@hacktivism.ch -# dual-stack ORPort (IPv4 + IPv6) -ORPort 8080 -ControlPort 127.0.0.1:9051 -ExitRelay 0 -SocksPort 0 -MyFamily 52BB94DDC1292F950CF728708AC48523E018A718 -BandwidthRate 2000 MBytes -BandwidthBurst 2000 MBytes -RelayBandwidthRate 2000 MBytes -RelayBandwidthBurst 2000 MBytes -DataDirectory /var/lib/tor diff --git a/configs/tor/torrc.minimal b/configs/tor/torrc.minimal deleted file mode 100644 index a05f52c..0000000 --- a/configs/tor/torrc.minimal +++ /dev/null @@ -1,192 +0,0 @@ -## Configuration file for a typical Tor user -## Last updated 9 October 2013 for Tor 0.2.5.2-alpha. -## (may or may not work for much older or much newer versions of Tor.) -## -## Lines that begin with "## " try to explain what's going on. Lines -## that begin with just "#" are disabled commands: you can enable them -## by removing the "#" symbol. -## -## See 'man tor', or https://www.torproject.org/docs/tor-manual.html, -## for more options you can use in this file. -## -## Tor will look for this file in various places based on your platform: -## https://www.torproject.org/docs/faq#torrc - -## Tor opens a socks proxy on port 9050 by default -- even if you don't -## configure one below. Set "SocksPort 0" if you plan to run Tor only -## as a relay, and not make any local application connections yourself. -#SocksPort 9050 # Default: Bind to localhost:9050 for local connections. -#SocksPort 192.168.0.1:9100 # Bind to this address:port too. - -## Entry policies to allow/deny SOCKS requests based on IP address. -## First entry that matches wins. If no SocksPolicy is set, we accept -## all (and only) requests that reach a SocksPort. Untrusted users who -## can access your SocksPort may be able to learn about the connections -## you make. -#SocksPolicy accept 192.168.0.0/16 -#SocksPolicy reject * - -## Logs go to stdout at level "notice" unless redirected by something -## else, like one of the below lines. You can have as many Log lines as -## you want. -## -## We advise using "notice" in most cases, since anything more verbose -## may provide sensitive information to an attacker who obtains the logs. -## -## Send all messages of level 'notice' or higher to /var/log/tor/notices.log -#Log notice file /var/log/tor/notices.log -## Send every possible message to /var/log/tor/debug.log -#Log debug file /var/log/tor/debug.log -## Use the system log instead of Tor's logfiles -#Log notice syslog -## To send all messages to stderr: -#Log debug stderr - -## Uncomment this to start the process in the background... or use -## --runasdaemon 1 on the command line. This is ignored on Windows; -## see the FAQ entry if you want Tor to run as an NT service. -#RunAsDaemon 1 - -## The directory for keeping all the keys/etc. By default, we store -## things in $HOME/.tor on Unix, and in Application Data\tor on Windows. -#DataDirectory /var/lib/tor - -## The port on which Tor will listen for local connections from Tor -## controller applications, as documented in control-spec.txt. -#ControlPort 9051 -## If you enable the controlport, be sure to enable one of these -## authentication methods, to prevent attackers from accessing it. -#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C -#CookieAuthentication 1 - -############### This section is just for location-hidden services ### - -## Once you have configured a hidden service, you can look at the -## contents of the file ".../hidden_service/hostname" for the address -## to tell people. -## -## HiddenServicePort x y:z says to redirect requests on port x to the -## address y:z. - -#HiddenServiceDir /var/lib/tor/hidden_service/ -#HiddenServicePort 80 127.0.0.1:80 - -#HiddenServiceDir /var/lib/tor/other_hidden_service/ -#HiddenServicePort 80 127.0.0.1:80 -#HiddenServicePort 22 127.0.0.1:22 - -################ This section is just for relays ##################### -# -## See https://www.torproject.org/docs/tor-doc-relay for details. - -## Required: what port to advertise for incoming Tor connections. -#ORPort 9001 -## If you want to listen on a port other than the one advertised in -## ORPort (e.g. to advertise 443 but bind to 9090), you can do it as -## follows. You'll need to do ipchains or other port forwarding -## yourself to make this work. -#ORPort 443 NoListen -#ORPort 127.0.0.1:9090 NoAdvertise - -## The IP address or full DNS name for incoming connections to your -## relay. Leave commented out and Tor will guess. -#Address noname.example.com - -## If you have multiple network interfaces, you can specify one for -## outgoing traffic to use. -# OutboundBindAddress 10.0.0.5 - -## A handle for your relay, so people don't have to refer to it by key. -#Nickname ididnteditheconfig - -## Define these to limit how much relayed traffic you will allow. Your -## own traffic is still unthrottled. Note that RelayBandwidthRate must -## be at least 20 KB. -## Note that units for these config options are bytes per second, not bits -## per second, and that prefixes are binary prefixes, i.e. 2^10, 2^20, etc. -#RelayBandwidthRate 100 KB # Throttle traffic to 100KB/s (800Kbps) -#RelayBandwidthBurst 200 KB # But allow bursts up to 200KB/s (1600Kbps) - -## Use these to restrict the maximum traffic per day, week, or month. -## Note that this threshold applies separately to sent and received bytes, -## not to their sum: setting "4 GB" may allow up to 8 GB total before -## hibernating. -## -## Set a maximum of 4 gigabytes each way per period. -#AccountingMax 4 GB -## Each period starts daily at midnight (AccountingMax is per day) -#AccountingStart day 00:00 -## Each period starts on the 3rd of the month at 15:00 (AccountingMax -## is per month) -#AccountingStart month 3 15:00 - -## Administrative contact information for this relay or bridge. This line -## can be used to contact you if your relay or bridge is misconfigured or -## something else goes wrong. Note that we archive and publish all -## descriptors containing these lines and that Google indexes them, so -## spammers might also collect them. You may want to obscure the fact that -## it's an email address and/or generate a new address for this purpose. -#ContactInfo Random Person -## You might also include your PGP or GPG fingerprint if you have one: -#ContactInfo 0xFFFFFFFF Random Person - -## Uncomment this to mirror directory information for others. Please do -## if you have enough bandwidth. -#DirPort 9030 # what port to advertise for directory connections -## If you want to listen on a port other than the one advertised in -## DirPort (e.g. to advertise 80 but bind to 9091), you can do it as -## follows. below too. You'll need to do ipchains or other port -## forwarding yourself to make this work. -#DirPort 80 NoListen -#DirPort 127.0.0.1:9091 NoAdvertise -## Uncomment to return an arbitrary blob of html on your DirPort. Now you -## can explain what Tor is if anybody wonders why your IP address is -## contacting them. See contrib/tor-exit-notice.html in Tor's source -## distribution for a sample. -#DirPortFrontPage /etc/tor/tor-exit-notice.html - -## Uncomment this if you run more than one Tor relay, and add the identity -## key fingerprint of each Tor relay you control, even if they're on -## different networks. You declare it here so Tor clients can avoid -## using more than one of your relays in a single circuit. See -## https://www.torproject.org/docs/faq#MultipleRelays -## However, you should never include a bridge's fingerprint here, as it would -## break its concealability and potentionally reveal its IP/TCP address. -#MyFamily $keyid,$keyid,... - -## A comma-separated list of exit policies. They're considered first -## to last, and the first match wins. If you want to _replace_ -## the default exit policy, end this with either a reject *:* or an -## accept *:*. Otherwise, you're _augmenting_ (prepending to) the -## default exit policy. Leave commented to just use the default, which is -## described in the man page or at -## https://www.torproject.org/documentation.html -## -## Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses -## for issues you might encounter if you use the default exit policy. -## -## If certain IPs and ports are blocked externally, e.g. by your firewall, -## you should update your exit policy to reflect this -- otherwise Tor -## users will be told that those destinations are down. -## -## For security, by default Tor rejects connections to private (local) -## networks, including to your public IP address. See the man page entry -## for ExitPolicyRejectPrivate if you want to allow "exit enclaving". -## -#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports but no more -#ExitPolicy accept *:119 # accept nntp as well as default exit policy -#ExitPolicy reject *:* # no exits allowed - -## Bridge relays (or "bridges") are Tor relays that aren't listed in the -## main directory. Since there is no complete public list of them, even an -## ISP that filters connections to all the known Tor relays probably -## won't be able to block all the bridges. Also, websites won't treat you -## differently because they won't know you're running Tor. If you can -## be a real relay, please do; but if not, be a bridge! -#BridgeRelay 1 -## By default, Tor will advertise your bridge to users through various -## mechanisms like https://bridges.torproject.org/. If you want to run -## a private bridge, for example because you'll give out your bridge -## address manually to your friends, uncomment this line: -#PublishServerDescriptor 0 - diff --git a/configs/tor/torrc.sample b/configs/tor/torrc.sample deleted file mode 100644 index 7be6773..0000000 --- a/configs/tor/torrc.sample +++ /dev/null @@ -1,257 +0,0 @@ -## Configuration file for a typical Tor user -## Last updated 28 February 2019 for Tor 0.3.5.1-alpha. -## (may or may not work for much older or much newer versions of Tor.) -## -## Lines that begin with "## " try to explain what's going on. Lines -## that begin with just "#" are disabled commands: you can enable them -## by removing the "#" symbol. -## -## See 'man tor', or https://www.torproject.org/docs/tor-manual.html, -## for more options you can use in this file. -## -## Tor will look for this file in various places based on your platform: -## https://support.torproject.org/tbb/tbb-editing-torrc/ - -## Tor opens a SOCKS proxy on port 9050 by default -- even if you don't -## configure one below. Set "SOCKSPort 0" if you plan to run Tor only -## as a relay, and not make any local application connections yourself. -#SOCKSPort 9050 # Default: Bind to localhost:9050 for local connections. -#SOCKSPort 192.168.0.1:9100 # Bind to this address:port too. - -## Entry policies to allow/deny SOCKS requests based on IP address. -## First entry that matches wins. If no SOCKSPolicy is set, we accept -## all (and only) requests that reach a SOCKSPort. Untrusted users who -## can access your SOCKSPort may be able to learn about the connections -## you make. -#SOCKSPolicy accept 192.168.0.0/16 -#SOCKSPolicy accept6 FC00::/7 -#SOCKSPolicy reject * - -## Logs go to stdout at level "notice" unless redirected by something -## else, like one of the below lines. You can have as many Log lines as -## you want. -## -## We advise using "notice" in most cases, since anything more verbose -## may provide sensitive information to an attacker who obtains the logs. -## -## Send all messages of level 'notice' or higher to /var/log/tor/notices.log -#Log notice file /var/log/tor/notices.log -## Send every possible message to /var/log/tor/debug.log -#Log debug file /var/log/tor/debug.log -## Use the system log instead of Tor's logfiles -#Log notice syslog -## To send all messages to stderr: -#Log debug stderr - -## Uncomment this to start the process in the background... or use -## --runasdaemon 1 on the command line. This is ignored on Windows; -## see the FAQ entry if you want Tor to run as an NT service. -#RunAsDaemon 1 - -## The directory for keeping all the keys/etc. By default, we store -## things in $HOME/.tor on Unix, and in Application Data\tor on Windows. -#DataDirectory /var/lib/tor - -## The port on which Tor will listen for local connections from Tor -## controller applications, as documented in control-spec.txt. -#ControlPort 9051 -## If you enable the controlport, be sure to enable one of these -## authentication methods, to prevent attackers from accessing it. -#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C -#CookieAuthentication 1 - -############### This section is just for location-hidden services ### - -## Once you have configured a hidden service, you can look at the -## contents of the file ".../hidden_service/hostname" for the address -## to tell people. -## -## HiddenServicePort x y:z says to redirect requests on port x to the -## address y:z. - -#HiddenServiceDir /var/lib/tor/hidden_service/ -#HiddenServicePort 80 127.0.0.1:80 - -#HiddenServiceDir /var/lib/tor/other_hidden_service/ -#HiddenServicePort 80 127.0.0.1:80 -#HiddenServicePort 22 127.0.0.1:22 - -################ This section is just for relays ##################### -# -## See https://community.torproject.org/relay for details. - -## Required: what port to advertise for incoming Tor connections. -#ORPort 9001 -## If you want to listen on a port other than the one advertised in -## ORPort (e.g. to advertise 443 but bind to 9090), you can do it as -## follows. You'll need to do ipchains or other port forwarding -## yourself to make this work. -#ORPort 443 NoListen -#ORPort 127.0.0.1:9090 NoAdvertise -## If you want to listen on IPv6 your numeric address must be explicitly -## between square brackets as follows. You must also listen on IPv4. -#ORPort [2001:DB8::1]:9050 - -## The IP address or full DNS name for incoming connections to your -## relay. Leave commented out and Tor will guess. -#Address noname.example.com - -## If you have multiple network interfaces, you can specify one for -## outgoing traffic to use. -## OutboundBindAddressExit will be used for all exit traffic, while -## OutboundBindAddressOR will be used for all OR and Dir connections -## (DNS connections ignore OutboundBindAddress). -## If you do not wish to differentiate, use OutboundBindAddress to -## specify the same address for both in a single line. -#OutboundBindAddressExit 10.0.0.4 -#OutboundBindAddressOR 10.0.0.5 - -## A handle for your relay, so people don't have to refer to it by key. -## Nicknames must be between 1 and 19 characters inclusive, and must -## contain only the characters [a-zA-Z0-9]. -## If not set, "Unnamed" will be used. -#Nickname ididnteditheconfig - -## Define these to limit how much relayed traffic you will allow. Your -## own traffic is still unthrottled. Note that RelayBandwidthRate must -## be at least 75 kilobytes per second. -## Note that units for these config options are bytes (per second), not -## bits (per second), and that prefixes are binary prefixes, i.e. 2^10, -## 2^20, etc. -#RelayBandwidthRate 100 KBytes # Throttle traffic to 100KB/s (800Kbps) -#RelayBandwidthBurst 200 KBytes # But allow bursts up to 200KB (1600Kb) - -## Use these to restrict the maximum traffic per day, week, or month. -## Note that this threshold applies separately to sent and received bytes, -## not to their sum: setting "40 GB" may allow up to 80 GB total before -## hibernating. -## -## Set a maximum of 40 gigabytes each way per period. -#AccountingMax 40 GBytes -## Each period starts daily at midnight (AccountingMax is per day) -#AccountingStart day 00:00 -## Each period starts on the 3rd of the month at 15:00 (AccountingMax -## is per month) -#AccountingStart month 3 15:00 - -## Administrative contact information for this relay or bridge. This line -## can be used to contact you if your relay or bridge is misconfigured or -## something else goes wrong. Note that we archive and publish all -## descriptors containing these lines and that Google indexes them, so -## spammers might also collect them. You may want to obscure the fact that -## it's an email address and/or generate a new address for this purpose. -## -## If you are running multiple relays, you MUST set this option. -## -#ContactInfo Random Person -## You might also include your PGP or GPG fingerprint if you have one: -#ContactInfo 0xFFFFFFFF Random Person - -## Uncomment this to mirror directory information for others. Please do -## if you have enough bandwidth. -#DirPort 9030 # what port to advertise for directory connections -## If you want to listen on a port other than the one advertised in -## DirPort (e.g. to advertise 80 but bind to 9091), you can do it as -## follows. below too. You'll need to do ipchains or other port -## forwarding yourself to make this work. -#DirPort 80 NoListen -#DirPort 127.0.0.1:9091 NoAdvertise -## Uncomment to return an arbitrary blob of html on your DirPort. Now you -## can explain what Tor is if anybody wonders why your IP address is -## contacting them. See contrib/tor-exit-notice.html in Tor's source -## distribution for a sample. -#DirPortFrontPage /etc/tor/tor-exit-notice.html - -## Uncomment this if you run more than one Tor relay, and add the identity -## key fingerprint of each Tor relay you control, even if they're on -## different networks. You declare it here so Tor clients can avoid -## using more than one of your relays in a single circuit. See -## https://support.torproject.org/relay-operators/multiple-relays/ -## However, you should never include a bridge's fingerprint here, as it would -## break its concealability and potentially reveal its IP/TCP address. -## -## If you are running multiple relays, you MUST set this option. -## -## Note: do not use MyFamily on bridge relays. -#MyFamily $keyid,$keyid,... - -## Uncomment this if you want your relay to be an exit, with the default -## exit policy (or whatever exit policy you set below). -## (If ReducedExitPolicy, ExitPolicy, or IPv6Exit are set, relays are exits. -## If none of these options are set, relays are non-exits.) -#ExitRelay 1 - -## Uncomment this if you want your relay to allow IPv6 exit traffic. -## (Relays do not allow any exit traffic by default.) -#IPv6Exit 1 - -## Uncomment this if you want your relay to be an exit, with a reduced set -## of exit ports. -#ReducedExitPolicy 1 - -## Uncomment these lines if you want your relay to be an exit, with the -## specified set of exit IPs and ports. -## -## A comma-separated list of exit policies. They're considered first -## to last, and the first match wins. -## -## If you want to allow the same ports on IPv4 and IPv6, write your rules -## using accept/reject *. If you want to allow different ports on IPv4 and -## IPv6, write your IPv6 rules using accept6/reject6 *6, and your IPv4 rules -## using accept/reject *4. -## -## If you want to _replace_ the default exit policy, end this with either a -## reject *:* or an accept *:*. Otherwise, you're _augmenting_ (prepending to) -## the default exit policy. Leave commented to just use the default, which is -## described in the man page or at -## https://support.torproject.org/relay-operators -## -## Look at https://support.torproject.org/abuse/exit-relay-expectations/ -## for issues you might encounter if you use the default exit policy. -## -## If certain IPs and ports are blocked externally, e.g. by your firewall, -## you should update your exit policy to reflect this -- otherwise Tor -## users will be told that those destinations are down. -## -## For security, by default Tor rejects connections to private (local) -## networks, including to the configured primary public IPv4 and IPv6 addresses, -## and any public IPv4 and IPv6 addresses on any interface on the relay. -## See the man page entry for ExitPolicyRejectPrivate if you want to allow -## "exit enclaving". -## -#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports on IPv4 and IPv6 but no more -#ExitPolicy accept *:119 # accept nntp ports on IPv4 and IPv6 as well as default exit policy -#ExitPolicy accept *4:119 # accept nntp ports on IPv4 only as well as default exit policy -#ExitPolicy accept6 *6:119 # accept nntp ports on IPv6 only as well as default exit policy -#ExitPolicy reject *:* # no exits allowed - -## Uncomment this if you want your exit relay to reevaluate its exit policy on -## existing connections when the exit policy is modified. -#ReevaluateExitPolicy 1 - -## Bridge relays (or "bridges") are Tor relays that aren't listed in the -## main directory. Since there is no complete public list of them, even an -## ISP that filters connections to all the known Tor relays probably -## won't be able to block all the bridges. Also, websites won't treat you -## differently because they won't know you're running Tor. If you can -## be a real relay, please do; but if not, be a bridge! -## -## Warning: when running your Tor as a bridge, make sure than MyFamily is -## NOT configured. -#BridgeRelay 1 -## By default, Tor will advertise your bridge to users through various -## mechanisms like https://bridges.torproject.org/. If you want to run -## a private bridge, for example because you'll give out your bridge -## address manually to your friends, uncomment this line: -#BridgeDistribution none - -## Configuration options can be imported from files or folders using the %include -## option with the value being a path. This path can have wildcards. Wildcards are -## expanded first, using lexical order. Then, for each matching file or folder, the following -## rules are followed: if the path is a file, the options from the file will be parsed as if -## they were written where the %include option is. If the path is a folder, all files on that -## folder will be parsed following lexical order. Files starting with a dot are ignored. Files -## on subfolders are ignored. -## The %include option can be used recursively. -#%include /etc/torrc.d/*.conf - diff --git a/host/tor/README.md b/host/tor/README.md index 18643b5..138d11d 100644 --- a/host/tor/README.md +++ b/host/tor/README.md @@ -1,28 +1,13 @@ # Tor on koopa -**Runtime:** podman **`koopa-tor-relay`** (not host `tor.service`). -**Config mirror:** `configs/tor/` (`torrc`, Containerfile, migrate script, `create-container.sh`, user unit). -**Data/identity:** `~/koopa-tor-relay/data` (same keys as former `/var/lib/tor`). -**Process:** non-root **uid 1000** (`debian-tor`); recreate via `configs/tor/create-container.sh` after image rebuild. - -| Port | Bind | Role | -|------|------|------| -| **8080** | `0.0.0.0` + `[::]` | ORPort (dual-stack) | -| **9051** | `127.0.0.1` | ControlPort (nyx / stem) | - -Non-exit relay (`ExitRelay 0`, `SocksPort 0`). - -### Root checklist +**Runtime:** host **`tor.service`** (not a podman container). +**Ports:** ORPort **8080** · ControlPort **9051** (loopback). +**Non-exit** relay (`ExitRelay 0`). ```bash -sudo systemctl disable --now tor -sudo systemctl mask tor -# linger already required for rootless user units: -# sudo loginctl enable-linger hernani +systemctl status tor +ss -lntp | grep -E '8080|9051' ``` -### User unit - -```bash -systemctl --user enable --now container-koopa-tor-relay.service -``` +login-health: WARN if `tor.service` not active. +Legacy `koopa-tor-relay` / `configs/tor/` removed from live inventory (git history keeps them).