{"id":16590349,"url":"https://github.com/mrjosh/udp2grpc","last_synced_at":"2026-02-28T18:02:10.947Z","repository":{"id":62223788,"uuid":"558954869","full_name":"mrjosh/udp2grpc","owner":"mrjosh","description":"A Tunnel which Turns UDP Traffic into Encrypted gRPC/TCP Traffic, helps you Bypass UDP FireWalls(or Unstable UDP Environment)","archived":false,"fork":false,"pushed_at":"2022-11-15T06:24:50.000Z","size":154,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-10T18:46:58.350Z","etag":null,"topics":["grpc","udp","udp2grpc","udptogrpc","wireguard-over-tcp"],"latest_commit_sha":null,"homepage":"","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/mrjosh.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":"2022-10-28T17:15:38.000Z","updated_at":"2025-09-26T08:55:00.000Z","dependencies_parsed_at":"2023-01-23T05:45:40.195Z","dependency_job_id":null,"html_url":"https://github.com/mrjosh/udp2grpc","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mrjosh/udp2grpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjosh%2Fudp2grpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjosh%2Fudp2grpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjosh%2Fudp2grpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjosh%2Fudp2grpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrjosh","download_url":"https://codeload.github.com/mrjosh/udp2grpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrjosh%2Fudp2grpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29946463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T17:57:52.716Z","status":"ssl_error","status_checked_at":"2026-02-28T17:57:31.974Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["grpc","udp","udp2grpc","udptogrpc","wireguard-over-tcp"],"created_at":"2024-10-11T23:12:33.854Z","updated_at":"2026-02-28T18:02:10.902Z","avatar_url":"https://github.com/mrjosh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![License](https://img.shields.io/github/license/mrjosh/udp2grpc)\n\n\u003cpre align=\"center\"\u003e\n   __  ______  ____ ___         ____  ____  ______\n  / / / / __ \\/ __ \\__ \\ ____  / __ \\/ __ \\/ ____/\n / / / / / / / /_/ /_/ // __ \\/ /_/ / /_/ / /     \n/ /_/ / /_/ / ____/ __// /_/ / _, _/ ____/ /___   \n\\____/_____/_/   /____/\\__, /_/ |_/_/    \\____/   \n/____/\n\u003c/pre\u003e\n\n## ⚠️ This project is still in early development. ⚠️\n\n![image](image.jpg)\n\n## Inspiration\nThis project is inspired heavily from [udp2raw](https://github.com/wangyu-/udp2raw)\n\n## UDP2gRPC\nA Tunnel which Turns UDP Traffic into Encrypted gRPC/TCP Traffic,helps you Bypass UDP FireWalls(or Unstable UDP Environment)\nAssume your UDP is blocked or being QOS-ed or just poorly supported.\n\n## Docker image\nPull dockerhub image\n```bash\ndocker pull mrjoshlab/udp2grpc:latest\n```\n\n## Getting Started\n### Installing\nDownload binary release from https://github.com/mrjosh/udp2grpc/releases\n\n### Generate certificates for server and client\nAssume your server ip is 127.0.0.1 and your service domain is example.com\n```bash\n# generate for specific ip address\nutg gen-certificates --dir ./cert --ip 127.0.0.1\n\n# generate for specific domain name\nutg gen-certificates --dir ./cert --domain example.com\n\n# generate for both domain and ip\nutg gen-certificates --dir ./cert --domain example.com --ip 127.0.0.1\n```\n\n### Generate a new privatekey\n```bash\nutg genkey\n# output\n# R1kvISImDxxRS1AnMDUrSy0xVg9XFzhDCyszGSdAX04=\n```\n\n### Generate a new peer config\n```bash\nutg peer -n Joshua-MBP -r 127.0.0.1:51820\n```\noutput \n```\nserver side config:\n-------------------------------------------------------------\n...\npeers:\n- name: Joshua-MBP\n  privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM=\n  remote: 127.0.0.1:51820\n  available_from:\n  - 0.0.0.0/0\n...\n\nclient side config:\n-------------------------------------------------------------\nclient:\n  privatekey: LlRIVyEqVxtZORxdIgoiMTg6UxIsTCBYRC4/K0U4VjM=\n  remote: '{{ server ip address }}'\n  ...\n```\n\n### Config\nServer side config-file\n```yaml\nserver:\n\n  privatekey: \"{{ super-secure-server-private-key }}\"\n  listen: 0.0.0.0:52935\n  tls:\n    insecure: false\n    cert_file: ./cert/server.crt\n    key_file: ./cert/server.key\n\n  peers:\n  - name: \"PeerName\"\n    privatekey: \"{{ super-secure-client-private-key }}\"\n    remote: \"127.0.0.1:51820\"\n    available_from:\n      - 192.168.1.0/24\n```\n\nClient side config-file\n```yaml\nclient:\n  privatekey: \"{{ super-secure-client-private-key }}\"\n  listen: 0.0.0.0:51820\n  remote: 127.0.0.1:52935\n  persistentKeepalive: 30\n  tls:\n    insecure: false\n    cert_file: ./cert/server.crt\n```\n\n### Running\nAssume your server domain example.com and you have a service listening on udp port 51820.\nif you wish to run the server without tls, use the flag `--insecure` for client and server\n```bash\n# Run at server side:\nutg server --config-file server.yaml\n\n# Run at client side:\nutg client --config-file client.yaml\n```\n\n### Docker-Compose example\n```yaml\nversion: '3.7'\n\nservices:\n\n  # init-container\n  # generate certifiactes for server and client\n  gen-certificates:\n    image: mrjoshlab/udp2grpc:latest\n    command:\n      - \"gen-certificates\"\n      # server ip address\n      - \"--ip\"\n      - \"127.0.0.1\"\n      # certificates directory\n      - \"--dir\"\n      - \"/cert\"\n    volumes:\n      - \"$PWD/cert/:/cert\"\n\n  # udp2grpc server container\n  udp2grpc-server:\n    image: mrjoshlab/udp2grpc:latest\n    ports:\n      - \"52935:52935/tcp\"\n    command:\n      - \"server\"\n      - \"--config-file\"\n      - \"/config/server.yaml\"\n    volumes:\n      - \"$PWD/cert/:/cert\"\n      - \"$PWD/server.yaml:/config/server.yaml\"\n    restart: unless-stopped\n    depends_on:\n      gen-certificates:\n        condition: service_completed_successfully\n\n  # udp2grpc client container\n  udp2grpc-client:\n    image: mrjoshlab/udp2grpc:latest\n    ports:\n      - \"51820:51820/udp\"\n    command:\n      - \"client\"\n      - \"--config-file\"\n      - \"/config/client.yaml\"\n    volumes:\n      - \"$PWD/cert/server.crt:/cert/server.crt\"\n      - \"$PWD/client.yaml:/config/client.yaml\"\n    restart: unless-stopped\n    depends_on:\n      gen-certificates:\n        condition: service_completed_successfully\n```\n\n## Contributing\nThank you for considering contributing to UDP2gRPC project!\n\n## License\nThe UDP2gRPC is open-source software licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrjosh%2Fudp2grpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrjosh%2Fudp2grpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrjosh%2Fudp2grpc/lists"}