inlets / inletsctl

Create inlets servers on the top cloud platforms
https://docs.inlets.dev/
MIT License
457 stars 63 forks source link
digitalocean hacktoberfest inlets inlets-operator inlets-pro packet scaleway

inletsctl - create inlets servers on the top cloud platforms

License: MIT Documentation Downloads Arm CI sponsored by Actuated

inletsctl automates the task of creating an exit-server (tunnel server) on public cloud infrastructure. The 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.

Conceptual diagram

Webhook example with Inlets OSS

Case-study with receiving webhooks from https://blog.alexellis.io/webhooks-are-great-when-you-can-get-them/

Use-cases:

Contents

Video demo

In the demo we:

asciicast

inletsctl is the quickest and easiest way to automate tunnels, whilst retaining complete control of your tunnel and data.

Features

How much will this cost?

The 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.

The 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

The 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.

See the pricing grid on the inlets-operator for a detailed breakdown.

inletsctl 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.

Install inletsctl

You can download the latest release from the releases page or use arkade:

# Install directly to /usr/local/bin/
curl -sLSf https://get.arkade.dev | sudo sh

# Install to local directory (for Windows users)
curl -sLSf https://get.arkade.dev | sh

The command can install inletsctl initially, and also update it later on:

arkade get inletsctl

Windows users are encouraged to use git bash to install the inletsctl binary.

Looking for documentation?

To learn about the various features of inletsctl and how to configure each cloud provisioner, head over to the docs:

Contributing & getting help

Before 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.

Then, try the troubleshooting guide in the official docs (link above).

Why do we need this tool?

Why 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.

Provisioners

inletsctl can provision exit-servers to the following providers: DigitalOcean, Scaleway, Google Cloud, AWS EC2, Azure, Linode, Hetzner, and Vultr.

An open-source Go package named 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.

type Provisioner interface {
    Provision(BasicHost) (*ProvisionedHost, error)
    Status(id string) (*ProvisionedHost, error)
    Delete(HostDeleteRequest) error
}

License

inletsctl is distributed under the MIT license. inlets-pro, which inletsctl uses is licensed under the inlets-pro End User License Agreement (EULA) and requires a personal or business subscription.