Skip to content

Commit 26f445e

Browse files
committed
Initial inlets cloud docs
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
1 parent 5c3079a commit 26f445e

File tree

3 files changed

+143
-0
lines changed

3 files changed

+143
-0
lines changed

docs/cloud/index.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Inlets Cloud
2+
3+
[Inlets Cloud](https://inlets.dev/cloud) is the quickest and easiest way to expose your local services to the Internet.
4+
5+
A tunnel server is set up for you in your preferred region, and then you can generate a CLI command or Kubernetes manifest to connect the tunnel to it.
6+
7+
Blog posts/tutorials:
8+
9+
* [Managed HTTPS tunnels in one-click with inlets cloud](https://inlets.dev/blog/tutorial/2025/04/01/one-click-hosted-http-tunnels.html)
10+
* [SSH Into Any Private Host With Inlets Cloud](https://inlets.dev/blog/tutorial/2024/10/17/ssh-with-inlets-cloud.html)
11+
12+
## Supported regions
13+
14+
Each Inlets Cloud region is an independent installation of [inlets-uplink](/uplink/index/) which is managed centrally from the Inlets Cloud dashboard.
15+
16+
The following regions are available:
17+
18+
* cambs1 - London, United Kingdom
19+
* us-east-1 - Virginia, USA
20+
* ap-southeast-1 - Singapore
21+
22+
If you'd like to request an additional region, send us a message on the Inlets Discord server.
23+
24+
## Types of tunnel
25+
26+
* HTTPS terminated tunnels (tryinlets.dev)
27+
28+
Try out a HTTPS tunnel with a random name generated for you under the `tryinlets.dev` domain.
29+
30+
Copy the CLI command or Kubernetes YAML and connect your tunnel.
31+
32+
You can then access your local service i.e. mkdocs via the generated URL i.e. `https://heavy-snow.cambs1.tryinlets.dev`.
33+
34+
* HTTPS terminated tunnels (Bring Your Own Domain)
35+
36+
First off, verify one of your domains (i.e. `example.com` by creating a TXT record as directed in the dashboard.
37+
38+
Next, deploy a HTTPS tunnel and specify your custom domain. Inlets Cloud will create a tunnel server and a TLS certificate for you. Then connect the client to the tunnel server using the connection string provided in the dashboard.
39+
40+
This is perfect for dashboards, web applications, OpenFaaS, blogs, and any other HTTP service you want to expose to the Internet.
41+
42+
* Ingress tunnels
43+
44+
Use an Ingress tunnel expose ports 80 and 443 with TCP pass-through to your local reverse proxy or Kubernetes Ingress Controller/Istio.
45+
46+
* SSH tunnels
47+
48+
You can expose one or more SSH services to the Internet using the `inlets-pro snimux` command and an Ingress Tunnel. This is useful for SSH access to your home network or a remote server.
49+
50+
Unlike traditional SSH tunnels, you can also implement an IP allow list in the config file for the `inlets-pro snimux server`.
51+
52+
## Proxy Protocol
53+
54+
When using the Ingress tunnel type, you can enable the [Proxy Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt). This is useful for services that need to know the original client IP address.
55+
56+
Whenever you enable the Proxy Protocol for a tunnel, you'll need to configure your tunneled service to accept the Proxy Protocol header.
57+
58+
Both v1 and v2 are supported.
59+
60+
## Get started with Inlets Cloud
61+
62+
An inlets subscription is a pre-requisite. If you don't have one yet, you can [sign-up here](https://inlets.dev/pricing/) on a monthly basis.
63+
64+
During beta, there is no additional charge or fee for using Inlets Cloud. You can use it to test the service and provide feedback.
65+
66+
Just [register](https://cloud.inlets.dev/register) with the same email you use for your inlets subscription and we will send you an invite.
67+
68+
You can log into the inlets cloud dashboard using a magic link sent to your email address.
69+
70+
## Comments, questions and suggestions
71+
72+
For any kind of feedback, please use the Inlets Discord server. You'll find a link in your Inlets Cloud dashboard.
73+

docs/cloud/security-groups.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Security Groups for Inlets Cloud
2+
3+
If you want to restrict access to your exposed services, you can set up a Security Group in the Inlets Cloud dashboard.
4+
5+
You can add IP addresses or CIDR ranges into a Security Group which will be used to filter incoming traffic to your tunnel server.
6+
7+
### Security Groups for dynamic IPs
8+
9+
If you want to put a dynamic IP address into the Security Group, then you can use the following script to update an existing group by API.
10+
11+
* Find the `PROJECT_ID` through the dashboard and update it in the script
12+
* Then take the `GROUP_NAME` from the address bar when viewing your given Security Group
13+
* Create a file called `token.txt` and put your API token in it. You can request the API token from the Inlets Discord server.
14+
15+
```bash
16+
#!/bin/bash
17+
18+
# File to store the last known IP
19+
IP_FILE=".last_known_ip"
20+
21+
# Get current IP
22+
CURRENT_IP=$(curl -s -f -L -S https://checkip.amazonaws.com)
23+
24+
# Exit if we couldn't get the IP
25+
if [ -z "$CURRENT_IP" ]; then
26+
echo "Failed to fetch current IP address"
27+
exit 1
28+
fi
29+
30+
# Check if we need to update
31+
if [ -f "$IP_FILE" ] && [ "$(cat $IP_FILE)" == "$CURRENT_IP" ]; then
32+
echo "IP hasn't changed. No update needed."
33+
exit 0
34+
fi
35+
36+
PROJECT_ID=1
37+
GROUP_NAME="dynamic-ip"
38+
TOKEN=$(cat ./token.txt)
39+
40+
# Update the security group
41+
if curl -i -f -s -S -L https://cloud.inlets.dev/api/security-groups/$GROUP_NAME?project=$PROJECT_ID \
42+
-X PATCH \
43+
-H "Content-Type: application/json" \
44+
-H "Authorization: Bearer $TOKEN" \
45+
--data-binary '{"allow": ["'"$CURRENT_IP"'"]}'; then
46+
47+
# Only store the IP if the update was successful
48+
echo "$CURRENT_IP" > "$IP_FILE"
49+
echo "Successfully updated IP to: $CURRENT_IP"
50+
else
51+
echo "Failed to update security group"
52+
exit 1
53+
fi
54+
```
55+
56+
You can create a cron expression on a Linux server using `crontab -e` to run this script every 5 minutes:
57+
58+
```bash
59+
*/5 * * * * /home/alex/update-security-group.sh
60+
```
61+
62+
This will check your current IP address and update the Security Group if it has changed.
63+
64+
**Important note on rate limiting**
65+
66+
The script will check your current IP address and update the Security Group if it has changed before making an API call.

mkdocs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ nav:
131131
- Monitor tunnels: uplink/monitoring-tunnels.md
132132
- REST API: uplink/rest-api.md
133133

134+
- Inlets Cloud:
135+
- Overview: cloud/index.md
136+
- Security Groups: cloud/security-groups.md
137+
134138
- Reference:
135139
- Overview: reference/index.md
136140
- Inlets Operator: reference/inlets-operator.md

0 commit comments

Comments
 (0)