{"id":13466728,"url":"https://github.com/inlets/inletsctl","last_synced_at":"2025-10-18T09:02:34.715Z","repository":{"id":35540417,"uuid":"218249412","full_name":"inlets/inletsctl","owner":"inlets","description":"Create inlets servers on the top cloud platforms","archived":false,"fork":false,"pushed_at":"2025-03-30T20:06:22.000Z","size":12601,"stargazers_count":473,"open_issues_count":15,"forks_count":60,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-14T19:59:38.208Z","etag":null,"topics":["digitalocean","hacktoberfest","inlets","inlets-operator","inlets-pro","packet","scaleway"],"latest_commit_sha":null,"homepage":"https://docs.inlets.dev/","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/inlets.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,"zenodo":null}},"created_at":"2019-10-29T09:25:31.000Z","updated_at":"2025-04-01T23:49:42.000Z","dependencies_parsed_at":"2023-02-17T04:00:44.588Z","dependency_job_id":"fdd345d5-9727-4599-8c42-f14dba2d129e","html_url":"https://github.com/inlets/inletsctl","commit_stats":null,"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlets%2Finletsctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlets%2Finletsctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlets%2Finletsctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inlets%2Finletsctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inlets","download_url":"https://codeload.github.com/inlets/inletsctl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337612,"owners_count":22054253,"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":["digitalocean","hacktoberfest","inlets","inlets-operator","inlets-pro","packet","scaleway"],"created_at":"2024-07-31T15:00:49.401Z","updated_at":"2025-10-18T09:02:29.693Z","avatar_url":"https://github.com/inlets.png","language":"Go","funding_links":[],"categories":["Go","HarmonyOS","\u003ca id=\"01e6651181d405ecdcd92a452989e7e0\"\u003e\u003c/a\u003e工具","hacktoberfest"],"sub_categories":["Windows Manager","\u003ca id=\"9d6789f22a280f5bb6491d1353b02384\"\u003e\u003c/a\u003e隧道\u0026\u0026穿透"],"readme":"# inletsctl - create inlets servers on the top cloud platforms\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation](https://godoc.org/github.com/inlets/inletsctl?status.svg)](http://godoc.org/github.com/inlets/inletsctl)\n![Downloads](https://img.shields.io/github/downloads/inlets/inletsctl/total) \u003ca href=\"https://actuated.dev/\"\u003e\u003cimg alt=\"Arm CI sponsored by Actuated\" src=\"https://docs.actuated.dev/images/actuated-badge.png\" width=\"120px\"\u003e\u003c/img\u003e\u003c/a\u003e\n\ninletsctl automates the task of creating an exit-server (tunnel server) on public cloud infrastructure.\nThe `create` command provisions a cheap cloud VM with a public IP and pre-installs inlets for you. You'll then get a connection string that you can use with the inlets client.\n\n**Conceptual diagram**\n\n![Webhook example with Inlets OSS](https://blog.alexellis.io/content/images/2019/09/inletsio--2-.png)\n\n*Case-study with receiving webhooks from https://blog.alexellis.io/webhooks-are-great-when-you-can-get-them/*\n\nUse-cases:\n\n* Setup L4 TCP and HTTPS tunnels for your local services using [inlets-pro](https://inlets.dev/) with `inletsctl create`\n* Create tunnels for use with Kubernetes clusters, create the tunnel and use it whenever you need it\n* Port-forward services your local Kubernetes cluster using `inletsctl kfwd`\n\n## Contents\n\n- [inletsctl - the fastest way to create self-hosted tunnels](#inletsctl---the-fastest-way-to-create-self-hosted-tunnels)\n  - [Contents](#contents)\n  - [Video demo](#video-demo)\n  - [Features](#features)\n  - [How much will this cost?](#how-much-will-this-cost)\n  - [Install `inletsctl`](#install-inletsctl)\n  - [Looking for documentation?](#looking-for-documentation)\n  - [Contributing \u0026 getting help](#contributing--getting-help)\n    - [Why do we need this tool?](#why-do-we-need-this-tool)\n    - [Provisioners](#provisioners)\n    - [Community support](#community-support)\n    - [License](#license)\n\n## Video demo\n\nIn the demo we:\n\n* Create a cloud host on DigitalOcean with a single command\n* Run a local Python HTTP server\n* Connect our `inlets-pro client`\n* Access the Python HTTP server via the DigitalOcean Public IP\n* Use the CLI to delete the host\n\n[![asciicast](https://asciinema.org/a/q8vqJ0Fwug47T62biscp7cJ5O.svg)](https://asciinema.org/a/q8vqJ0Fwug47T62biscp7cJ5O)\n\ninletsctl is the quickest and easiest way to automate tunnels, whilst retaining complete control of your tunnel and data.\n\n## Features\n\n* Provision hosts quickly using cloud-init with inlets pre-installed - `inletsctl create`\n* Delete hosts by ID or IP address - `inletsctl delete`\n* Automate port-forwarding from Kubernetes clusters with `inletsctl kfwd`\n\n## How much will this cost?\n\nThe `inletsctl create` command will provision a cloud host with the provider and region of your choice and then start running `inlets server`. The host is configured with the standard VM image for Ubuntu or Debian Linux and inlets is installed via userdata/cloud-init.\n\nThe [provision](https://github.com/inlets/inletsctl/tree/master/pkg/provision) package contains defaults for OS images to use and for cloud host plans and sizing. You'll find all available options on `inletsctl create --help`\n\nThe cost for cloud hosts varies depending on a number of factors such as the region, bandwidth used, and so forth. A rough estimation is that it could cost around 5 USD / month to host a VM on for DigitalOcean, or Scaleway. The VM is required to provide your public IP. Some hosting providers supply credits and a free-tier such as GCE and AWS.\n\nSee the pricing grid on the [inlets-operator](https://github.com/inlets/inlets-operator#provider-pricing) for a detailed breakdown.\n\ninletsctl does not automatically delete your exit nodes (read cloud hosts), so you'll need to do that in your dashboard or via `inletsctl delete` when you are done.\n\n## Install `inletsctl`\n\nYou can download the latest release from the [releases page](https://github.com/inlets/inletsctl/releases) or use [arkade](https://arkade.dev/):\n\n```bash\n# Install directly to /usr/local/bin/\ncurl -sLSf https://get.arkade.dev | sudo sh\n\n# Install to local directory (for Windows users)\ncurl -sLSf https://get.arkade.dev | sh\n```\n\nThe command can install inletsctl initially, and also update it later on:\n\n```bash\narkade get inletsctl\n```\n\nWindows users are encouraged to use [git bash](https://git-scm.com/downloads) to install the inletsctl binary.\n\n## Looking for documentation?\n\nTo learn about the various features of inletsctl and how to configure each cloud provisioner, head over to the docs:\n\n* [docs.inlets.dev](https://docs.inlets.dev/#/tools/inletsctl?id=inletsctl-reference-documentation) \n\n## Contributing \u0026 getting help\n\nBefore seeking support, make sure you have read the instructions correctly, and try to run through them a second or third time to see if you have missed anything.\n\nThen, try the troubleshooting guide in the official docs (link above).\n\n### Why do we need this tool?\n\nWhy is inletsctl a separate binary? This tool is shipped separately, so that the core tunnel binary does not become bloated. The EC2 and AWS SDKs for Golang are very heavy-weight and result in a binary of over 30MB vs the small and nimble inlets-pro binaries.\n\n### Provisioners\n\ninletsctl can provision exit-servers to the following providers: DigitalOcean, Scaleway, Google Cloud, AWS EC2, Azure, Linode, Hetzner, and Vultr.\n\nAn open-source Go package named [provision](https://github.com/inlets/cloud-provision) can be extended for each new provider. This code can be used outside of inletsctl by other projects wishing to create hosts and to run some scripts upon start-up via userdata.\n\n```go\ntype Provisioner interface {\n\tProvision(BasicHost) (*ProvisionedHost, error)\n\tStatus(id string) (*ProvisionedHost, error)\n\tDelete(HostDeleteRequest) error\n}\n```\n\n### License\n\ninletsctl is distributed under the MIT license. inlets-pro, which inletsctl uses is licensed under the [inlets-pro End User License Agreement (EULA)](https://github.com/inlets/inlets-pro/blob/master/EULA.md) and requires [a personal or business subscription](https://store.openfaas.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finlets%2Finletsctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finlets%2Finletsctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finlets%2Finletsctl/lists"}