{"id":15061737,"url":"https://github.com/dvasanth/portforward-over-libp2p","last_synced_at":"2025-08-01T19:39:39.234Z","repository":{"id":87082714,"uuid":"559509321","full_name":"dvasanth/portforward-over-libp2p","owner":"dvasanth","description":"HTTP/HTTPS tunnel proxy server over libp2p. Supports NAT traversal. Setup VPN within seconds. Access home server from anywhere.","archived":false,"fork":false,"pushed_at":"2024-08-14T01:12:17.000Z","size":59,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T08:21:21.177Z","etag":null,"topics":["ipfs","libp2p","nat","peer-to-peer","proxy-server","vpn"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvasanth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-10-30T10:45:53.000Z","updated_at":"2025-03-18T14:53:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"300e827a-2e0d-4a79-9342-6d1b86893914","html_url":"https://github.com/dvasanth/portforward-over-libp2p","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvasanth%2Fportforward-over-libp2p","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvasanth%2Fportforward-over-libp2p/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvasanth%2Fportforward-over-libp2p/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvasanth%2Fportforward-over-libp2p/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvasanth","download_url":"https://codeload.github.com/dvasanth/portforward-over-libp2p/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248191106,"owners_count":21062431,"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":["ipfs","libp2p","nat","peer-to-peer","proxy-server","vpn"],"created_at":"2024-09-24T23:24:23.715Z","updated_at":"2025-04-10T09:28:10.690Z","avatar_url":"https://github.com/dvasanth.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple Portforward  over libp2p (supports HTTP/HTTPS tunneling)\n\nThis example is extension over the original libp2p http-proxy sample to support HTTP/HTTPS tunneling over internet:\n\n![p2pproxy](https://user-images.githubusercontent.com/9625669/198875277-c957ac53-d8f4-4fa7-919c-e0659e6fc9ca.png)\n\n\nThis program tunnels HTTP/HTTPS traffic over libp2p between two machines. First machine is the sharer to which the HTTP/HTTPS traffic is sent from\nsecond machine. First is called as local \u0026 second one as the remote here. Local machine will acts as proxy server to the remote machine.\nUsing this program, you can access your home HTTP servers from a remote machine. You can also access internet using your hosted VPS server.\n\n## Build\n\nFrom the  directory run the following:\n\n```\n\u003e go build\n```\n\n## Usage\n\nFirst run the program as follows to the machine where you need to run the proxy server (first machine). You may need to allow udp port 12007 in (UFW) firewall to make this peer reachable over internet.\n\n```sh\n\u003e ./portforward\nThis host proxy server accessible over internet using peer ID\n \u003cfirst-machine-peer-id\u003e\n\n```\n\nThen run the program in second machine which will need to use the proxy server in above program.\n\n```\n\u003e .\\portforward.exe -d \u003cfirst-machine-peer-id-reacable-over internet\u003e\nChange Browser proxy setting to 127.0.0.1: 8080\n```\n\nNow you can see the proxy setting of your browser to 127.0.0.1:8080. All the requests will be sent to first machine \u0026 it will send back the response.\n\n## Security\nAbove steps will make the proxy server exposed to the p2p network. To allow the proxy server to be accessed by only known peers. You can add the second machine peer id to the accepted peer list. Here is the command to be run in first machine to accept only from selected peers:\n\n```\n\u003e ./portforward -a \u003csecond-machine-peer-id\u003e\nThis host proxy server accessible over internet using peer ID\n \u003cfirst-machine-peer-id\u003e\n```\n\n## Portforwarding for any network apps\nThis application enables port forwarding for local socket applications to remote machines, functioning similarly to SSH port forwarding. However, instead of using SSH, it establishes connections over a secure channel provided by libp2p. Just replace the local and remote ports matching to your application.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvasanth%2Fportforward-over-libp2p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvasanth%2Fportforward-over-libp2p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvasanth%2Fportforward-over-libp2p/lists"}