{"id":39135842,"url":"https://github.com/chuangbo/hypro","last_synced_at":"2026-01-17T21:24:54.412Z","repository":{"id":57554205,"uuid":"157977728","full_name":"chuangbo/hypro","owner":"chuangbo","description":"A simple HTTP local tunnel powered by Go and gRPC","archived":false,"fork":false,"pushed_at":"2024-07-30T10:24:37.000Z","size":39,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-07-31T10:12:14.692Z","etag":null,"topics":["http","tunnel"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/chuangbo.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":"2018-11-17T11:26:40.000Z","updated_at":"2024-07-30T10:24:14.000Z","dependencies_parsed_at":"2022-09-26T18:51:10.207Z","dependency_job_id":null,"html_url":"https://github.com/chuangbo/hypro","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/chuangbo/hypro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuangbo%2Fhypro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuangbo%2Fhypro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuangbo%2Fhypro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuangbo%2Fhypro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chuangbo","download_url":"https://codeload.github.com/chuangbo/hypro/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuangbo%2Fhypro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["http","tunnel"],"created_at":"2026-01-17T21:24:54.341Z","updated_at":"2026-01-17T21:24:54.404Z","avatar_url":"https://github.com/chuangbo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 🧚 hypro\n\n[![GoDoc](https://pkg.go.dev/badge/github.com/chuangbo/hypro?utm_source=godoc)](https://pkg.go.dev/github.com/chuangbo/hypro)\n[![Go Report Card](https://goreportcard.com/badge/github.com/chuangbo/hypro)](https://goreportcard.com/report/github.com/chuangbo/hypro)\n\n*HYpertext-transfer-protocol PROxy*\n\nHypro is a simple HTTP tunnel powered by go and gRPC.\n\n```sh\n HTTP Server\n     |\nReverse Proxy (Server)\n     |\n gRPC Stream\n     |\nReverse Proxy (Client)\n     |\n   Target\n```\n\n### Install\n\n```sh\n# Server\ngo install github.com/chuangbo/hypro/cmd/hypro-server\n# Client\ngo install github.com/chuangbo/hypro/cmd/hypro\n```\n\n### Usage\n\n1. DNS\n\n    Add a DNS A record to your server:\n\n    `example.com =\u003e YOUR_SERVER_IP`\n\n    And then add a wildcard DNS A record to your server:\n\n    `*.example.com =\u003e YOUR_SERVER_IP`\n\n1. Server\n\n    ```\n    hypro-server\n    ```\n\n1. Client\n\n    ```\n    hypro -server example.com -insecure -domain myapp.example.com -target http://localhost:8080\n    ```\n\n### Secure Connection\n\n1. Create self-sign certificate\n\n    ```sh\n    # Generate CA key:\n    openssl ecparam -name prime256v1 -noout -genkey -out ca.key\n\n    # Generate CA certificate:\n    openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj \"/C=NZ/ST=AKL/L=Auckland/O=HyproCompany/OU=HyproApp/CN=HyproRootCA\"\n\n    # Generate server key:\n    openssl ecparam -name prime256v1 -noout -genkey -out server.key\n\n    # Generate server signing request:\n    openssl req -new -key server.key -out server.csr -subj \"/C=NZ/ST=AKL/L=Auckland/O=HyproCompany/OU=HyproApp/CN=$(SERVER_NAME)\"\n\n    # Self-sign server certificate:\n    openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt\n    ```\n\n1. Server\n\n    ```sh\n    hypro-server -cert server.crt -key server.key\n    ```\n\n1. Client\n\n    ```sh\n    hypro -server example.com -cert server.crt -domain myapp.example.com -target http://localhost:8080\n    ```\n\n### Documentation\n\n\u003chttps://godoc.org/github.com/chuangbo/hypro\u003e\n\n### Build from source\n\n```sh\ngo install google.golang.org/protobuf/cmd/protoc-gen-go\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc\nmake\n```\n\n### License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2018-present, Chuangbo Li\n\n### Todos\n\n* Tests\n* Benchmarks\n* Reuse connections\n* Reconnect to the server\n* 12-factor\n* Graceful reload\n* Max connections\n* Record / Redo requests\n* Cluster\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuangbo%2Fhypro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchuangbo%2Fhypro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuangbo%2Fhypro/lists"}