{"id":16915813,"url":"https://github.com/donnchac/onionsprout","last_synced_at":"2025-04-11T11:31:28.337Z","repository":{"id":151041068,"uuid":"300925269","full_name":"DonnchaC/onionsprout","owner":"DonnchaC","description":"OnionSprout is a tool to run publicaly-accessible web services, for example from Raspberry Pi in your home, without a public IP.","archived":false,"fork":false,"pushed_at":"2020-10-03T16:50:33.000Z","size":2,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-04-05T03:19:05.969Z","etag":null,"topics":["onionservice","tor"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DonnchaC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-03T16:26:57.000Z","updated_at":"2024-06-19T10:07:52.898Z","dependencies_parsed_at":null,"dependency_job_id":"c2c3486c-3eb1-440d-844b-6bb9eb1d716c","html_url":"https://github.com/DonnchaC/onionsprout","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnchaC%2Fonionsprout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnchaC%2Fonionsprout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnchaC%2Fonionsprout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnchaC%2Fonionsprout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DonnchaC","download_url":"https://codeload.github.com/DonnchaC/onionsprout/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248383953,"owners_count":21094642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["onionservice","tor"],"created_at":"2024-10-13T19:22:51.238Z","updated_at":"2025-04-11T11:31:28.062Z","avatar_url":"https://github.com/DonnchaC.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OnionSprout\n\nOnionSprout is a tool to run publicaly-accessible web services, for example from Raspberry Pi in your home, without a public IP. Additionally because traffic is routed via the Tor network you home location and IP address is kept private.\n\nThe tool involved a publicly accessible server, the OnionGateway, which transparently routes TLS\nconnections to your web server over a Tor onion service. Your onion service will have a public domain name and will be accessible by anyone without using Tor. All connections are end-to-end encrypted from the user to your onion service.\n\n\n\n## Installation\n\nThe tool can install by cloning the repo and building the go package.\n\n```\ngo get github.com/DonnchaC/onionsprout\n```\n\nTo run you will need to have Tor running on the computer where you will host your server. OnionSprout will automatically provison a Tor onion server.\n\n## Usage\n\nCurrently this tool sets up a local webserver which will automatically request a LetsEncrypt certifcate from the first connection. The webserver will show a test page.\n\n```\nDOMAIN=yoursubdomain.example-gateway.com onionsprout\n```\n\n## TODO\n\nThe tool should have a CLI to:\n\n - Register and configure a new subdomain or domain\n - Start a new onion address and store the private key and configuration\n - Configure the tool to terminate TLS connections and forward to the local service.\n\n## Example CLI\n\nThe public domain will run the OnionGateway proxy. You can host it yourself or use a service run by a third party. A third party server will have it's own interface for registering your subdomain.\n\n```\n$ onionsprout init\nEnter public domain: yoursubdomain.example-gateway.com\nEnter token: XXXXXXXXXXXXXXXXXXXXXXXXX\nOnion address private key (leave blank to generate):\nGenerating onion address.....\nGenerated onion address: uih5owv3h5huiyyjf7rnlkimpmh3hz2qdmqjqyvazcbau2lucjh3woyd.onion\nDestination server (plaintext request will be forwarded here): localhost:8080\nStored new configutation at /etc/onionsprout/yoursubdomain.example-gateway.com.yml\n```\n\nLater OnionSprout can be started as a server:\n\n```\n$ onionsprout\nLoading onionsprout configurations from /etc/onionsprout/\nStarted client service onion service on uih5owv3h5huiyyjf7rnlkimpmh3hz2qdmqjqyvazcbau2lucjh3woyd.onion forwarding to localhost:8080\n...\n```\n\nor\n\n```\nonionsprout yoursubdomain.example-gateway.com\nLoading onionsprout configurations from /etc/onionsprout/yoursubdomain.example-gateway.com\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnchac%2Fonionsprout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonnchac%2Fonionsprout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnchac%2Fonionsprout/lists"}