{"id":13468974,"url":"https://github.com/agrinman/tunnelto","last_synced_at":"2026-10-18T23:07:20.445Z","repository":{"id":38541389,"uuid":"249120770","full_name":"agrinman/tunnelto","owner":"agrinman","description":"Expose your local web server to the internet with a public URL.","archived":false,"fork":false,"pushed_at":"2022-09-24T21:28:44.000Z","size":305,"stargazers_count":7066,"open_issues_count":51,"forks_count":548,"subscribers_count":49,"default_branch":"master","last_synced_at":"2026-09-09T17:37:45.161Z","etag":null,"topics":["async-io","expose","localhost","rust","tunnel"],"latest_commit_sha":null,"homepage":"https://tunnelto.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agrinman.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":"2020-03-22T05:39:49.000Z","updated_at":"2026-09-09T13:37:03.000Z","dependencies_parsed_at":"2022-08-09T04:31:55.316Z","dependency_job_id":null,"html_url":"https://github.com/agrinman/tunnelto","commit_stats":null,"previous_names":["agrinman/wormhole"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/agrinman/tunnelto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrinman%2Ftunnelto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrinman%2Ftunnelto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrinman%2Ftunnelto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrinman%2Ftunnelto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agrinman","download_url":"https://codeload.github.com/agrinman/tunnelto/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrinman%2Ftunnelto/sbom","scorecard":{"id":171201,"data":{"date":"2025-08-11","repo":{"name":"github.com/agrinman/tunnelto","commit":"06428f13c638180dd349a4c42a17b569ab51a25f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 2/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/check.yml:1","Warn: no topLevel permission defined: .github/workflows/publish_crate.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/check.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish_crate.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/publish_crate.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish_crate.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/publish_crate.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:109: update your workflow using https://app.stepsecurity.io/secureworkflow/agrinman/tunnelto/release.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine:latest to alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Info:   0 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.1.18 not signed: https://api.github.com/repos/agrinman/tunnelto/releases/43017230","Warn: release artifact 0.1.16 not signed: https://api.github.com/repos/agrinman/tunnelto/releases/42313879","Warn: release artifact 0.1.15 not signed: https://api.github.com/repos/agrinman/tunnelto/releases/42310413","Warn: release artifact 0.1.14 not signed: https://api.github.com/repos/agrinman/tunnelto/releases/41597885","Warn: release artifact 0.1.12 not signed: https://api.github.com/repos/agrinman/tunnelto/releases/28932869","Warn: release artifact 0.1.18 does not have provenance: https://api.github.com/repos/agrinman/tunnelto/releases/43017230","Warn: release artifact 0.1.16 does not have provenance: https://api.github.com/repos/agrinman/tunnelto/releases/42313879","Warn: release artifact 0.1.15 does not have provenance: https://api.github.com/repos/agrinman/tunnelto/releases/42310413","Warn: release artifact 0.1.14 does not have provenance: https://api.github.com/repos/agrinman/tunnelto/releases/41597885","Warn: release artifact 0.1.12 does not have provenance: https://api.github.com/repos/agrinman/tunnelto/releases/28932869"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"48 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0139","Warn: Project is vulnerable to: RUSTSEC-2021-0145 / GHSA-g98v-hv3f-hcfr","Warn: Project is vulnerable to: RUSTSEC-2024-0375","Warn: Project is vulnerable to: RUSTSEC-2023-0028","Warn: Project is vulnerable to: RUSTSEC-2022-0078 / GHSA-f85w-wvc7-crwc","Warn: Project is vulnerable to: RUSTSEC-2020-0159","Warn: Project is vulnerable to: RUSTSEC-2023-0034 / GHSA-f8vr-r385-rh5r","Warn: Project is vulnerable to: RUSTSEC-2024-0003 / GHSA-8r5v-vm4m-4g25","Warn: Project is vulnerable to: RUSTSEC-2024-0332 / GHSA-q6cp-qfwq-4gcv","Warn: Project is vulnerable to: RUSTSEC-2021-0079 / GHSA-5h46-h7hh-c6x9","Warn: Project is vulnerable to: RUSTSEC-2021-0078 / GHSA-f3pg-qwvg-p99c","Warn: Project is vulnerable to: RUSTSEC-2022-0022 / GHSA-f67m-9j94-qv9j","Warn: Project is vulnerable to: RUSTSEC-2024-0421 / GHSA-h97m-ww89-6jmq","Warn: Project is vulnerable to: RUSTSEC-2024-0384","Warn: Project is vulnerable to: RUSTSEC-2024-0019 / GHSA-r8w9-5wcg-vfj7","Warn: Project is vulnerable to: RUSTSEC-2023-0050","Warn: Project is vulnerable to: RUSTSEC-2023-0022 / GHSA-3gxf-9r58-2ghg","Warn: Project is vulnerable to: RUSTSEC-2023-0024 / GHSA-6hcf-g6gr-hhcr","Warn: Project is vulnerable to: RUSTSEC-2023-0023 / GHSA-9qwg-crg9-m2vc","Warn: Project is vulnerable to: RUSTSEC-2023-0044 / GHSA-xcf7-rvmh-g6q4","Warn: Project is vulnerable to: RUSTSEC-2023-0072 / GHSA-xphf-cx8h-7q9g","Warn: Project is vulnerable to: GHSA-q445-7m23-qrmw","Warn: Project is vulnerable to: RUSTSEC-2024-0357","Warn: Project is vulnerable to: RUSTSEC-2025-0004 / GHSA-rpmj-rpgj-qmpm","Warn: Project is vulnerable to: RUSTSEC-2024-0370","Warn: Project is vulnerable to: RUSTSEC-2022-0013 / GHSA-m5pq-gvj9-9vr8","Warn: Project is vulnerable to: RUSTSEC-2023-0018 / GHSA-mc8h-8q98-g5hr","Warn: Project is vulnerable to: RUSTSEC-2025-0010","Warn: Project is vulnerable to: GHSA-4p46-pwfr-66x6","Warn: Project is vulnerable to: RUSTSEC-2025-0009","Warn: Project is vulnerable to: GHSA-c86p-w88r-qvqr","Warn: Project is vulnerable to: RUSTSEC-2022-0071","Warn: Project is vulnerable to: RUSTSEC-2024-0336","Warn: Project is vulnerable to: RUSTSEC-2023-0081","Warn: Project is vulnerable to: RUSTSEC-2024-0006 / GHSA-r7qv-8r2h-pg27","Warn: Project is vulnerable to: RUSTSEC-2020-0056","Warn: Project is vulnerable to: RUSTSEC-2022-0006 / GHSA-9hpw-r23r-xgm5","Warn: Project is vulnerable to: RUSTSEC-2020-0071 / GHSA-wcg3-cvx6-7396","Warn: Project is vulnerable to: RUSTSEC-2021-0072 / GHSA-2grh-hm3w-w7hv","Warn: Project is vulnerable to: RUSTSEC-2021-0124 / GHSA-fg7r-2g4j-5cgr","Warn: Project is vulnerable to: RUSTSEC-2023-0001 / GHSA-7rrj-xr53-82p7","Warn: Project is vulnerable to: RUSTSEC-2023-0005 / GHSA-4q83-7cq4-p6wg","Warn: Project is vulnerable to: GHSA-rr8g-9fpq-6wmg","Warn: Project is vulnerable to: RUSTSEC-2025-0023","Warn: Project is vulnerable to: RUSTSEC-2023-0065 / GHSA-9mcr-873m-xcxp","Warn: Project is vulnerable to: RUSTSEC-2021-0146","Warn: Project is vulnerable to: RUSTSEC-2022-0082 / GHSA-8v4j-7jgf-5rg9","Warn: Project is vulnerable to: RUSTSEC-2023-0052 / GHSA-8qv2-5vq6-g2g7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T16:31:00.220Z","repository_id":38541389,"created_at":"2025-08-16T16:31:00.220Z","updated_at":"2025-08-16T16:31:00.220Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38343411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"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":["async-io","expose","localhost","rust","tunnel"],"created_at":"2024-07-31T15:01:23.159Z","updated_at":"2026-10-18T23:07:20.019Z","avatar_url":"https://github.com/agrinman.png","language":"Rust","funding_links":[],"categories":["Rust","Applications","HarmonyOS","rust"],"sub_categories":["Web","Windows Manager"],"readme":"\u003cp align=\"center\" \u003e\n\u003cimg width=\"540px\" src=\"https://repository-images.githubusercontent.com/249120770/7ea6d180-b4ba-11ea-96ab-6c3b987aac9d\" align=\"center\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e    \n  \u003ca href=\"https://github.com/agrinman/tunnelto/actions?query=workflow%3A%22Build+and+Release%22\"\u003e\u003cimg src=\"https://github.com/agrinman/wormhole/workflows/Build%20and%20Release/badge.svg\" alt=\"BuildRelease\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/wormhole-tunnel\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/tunnelto\" alt=\"crate\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/agrinman/tunnelto/packages/295195\"\u003e\u003cimg src=\"https://img.shields.io/docker/v/agrinman/wormhole?label=Docker\" alt=\"GitHub Docker Registry\"\u003e\u003c/a\u003e \n  \u003ca href=\"https://twitter.com/alexgrinman\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/alexgrinman?label=%40AlexGrinman\" alt=\"crate\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# `tunnelto`\n`tunnelto` lets you expose your locally running web server via a public URL.\nWritten in Rust. Built completely with async-io on top of tokio.\n\n1. [Install](#install)\n2. [Usage Instructions](#usage)\n3. [Host it yourself](#host-it-yourself)\n\n# Install\n## Brew (macOS)\n```bash\nbrew install agrinman/tap/tunnelto\n```\n\n## Cargo\n```bash\ncargo install tunnelto\n```\n\n## Everywhere\nOr **Download a release for your target OS here**: [tunnelto/releases](https://github.com/agrinman/tunnelto/releases)\n\n# Usage\n## Quick Start\n```shell script\ntunnelto --port 8000\n```\nThe above command opens a tunnel and forwards traffic to `localhost:8000`.\n\n## More Options:\n```shell script\ntunnelto 0.1.14\n\nUSAGE:\n    tunnelto [FLAGS] [OPTIONS] [SUBCOMMAND]\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n    -v, --verbose    A level of verbosity, and can be used multiple times\n\nOPTIONS:\n        --dashboard-address \u003cdashboard-address\u003e    Sets the address of the local introspection dashboard\n    -k, --key \u003ckey\u003e                                Sets an API authentication key to use for this tunnel\n        --host \u003clocal-host\u003e\n            Sets the HOST (i.e. localhost) to forward incoming tunnel traffic to [default: localhost]\n\n    -p, --port \u003cport\u003e\n            Sets the port to forward incoming tunnel traffic to on the target host\n\n        --scheme \u003cscheme\u003e\n            Sets the SCHEME (i.e. http or https) to forward incoming tunnel traffic to [default: http]\n\n    -s, --subdomain \u003csub-domain\u003e                   Specify a sub-domain for this tunnel\n\nSUBCOMMANDS:\n    help        Prints this message or the help of the given subcommand(s)\n    set-auth    Store the API Authentication key\n```\n\n# Host it yourself\n1. Compile the server for the musl target. See the `musl_build.sh` for a way to do this trivially with Docker!\n2. See `Dockerfile` for a simple alpine based image that runs that server binary.\n3. Deploy the image where ever you want.\n\n## Testing Locally\n```shell script\n# Run the Server: xpects TCP traffic on 8080 and control websockets on 5000\nALLOWED_HOSTS=\"localhost\" cargo run --bin tunnelto_server\n\n# Run a local tunnelto client talking to your local tunnelto_server\nCTRL_HOST=\"localhost\" CTRL_PORT=5000 CTRL_TLS_OFF=1 cargo run --bin tunnelto -- -p 8000\n\n# Test it out!\n# Remember 8080 is our local tunnelto TCP server\ncurl -H '\u003csubdomain\u003e.localhost' \"http://localhost:8080/some_path?with=somequery\"\n```\nSee `tunnelto_server/src/config.rs` for the environment variables for configuration.\n\n## Caveats for hosting it yourself\nThe implementation does not support multiple running servers (i.e. centralized coordination).\nTherefore, if you deploy multiple instances of the server, it will only work if the client connects to the same instance\nas the remote TCP stream.\n\nThe [version hosted by us](https://tunnelto.dev) is a proper distributed system running on the the fabulous [fly.io](https://fly.io) service. \nIn short, fly.io makes this super easy with their [Private Networking](https://fly.io/docs/reference/privatenetwork/) feature.\nSee `tunnelto_server/src/network/mod.rs` for the implementation details of our gossip mechanism.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrinman%2Ftunnelto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagrinman%2Ftunnelto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrinman%2Ftunnelto/lists"}