Cloud Native Tunnel

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, become a sponsor on GitHub.

Sponsor this project

Find out more now

About inlets

inlets uses a websocket to create 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 is considered production-ready, but you should do some testing before you depend on it. For a commercially-supported solution, see inlets PRO, which enables additional use-cases, has more thorough testing and secure defaults.

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
  • Client announces the tunnelled services to the server
  • Expose multiple sites on same port through the use of DNS entries 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:

  • Binaries and Docker images for multiple architecture - Intel and ARM
  • Kubernetes YAML files and Dockerfile
  • systemd unit file for client/server
  • Native Kubernetes Service and LoadBalancer integration with inlets-operator

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 and SSH
  • Tunnel L7 HTTPS / REST traffic - with automated Let's Encrypt support
  • Expose multiple ports from the same client - i.e. 80 and 443
  • Run a reverse proxy or Kubernetes IngressController directly on your host
  • 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 - Cloud Native Tunnel - TCP, HTTP & websockets with automated TLS encryption
  • inlets-operator - Public IPs for your private Kubernetes Services and CRD
  • inletsctl - The fastest way to create self-hosted exit-servers
  • inlets - Cloud Native Tunnel for HTTP only - configure TLS separately, not available for inletsctl or inlets-operator

Get inlets

You can install the CLI with a curl utility script, brew or by downloading the binary from the releases page. Once installed you'll get the inlets command.

Install the CLI

Note: inlets is made available free-of-charge, but you can support its ongoing development and sign up for updates through GitHub Sponsors 💪

Utility script with curl:

# Install to local directory
curl -sLS https://get.inlets.dev | sh

# Install to /usr/local/bin/
curl -sLS https://get.inlets.dev | sudo sh

Note: the brew distribution is maintained by the brew team, so it may lag a little behind the GitHub release.

Binaries are made available on the releases page for Linux (x86_64, armhf & arm64), Windows (experimental), and for Darwin (MacOS). You will also find SHA checksums available if you want to verify your download.

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

Using inlets

Video demo

Using inlets I was able to set up a public endpoint (with a custom domain name) for my JavaScript & Webpack Create React App.

https://img.youtube.com/vi/jrAqqe8N3q4/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

See also: advanced usage of inlets including Docker, Kubernetes, multiple-services, and binding to private IPs

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.

Sponsorship

You can become a GitHub Sponsor as an individual user or company.

Sponsor alex or Sponsor inlets

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

Owner
Similar Resources

HTTP tunnel over Websocket

HTTP tunnel over Websocket

WS PROXY This is a reverse HTTP proxy over websockets. The aim is to securely make call to internal APIs from outside. How does it works a WSP client

Nov 12, 2022

A cloud native distributed streaming network telemetry.

A cloud native distributed streaming network telemetry.

Panoptes Streaming Panoptes Streaming is a cloud native distributed streaming network telemetry. It can be installed as a single binary or clustered n

Sep 27, 2022

Golang client for NATS, the cloud native messaging system.

NATS - Go Client A Go client for the NATS messaging system. Installation # Go client go get github.com/nats-io/nats.go/ # Server go get github.com/na

Jan 4, 2023

The Cloud Native Application Proxy

The Cloud Native Application Proxy

Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your ex

Dec 30, 2022

MOSN is a cloud native proxy for edge or service mesh. https://mosn.io

MOSN is a cloud native proxy for edge or service mesh. https://mosn.io

中文 MOSN is a network proxy written in Golang. It can be used as a cloud-native network data plane, providing services with the following proxy functio

Dec 30, 2022

Provide cloud-edge message synergy solutions for companies and individuals.the cloud-edge message system based on NATS.

Swarm This project is a cloud-edge synergy solution based on NATS. quikly deploy cloud deploy on k8s #pull the project. git clone https://github.com/g

Jan 11, 2022

A simple TUN/TAP library written in native Go.

water water is a native Go library for TUN/TAP interfaces. water is designed to be simple and efficient. It wraps almost only syscalls and uses only G

Jan 7, 2023

🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀

🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀

Golang SSH Client. Fast and easy golang ssh client module. Goph is a lightweight Go SSH client focusing on simplicity! Installation ❘ Features ❘ Usage

Dec 24, 2022

grobotstxt is a native Go port of Google's robots.txt parser and matcher library.

grobotstxt grobotstxt is a native Go port of Google's robots.txt parser and matcher C++ library. Direct function-for-function conversion/port Preserve

Dec 27, 2022
Cloud Native Tunnel
Cloud Native Tunnel

inlets is a Cloud Native Tunnel written in Go Expose your local endpoints to the Internet or within a remote network, without touching firewalls. Foll

Jan 4, 2022
Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH.
Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH.

Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH. Single executable including both client and server. Written in Go (golang). Chisel is mainly useful for passing through firewalls, though it can also be used to provide a secure endpoint into your network.

Jan 1, 2023
A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。KCPプロトコルに基づく安全なトンネル。KCP 프로토콜을 기반으로 하는 보안 터널입니다。
A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。KCPプロトコルに基づく安全なトンネル。KCP 프로토콜을 기반으로 하는 보안 터널입니다。

Disclaimer: kcptun maintains a single website — github.com/xtaci/kcptun. Any websites other than github.com/xtaci/kcptun are not endorsed by xtaci. Re

Jan 9, 2023
Toy gRPC Tunnel over CloudFlare (Proof of Concept)
Toy gRPC Tunnel over CloudFlare (Proof of Concept)

gun You know what it means. Guide Server Go to your domain in CloudFlare. In "Network" tab, turn on gRPC.

Jan 6, 2023
Simple HTTP tunnel using SSH remote port forwarding

Simple HTTP tunnel using SSH remote port forwarding

Nov 18, 2022
A deployable proxy server and tunnel written in go

Tunnelify Tunnelify is a deployable proxy server and tunnel written in go Installing | Quickstart | Configuration Installing Direct download You can i

Dec 11, 2022
Clash - A rule-based tunnel in Go.
Clash - A rule-based tunnel in Go.

Clash A rule-based tunnel in Go. Features Local HTTP/HTTPS/SOCKS server with authentication support VMess, Shadowsocks, Trojan, Snell protocol support

Jan 5, 2023
A rule-based tunnel in Go with experimental features
A rule-based tunnel in Go with experimental features

Experimental-Clash A rule-based tunnel in Go with experimental features. Features Local HTTP/HTTPS/SOCKS server with authentication support VMess, Sha

Dec 25, 2022
An anonymous, encrypted Point-to-Point (Layer 3) tunnel between two peers.

NKN-Link An anonymous, encrypted Point-to-Point (Layer 3) tunnel between two peers. NKN-Link Table of Contents Preface Description Install Setup Run P

Dec 20, 2022
Gogrok is a self hosted, easy to use alternative to ngrok. It uses SSH as a base protocol, using channels and existing functionality to tunnel requests to an endpoint.

gogrok A simple, easy to use ngrok alternative (self hosted!) The server and client can also be easily embedded into your applications, see the 'serve

Dec 3, 2022