{"id":16529279,"url":"https://github.com/cometkim/dotunnel","last_synced_at":"2026-05-10T13:21:51.991Z","repository":{"id":255431912,"uuid":"778956795","full_name":"cometkim/dotunnel","owner":"cometkim","description":"WIP","archived":false,"fork":false,"pushed_at":"2024-04-06T17:11:01.000Z","size":1019,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T20:39:35.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/cometkim.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-28T18:39:54.000Z","updated_at":"2025-02-15T06:48:32.000Z","dependencies_parsed_at":"2024-08-30T00:21:34.312Z","dependency_job_id":"168bb8c7-8c91-43f7-9d4b-f26db62bc643","html_url":"https://github.com/cometkim/dotunnel","commit_stats":null,"previous_names":["cometkim/dotunnel"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cometkim%2Fdotunnel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cometkim%2Fdotunnel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cometkim%2Fdotunnel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cometkim%2Fdotunnel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cometkim","download_url":"https://codeload.github.com/cometkim/dotunnel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241629738,"owners_count":19993707,"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":[],"created_at":"2024-10-11T17:44:20.966Z","updated_at":"2026-05-10T13:21:46.934Z","avatar_url":"https://github.com/cometkim.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DOtunnel\n\n\u003e [!NOTE]\n\u003e DOtunnel is actively under development.\n\nExpose your local servers to the public internet easily and reliably.\n\nDOtunnel is a BYOC(\"Bring Your Own Cloudflare\") alternative to ngrok designed for better DX and reliabiltiy. It leverages Cloudflare [Durable Objects] to be automatically scalable – ideal for teams and organizations of all sizes.\n\n## Highlights\n\n- BYOC (Bring Your Own Cloudflare), no paywall, free to start and pay-as-you-go\n- Reliability guaranteed by Cloudflare [Durable Objects]\n- Security features for organizations\n- Built-in web server for static files\n\n### What's difference from the Cloudflare Tunnel?\n\nCloudflare already offers the same product of its own, called [Cloudflare Tunnel] (formerly Argo Tunnel), as a part of their SASE solution. If your organization already using Cloudflare Zero Trust service, check it out first.\n\nCloudflare Tunnel connects via `cloudflared`, which is the Cloudflare's ZTNA agent. But it requires overly complex configuration and management IMHO. Even though I only use developer platform and I don't need any other ZTNA features, they still require additional charge for the entire ZTNA service. It is a significant paywall to organizations.\n\nDOtunnel is focusing on **development purpose only**. So it can more concise configuration to maximize productivity, also it is charged transparently based on the Workers' pricing.\n\n### What's differee from other projects?\n\nYou can find many other similar free open-source projects from [awesome-tunneling](https://github.com/anderspitman/awesome-tunneling)\n\nHowever, most of them don't address scalability. This can cause complications for teams of 100+ developers, as handling multiple traffic sources simultaneously introduces complex concurrency issues.\n\nAnd some of them lack essential features for organizational use, such as access control and auditing. Others are too complex to setup and administrate.\n\nDOtunnel aims good balance for dev tunneling needs, regardless of the size or requirements of the organization.\n\n## Installation\n\nTBD\n\n## CLI usage\n\n### Initial setup\n\nFirst you should setup global config with profiles. Profiles allow you to manage settings and connections for different relay server or users.\n\n- Set up your default profile:\n  ```sh\n  dotunnel setup\n  ```\n\n- (Optional) Set up additional profiles:\n  ```sh\n  dotunnel setup --profile work\n  ```\n\nYour config is located under `${XDG_CONFIG_HOME:-$HOME/.config}/dotunnel/config.toml`.\n\n### Per-project setup\n\nTBD\n\n### Authentication\n\nDOtunnel requires authentication before any operation. You can login to the relay server ahead of operation, or skip this step until actual use.\n\n- Authenticate for a profile:\n  ```sh\n  dotunnel login \n  dotunnel login --profile work \n  ```\n  (Follow the browser instructions to complete authentication)\n\n### Exposing local servers\n\n- Expose via pre-configured tunnel:\n  ```sh\n  dotunnel [profile=default]\n  ```\n\n- Expose a local HTTP server:\n  ```sh\n  dotunnel expose :8000\n  ```\n\n- Expose with a specific profile:\n  ```sh\n  dotunnel expose :8000 --profile project\n  ```\n\n### Exposing static files\n\nDOtunnel has a built-in server for simple static file serving.\n\n- Serve static files from directory:\n  ```sh\n  # expose a directory\n  dotunnel expose ./public\n\n  # expose a directory into a subpath\n  dotunnel expose --mount=\"/admin\" ./public\n  ```\n\n- Serve plain text:\n  ```sh\n  dotunnel expose echo:\"Hello DOtunnel!\"\n  ```\n\n- Serve files from a ZIP archive:\n  ```sh\n  dotunnel expose zip:./build.zip\n  ```\n\nThat's not done! Run `dotunnel --help` to see full usage.\n\n## Deploy your own relay server\n\nTBD\n\n## Security \u0026 Privacy\n\nDOtunnel is designed for development purposes and organizational use.\n\nEvery tunnel is secured via a WebSocket Secure connection, but TLS is going to be terminated once it reaches the Cloudflare infrastructure (You should trust them), allowing content to be read or manipulated for productivity features and auditing.\n\nHowever, this doesn't necessarily mean you cannot use DOtunnel for private use. You can configure another relay server into your personal Cloudflare account. DOtunnel CLI supports multiple relay servers via `--profile`.\n\n**Be aware you're exposing your data to the public internet.** Tunnel addresses could be scanned. DOtunnel and Cloudflare platform add some additional security layers (TBD), but they couldn't be completely secure. Avoid exposing sensitive files or credentials, and keep sessions shortly.\n\n## Caveats\n\nTheoretically, Durable Objects would be the perfect fit for tunneling, but this isn't always the case in the real world.\n\nBecause DOs don't colocate with workers in all regions (yet). Depending on your regional location, inefficient round trips may occur. You can find more information from [Where Durable Objects Live]\n\n## LICENSE\n\nMIT\n\n[Cloudflare Tunnel]: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/\n[Durable Objects]: https://developers.cloudflare.com/durable-objects/\n[Where Durable Objects Live]: https://where.durableobjects.live/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcometkim%2Fdotunnel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcometkim%2Fdotunnel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcometkim%2Fdotunnel/lists"}