{"id":21853818,"url":"https://github.com/brunneis/tor-relay-docker","last_synced_at":"2026-06-08T13:01:36.366Z","repository":{"id":24165887,"uuid":"100785064","full_name":"brunneis/tor-relay-docker","owner":"brunneis","description":"Tor relay Docker images for x86-64, armhf \u0026 arm64 (from source)","archived":false,"fork":false,"pushed_at":"2022-06-20T18:03:27.000Z","size":46,"stargazers_count":39,"open_issues_count":7,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-22T09:50:15.852Z","etag":null,"topics":["arm","arm64","armhf","bridge-relay","docker-image","exit-relay","hacktoberfest","middle-relay","tor-relay","ubuntu"],"latest_commit_sha":null,"homepage":"https://www.torproject.org/download/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brunneis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-19T09:45:18.000Z","updated_at":"2025-07-06T19:34:26.000Z","dependencies_parsed_at":"2022-08-27T05:22:02.800Z","dependency_job_id":null,"html_url":"https://github.com/brunneis/tor-relay-docker","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/brunneis/tor-relay-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunneis%2Ftor-relay-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunneis%2Ftor-relay-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunneis%2Ftor-relay-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunneis%2Ftor-relay-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brunneis","download_url":"https://codeload.github.com/brunneis/tor-relay-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brunneis%2Ftor-relay-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34063159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","arm64","armhf","bridge-relay","docker-image","exit-relay","hacktoberfest","middle-relay","tor-relay","ubuntu"],"created_at":"2024-11-28T01:27:34.445Z","updated_at":"2026-06-08T13:01:36.344Z","avatar_url":"https://github.com/brunneis.png","language":"Shell","funding_links":["https://www.buymeacoffee.com/brunneis"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\u003cb\u003eTor Relay Docker\u003c/b\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/brunneis\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" height=\"35px\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003ca href=\"https://github.com/brunneis/tor-relay-docker/blob/master/LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/brunneis/tor-relay-docker.svg?style=flat-square\u0026color=blue\"\u003e\u003c/a\u003e\n\nTor relay Docker images for x86-64, armhf \u0026amp; arm64 (from source).\n\nThere are pre-built ubuntu-based images hosted in\n[hub.docker.com](https://hub.docker.com/r/brunneis)\n(Ubuntu 16.04 LTS) that can be easily executed with the `launch.sh` script.\n\n__Tor__ (Tor built from source)\n- [brunneis/tor-relay:x86-64](https://hub.docker.com/r/brunneis/tor-relay/tags/) (latest stable)\n- [brunneis/tor-relay:armhf](https://hub.docker.com/r/brunneis/tor-relay/tags/) (latest stable)\n- [brunneis/tor-relay:arm64](https://hub.docker.com/r/brunneis/tor-relay/tags/) (latest stable)\n- [brunneis/tor-relay:0.4.6.6_x86-64](https://hub.docker.com/r/brunneis/tor-relay/tags/)\n- [brunneis/tor-relay:0.4.6.6_armhf](https://hub.docker.com/r/brunneis/tor-relay/tags/)\n- [brunneis/tor-relay:0.4.6.6_arm64](https://hub.docker.com/r/brunneis/tor-relay/tags/)\n\n__Tor with ARM (Anonymizing Relay Monitor)__ (based on tor-relay images)\n- [brunneis/tor-relay-arm:x86-64](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/) (latest stable)\n- [brunneis/tor-relay-arm:armhf](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/) (latest stable)\n- [brunneis/tor-relay-arm:arm64](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/) (latest stable)\n- [brunneis/tor-relay-arm:0.4.6.6_x86-64](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/)\n- [brunneis/tor-relay-arm:0.4.6.6_armhf](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/)\n- [brunneis/tor-relay-arm:0.4.6.6_arm64](https://hub.docker.com/r/brunneis/tor-relay-arm/tags/)\n\n\n## How it works\nThe common entrypoint for all the tor-relay images is the `entrypoint.sh` script. Before launching Tor, it will create the user `tor` and configure the `torrc` file depending on the relay type and the configured environment variables. The Tor data directory will be mounted in the folder `tor-data` within the directory from which the script is executed. The docker image will run with the user `tor` with the same `UID` as the user who runs the container. The identity of the executed relay is kept under the `tor-data` folder, so the container can be destroyed and relaunched while the relay identity is preserved.\n\n## How to launch a Tor relay\nYou can modify the basic environment variables of the `launch.sh` script\n(NICKNAME and CONTACT_INFO) and just launch it as follows, where the first argument\nis the tor-relay image and the second one, the relay type:\n\n- __Bridge relay__: `./launch.sh brunneis/tor-relay:x86-64 bridge`\n- __Middle relay__: `./launch.sh brunneis/tor-relay:x86-64 middle`\n- __Exit relay__: `./launch.sh brunneis/tor-relay:x86-64 exit`\n\nCurrently, it is possible to configure also the following variables when\nlaunching a dockerized relay and all of them come with default values:\n- OR_PORT (ORPort)\n- DIR_PORT (DirPort)\n- CONTROL_PORT (ControlPort)\n- BANDWIDTH_RATE (RelayBandwidthRate)\n- BANDWIDTH_BURST (RelayBandwidthBurst)\n- MAX_MEM (MaxMemInQueues)\n- ACCOUNTING_MAX (AccountingMax)\n- ACCOUNTING_START (AccountingStart)\n\nIf you want to run a Docker image directly just set the previous environment\nvariables and bind a volume for the Tor data as shown bellow:\n\n- __Bridge relay__:\n`docker run -d -p 9001:9001 -e \"OR_PORT=9001\" -e \"NICKNAME=YourRelayNickname\" -e \"CONTACT_INFO=contact@example.com\" -e \"BANDWIDTH_RATE=250 KBytes\" -e \"BANDWIDTH_BURST=500 KBytes\" -e \"MAX_MEM=512 MB\" -e \"HOST_UID=$UID\" -v $(pwd)/tor-data:/home/tor/data:Z --name tor-bridge-relay brunneis/tor-relay:x86-64 bridge`\n\n- __Middle relay__:\n`docker run -d -p 9001:9001 -p 9030:9030 -e \"OR_PORT=9001\" -e \"DIR_PORT=9030\" -e \"NICKNAME=YourRelayNickname\" -e \"CONTACT_INFO=contact@example.com\" -e \"BANDWIDTH_RATE=250 KBytes\" -e \"BANDWIDTH_BURST=500 KBytes\" -e \"MAX_MEM=512 MB\" -e \"HOST_UID=$UID\" -v $(pwd)/tor-data:/home/tor/data:Z --name tor-middle-relay brunneis/tor-relay:x86-64 middle`\n\n- __Exit relay__:\n`docker run -d -p 9001:9001 -p 9030:9030 -e \"OR_PORT=9001\" -e \"DIR_PORT=9030\" -e \"NICKNAME=YourRelayNickname\" -e \"CONTACT_INFO=contact@example.com\" -e \"BANDWIDTH_RATE=250 KBytes\" -e \"BANDWIDTH_BURST=500 KBytes\" -e \"MAX_MEM=512 MB\" -e \"HOST_UID=$UID\" -v $(pwd)/tor-data:/home/tor/data:Z --name tor-exit-relay brunneis/tor-relay:x86-64 exit`\n\n## How to update a running Tor relay to the latest stable version\nWhen launching a Tor relay with the `launch.sh` script, you can update the Tor software with the last stable version directly running the `update-relay.sh` script. For manual updates, you can just kill the running container, pull or build the new Docker image and rerun the container binding the same data directory.\n\n## Generate dockerfiles\nThe script `gen-dockerfiles.sh` is intended to generate the build contexts for all the supported\narchitectures (x86-64, armhf \u0026 arm64) and variants (tor-relay \u0026 tor-relay-arm). It has no arguments and makes use of the `dockerfile.sh` script, which generates a Dockefile given a base image and a variant.\nThe generated dockerfiles were designed to work with modern Ubuntu images and should work with other architectures which Ubuntu support. Note that the `tor-relay-arm` generated images need to use a `tor-relay` base image to work.\n\nUsage example: `./dockerfile.sh ubuntu:xenial tor-relay \u003e Dockerfile`\n- arg1 - Docker image\n- arg2 - image variant (tor-relay or tor-relay-arm)\n\n## How to build the images\nThe `build-arch-images.sh` script will build all the Docker images for the given architectures as parameters. The images can be manually built with the `docker build` command within every generated Docker context.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunneis%2Ftor-relay-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrunneis%2Ftor-relay-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrunneis%2Ftor-relay-docker/lists"}