{"id":23978619,"url":"https://github.com/simmsb/easy-expose","last_synced_at":"2025-02-24T18:54:11.113Z","repository":{"id":94007318,"uuid":"444666560","full_name":"simmsb/easy-expose","owner":"simmsb","description":"Quickly mint NFT(able)s port forwards remotely","archived":false,"fork":false,"pushed_at":"2022-01-05T04:45:43.000Z","size":10,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-07T08:19:31.396Z","etag":null,"topics":[],"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/simmsb.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":"2022-01-05T04:45:20.000Z","updated_at":"2024-08-20T18:42:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"9a20d9e8-7790-4c60-a2ee-652cb00d9555","html_url":"https://github.com/simmsb/easy-expose","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Feasy-expose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Feasy-expose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Feasy-expose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simmsb%2Feasy-expose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simmsb","download_url":"https://codeload.github.com/simmsb/easy-expose/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240540554,"owners_count":19817791,"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":"2025-01-07T08:18:59.222Z","updated_at":"2025-02-24T18:54:11.100Z","avatar_url":"https://github.com/simmsb.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Easy expose\n\nA really simple way to expose some service behind a NAT, similar to\n[rathole](https://github.com/rapiz1/rathole) and\n[frp](https://github.com/fatedier/frp).\n\nWARNING: This does not secure the channel, or even do NAT busting. You should\nalready have an overlay network that creates the secure channel, like tailscale,\nor even just a plain wireguard vpn.\n\nThe main benefit of this over rathole and such is that the latency should be the\nlowest possible, as the redirect is setup using nftables, rather than two\nuserspace programs.\n\n## Usage\n\n```\neasy-expose 0.1.0\nSet up a packet redirect on some remote host that forwards packets to you\n\nexample: `easy-expose test_redir tcp root@vps 9912 100.82.95.116:9912`\n\nUSAGE:\n    easy-expose [OPTIONS] \u003cIDENTIFIER\u003e \u003cMODE\u003e \u003cDESTINATION\u003e \u003cREMOTE\u003e \u003cLOCAL\u003e\n\nARGS:\n    \u003cIDENTIFIER\u003e\n            A unique name to identify this forwarding instance\n\n    \u003cMODE\u003e\n            What type of packet to forward\n\n            [possible values: udp, tcp]\n\n    \u003cDESTINATION\u003e\n            The remote host to expose on [format: a ssh destination]\n\n            nftables needs to be installed on this host, the user to connect as also needs\n            permission to run `nft` (aka: root)\n\n    \u003cREMOTE\u003e\n            The remote port to expose on\n\n    \u003cLOCAL\u003e\n            Where to forward packets to [format: \u003cip/hostname\u003e:\u003cport\u003e]\n\nOPTIONS:\n    -h, --help\n            Print help information\n\n    -i, --identity \u003cFILE\u003e\n            The ssh identity file to use\n\n    -V, --version\n            Print version information\n```\n\n\n## Docker usage\n\nYou can run this through the docker image: `ghcr.io/simmsb/easy-expose:latest`, for example:\n\n```sh\n$ docker run -v ~/.ssh/id_rsa:/id_rsa \\\n    ghcr.io/simmsb/easy-expose:latest \\\n        test_redir tcp root@\u003cip_addr\u003e 9912 100.82.95.116:9912 -i /id_rsa\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmsb%2Feasy-expose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimmsb%2Feasy-expose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimmsb%2Feasy-expose/lists"}