{"id":19366125,"url":"https://github.com/kaichaosun/rlt","last_synced_at":"2025-05-16T07:04:48.976Z","repository":{"id":40632405,"uuid":"507781187","full_name":"kaichaosun/rlt","owner":"kaichaosun","description":"Localtunnel implementation in Rust, expose local API to the public.","archived":false,"fork":false,"pushed_at":"2024-12-16T09:09:34.000Z","size":135,"stargazers_count":122,"open_issues_count":8,"forks_count":12,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-12T04:31:40.084Z","etag":null,"topics":["localtunnel","p2p","proxy","relay","rust"],"latest_commit_sha":null,"homepage":"","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/kaichaosun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["kaichaosun"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-06-27T05:57:34.000Z","updated_at":"2025-05-05T07:32:07.000Z","dependencies_parsed_at":"2023-01-29T12:50:11.624Z","dependency_job_id":"923c52ea-4e2b-44ae-9d09-d0c5487954c2","html_url":"https://github.com/kaichaosun/rlt","commit_stats":{"total_commits":85,"total_committers":2,"mean_commits":42.5,"dds":0.0117647058823529,"last_synced_commit":"87631dcdf58052788322c22ee5ad80132d6b25c1"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaichaosun%2Frlt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaichaosun%2Frlt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaichaosun%2Frlt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaichaosun%2Frlt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaichaosun","download_url":"https://codeload.github.com/kaichaosun/rlt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485055,"owners_count":22078767,"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":["localtunnel","p2p","proxy","relay","rust"],"created_at":"2024-11-10T07:43:22.709Z","updated_at":"2025-05-16T07:04:43.966Z","avatar_url":"https://github.com/kaichaosun.png","language":"Rust","funding_links":["https://github.com/sponsors/kaichaosun"],"categories":[],"sub_categories":[],"readme":"# Localtunnel\n\n[![localtunnel](https://img.shields.io/crates/v/localtunnel.svg)](https://crates.io/crates/localtunnel)\n[![localtunnel-client](https://img.shields.io/crates/v/localtunnel-client.svg)](https://crates.io/crates/localtunnel-client)\n[![localtunnel-server](https://img.shields.io/crates/v/localtunnel-server.svg)](https://crates.io/crates/localtunnel-server)\n\nLocaltunnel exposes your localhost endpoint to the world, user cases are:\n- API testing\n- multiple devices access to single data store\n- peer to peer connection, workaround for NAT hole punching.\n\n## Client Usage\n\nKnown issue: *the public proxy server is down, please setup your own server.*\n\nUse in CLI:\n\n```shell\ncargo install localtunnel\n\nlocaltunnel client --host https://your-domain.com --subdomain kaichao --port 3000\n```\n\nUse as a Rust library:\n\n```shell\ncargo add localtunnel-client\n```\n\n```Rust\nuse localtunnel_client::{open_tunnel, broadcast, ClientConfig};\n\nlet (notify_shutdown, _) = broadcast::channel(1);\n\nlet config = ClientConfig {\n    server: Some(\"https://your-domain.com\".to_string()),\n    subdomain: Some(\"demo\".to_string()),\n    local_host: Some(\"localhost\".to_string()),\n    local_port: 3000,\n    shutdown_signal: notify_shutdown.clone(),\n    max_conn: 10,\n    credential: None,\n};\nlet result = open_tunnel(config).await?;\n\n// Shutdown the background tasks by sending a signal.\nlet _ = notify_shutdown.send(());\n```\n\n## Server Usage\n\nUse in CLI:\n\n```shell\nlocaltunnel server --domain your-domain.com --port 3000 --proxy-port 3001 --secure\n```\n\nUse as a Rust library,\n\n```shell\ncargo install localtunnel-server\n```\n\n```Rust\nuse localtunnel_server::{start, ServerConfig};\n\nlet config = ServerConfig {\n    domain: \"your-domain.com\".to_string(),\n    api_port: 3000,\n    secure: true,\n    max_sockets: 10,\n    proxy_port: 3001,\n    require_auth: false,\n};\n\nstart(config).await?\n```\n\n## Sponsor\n\n__Please help me build OSS__ 👉 [GitHub Sponsors](https://github.com/sponsors/kaichaosun)\n\n## Resources\n\n- [localtunnel](https://github.com/localtunnel/localtunnel)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaichaosun%2Frlt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaichaosun%2Frlt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaichaosun%2Frlt/lists"}