Skip to content

Latest commit

 

History

History
146 lines (86 loc) · 7.93 KB

README-old.md

File metadata and controls

146 lines (86 loc) · 7.93 KB

inlets is a Cloud Native Tunnel written in Go

Expose your local endpoints to the Internet or within a remote network, without touching firewalls.

Build Status License: MIT Go Report Card Documentation GitHub All Releases

Follow @inletsdev on Twitter

English | 中文文档

Intro

inlets ® is how you connect services between different networks. You won't have to think about managing firewalls, NAT or VPNs again. Services can be tunnelled securely over a websocket and accessed on a remote network privately, or exposed on the Internet using an exit-server (5-10USD / mo).

Why do we need this project? Similar tools such as ngrok and Argo Tunnel from Cloudflare are closed-source, have limits built-in, can work out expensive, and have limited support for arm/arm64, Docker and Kubernetes. Ngrok's domain is also often banned by corporate firewall policies meaning it can be unusable. Other open-source tunnel tools are designed to only set up a single static tunnel.

With inlets you can set up your own self-hosted tunnel, copy over the static binary and start tunnelling traffic without any arbitrary limits or restrictions. When used with TLS, inlets can be used with most corporate HTTP proxies.

Conceptual diagram

Conceptual diagram for inlets

Do you use inlets? Sponsor the author

Alex is the maintainer of inlets, if you use the project in some way, support it by becoming a sponsor on GitHub.

Sponsor this project

You can become a sponsor as an individual or as a corporation, check out the tiers to find which is right for you.

Find out more now

About inlets OSS

inlets OSS uses a websocket to create a tunnel between a client and a server. The server is typically a machine with a public IP address, and the client is on a private network with no public address.

inlets OSS is for hobbyists only and has no guarantee or warranty of any kind.

For a commercially-supported solution, see inlets PRO, which has secure defaults and thorough testing.

Private or public tunnels?

  • A private tunnel is where you start a tunnel to a server and only expose it on the server's LAN address (this can replace the use-cases where you would use a VPN or Kubernetes federation)
  • A public tunnel is where you expose the private service to users via the server's public IP

Features

  • Tunnel HTTP or websockets
  • Expose a site on through the use of a DNS entry and a Host header
  • Upgrade to link encryption using TLS for websockets (wss://) with an external add-on or inlets PRO
  • Shared authentication token for the client and server
  • Automatic reconnects for when the connection drops

Distribution:

  • Source code only

inlets PRO ships binaries with support for ARM and Windows computers. There is also an official public Docker image available.

Going to production with inlets PRO

The following features / use-cases are covered by inlets PRO:

  • Tunnel L4 TCP traffic such as websockets, databases, reverse proxies, remote desktop, VNC and SSH
  • Tunnel L7 HTTPS / REST traffic - with automated Let's Encrypt support and multiple upstreams
  • Expose multiple ports from the same client - i.e. 80 and 443
  • Kubernetes helm charts, YAML and Operator
  • Automated TLS for the control-plane
  • Commercial services & support
  • Documentation, blog posts, tutorials and videos

inlets projects

inlets is a Cloud Native Tunnel and is listed on the Cloud Native Landscape under Service Proxies.

  • inlets PRO - Secure HTTP(s) and TCP tunnels with automated TLS encryption. Replaces inlets OSS
  • inlets-operator - Public IPs for your private Kubernetes Services and CRD using inlets PRO
  • inletsctl - The fastest way to create self-hosted exit-servers using inlets PRO
  • inlets - Cloud Native Tunnel for HTTP only - no tutorials, automation, TLS, TCP or Kubernetes integration available. Superseded by inlets PRO

inlets PRO

inlets PRO supersedes the original inlets OSS project and includes: commercial support, automation, secure defaults, and HTTPS/TCP tunnels.

In "A tale of two networks" Alex Ellis and Johan Siebens explore blog posts, use-cases and show demos of inlets PRO.

A tale of two networks - demos and use-cases for inlets tunnels

https://img.youtube.com/vi/AFMA1xA4zts/hqdefault.jpg

Quickstart tutorial

You can run inlets between any two computers with connectivity, these could be containers, VMs, bare metal or even "loop-back" on your own laptop.

Try the quickstart tutorial now on your local computer.

Documentation & tutorials

inlets and inlets PRO have their own documentation site:

Official docs: docs.inlets.dev

Looking for a Docker image? Try inlets PRO

What are people saying about inlets?

Read community tutorials, the launch posts on Hacker News, and send a PR if you have written about inlets or inlets PRO:

You can share about inlets using @inletsdev, #inletsdev, and https://inlets.dev.

Do you use inlets or inlets PRO?

Add an entry to the ADOPTERS.md file with your use-case.

See inlets PRO testimonials

Disclaimer

Developers wishing to use inlets within a corporate network are advised to seek approval from their administrators or management before using the tool. By downloading, using, or distributing inlets, you agree to the LICENSE terms & conditions. No warranty or liability is provided.

Development

See CONTRIBUTING.md

Other Kubernetes port-forwarding tooling

  • kubectl port-forward - built into the Kubernetes CLI, forwards a single port to the local computer.
  • inlets PRO - exit-server automation, multiple ports, TCP and automatic Let's Encrypt
  • kubefwd - Kubernetes utility to port-forward multiple services to your local computer.
  • kurun - Run main.go in Kubernetes with one command, also port-forward your app into Kubernetes.

inlets® is a registered trademark of OpenFaaS Ltd. All rights reserved, registered company in the UK: 11076587