Skip to content

Commit 0d35526

Browse files
ZPain8464kenjenkins
authored andcommitted
Update desktop docs (#1374)
* updates desktop images and text * runs prettier * removes tabs, adds better images * fixes links * Update content/docs/capabilities/tcp/client.mdx Co-authored-by: Kenneth Jenkins <[email protected]> * Update content/docs/capabilities/tcp/client.mdx Co-authored-by: Kenneth Jenkins <[email protected]> * Update content/docs/capabilities/tcp/client.mdx Co-authored-by: Kenneth Jenkins <[email protected]> * adds changes based on feedback * runs prettier --------- Co-authored-by: Kenneth Jenkins <[email protected]>
1 parent 0b2af19 commit 0d35526

File tree

5 files changed

+58
-104
lines changed

5 files changed

+58
-104
lines changed

content/docs/capabilities/tcp/client.mdx

+49-101
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# cSpell:ignore windowscentral
33

44
title: Pomerium TCP Clients
5-
sidebar_label: Clients (Desktop / CLI)
5+
sidebar_label: Desktop & CLI Clients
66
lang: en-US
77
keywords:
88
[
@@ -18,25 +18,32 @@ sidebar_position: 0
1818

1919
import Tabs from '@theme/Tabs';
2020
import TabItem from '@theme/TabItem';
21-
import LongLivedConnections from '@site/content/docs/admonitions/_long-lived-connections.mdx';
2221

2322
# Pomerium Desktop and CLI Clients
2423

25-
Pomerium is capable of creating secure connections to services like SSH, Redis, and more by creating a TCP tunnel to the service with a local client. This article describes configuring a route to accept TCP connections, and using either the CLI or GUI client to connect to it.
24+
This document describes how to use Pomerium's Desktop and CLI clients to connect to TCP routes in Pomerium.
2625

27-
## Create a TCP Route
26+
:::info What's a TCP route?
2827

29-
1. Specify this new Route as a TCP Route by prefixing `tcp+` in the **From** field, along with a port suffix.
28+
A TCP route is for use with upstream services that don't speak HTTP — for example SSH, Redis, or MySQL. With a TCP route, the entire connection is proxied to the upstream service, rather than each individual request separately.
3029

31-
The port is not used to connect to the Pomerium Proxy service from the internet; this will always be port 443 (unless otherwise defined in `config.yaml`). Rather, the port defined in **From** is part of the mapping to the individual route. In this way, you can create multiple routes that share a DNS entry, differentiated by the port to determine which route they use.
30+
In Pomerium, TCP routes are denoted with a `tcp+` prefix in the route's **From** URL.
3231

33-
For example, suppose we have a server called `augur` running behind Pomerium that has a MySQL server and also listens for SSH connections. We can create routes for `tcp+https://augur.example.com:22` and `tcp+https://augur.example.com:3306`.
32+
:::
33+
34+
## Create a TCP route
3435

35-
1. The **To** field uses `tcp://` as a protocol, and specifies the address and port the service listens on.
36+
1. Specify this new Route as a TCP Route by prefixing `tcp+` in the **From** field, along with a port number
37+
1. Set the **To** field using `tcp://` as the scheme, along with the address and port that the upstream service is listening on
3638

37-
The example below demonstrates a route to the SSH service on the host running the Pomerium Core or Pomerium Enterprise service:
39+
The example below demonstrates a route to an SSH service on the host running Pomerium:
3840

3941
<Tabs>
42+
<TabItem value="Pomerium Enterprise" label="Pomerium Enterprise">
43+
44+
![Example TCP route for SSH](./img/tcp-ssh-route.png)
45+
46+
</TabItem>
4047
<TabItem value="Pomerium Core" label="Pomerium Core">
4148

4249
```yaml
@@ -49,116 +56,53 @@ The example below demonstrates a route to the SSH service on the host running th
4956
5057
```
5158
52-
</TabItem>
53-
<TabItem value="Pomerium Enterprise" label="Pomerium Enterprise">
54-
55-
![Example TCP route for SSH](./img/tcp-ssh-route.png)
56-
5759
</TabItem>
5860
</Tabs>
5961
60-
See the "Configure Routes" section of [TCP Support](/docs/capabilities/tcp#configure-routes) for more detailed information on TCP routes.
61-
62-
## TCP Client Software
63-
64-
You can connect to this route with either the Pomerium CLI or Pomerium Desktop client.
65-
66-
<Tabs>
67-
68-
<TabItem value="Pomerium Desktop" label="Pomerium Desktop">
69-
70-
### Install
71-
72-
Download the latest release from [GitHub](https://github.com/pomerium/desktop-client/releases).
73-
74-
- **Windows**: The installer `.exe` file will install and open the Desktop Client. Right click on the system tray icon to interact with it.
75-
- **Linux**: We provide Linux binaries as `.AppImage` files, which can be executed in place or managed with a tool like [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher). Interact with the client from the system tray icon.
76-
- **macOS**: Open the `dmg` and move the binary to **Applications**. Interact with the client from the system tray icon.
77-
78-
<details>
79-
<summary>Autostart Pomerium Desktop</summary>
80-
81-
If you want Pomerium Desktop to start automatically when you log in to your computer, follow the steps below for your operating system.
82-
83-
<Tabs>
84-
<TabItem value="windows" label="Windows">
85-
86-
#### Autostart for all users
87-
88-
Copy the shortcut for the Pomerium Desktop app into `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup`.
89-
90-
#### Autostart for your user
91-
92-
Copy the shortcut for the Pomerium Desktop app into `C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`, replacing `username` with your username.
62+
:::tip
9363
94-
---
95-
96-
Windows 11 also offers a GUI method, documented by [windowscentral.com](https://www.windowscentral.com/how-launch-apps-automatically-during-login-windows-11)
97-
98-
</TabItem>
99-
<TabItem value="mac" label="MacOS">
100-
101-
1. From **System Preferences**, select **Users & Groups**.
102-
103-
1. Click **Login Items** near the top, then the **+** button towards the bottom of the window.
104-
105-
1. Select Pomerium Desktop from the Applications folder.
106-
107-
</TabItem>
108-
<TabItem value="gnome" label="Linux (Gnome)">
109-
110-
The easiest way to autostart user applications in the Gnome Desktop Environment is by using the Tweaks application. Gnome documents this process well, so we won't replicate it here. See [Gnome's documentation](https://help.gnome.org/users/gnome-help/stable/shell-apps-auto-start.html) for more information.
111-
112-
</TabItem>
113-
<TabItem value="kde" label="Linux (KDE)">
114-
115-
KDE's documentation covers auto-starting applications well: see [System Settings/Autostart](https://userbase.kde.org/System_Settings/Autostart) from the KDE UsersBase Wiki for more information.
116-
117-
</TabItem>
118-
</Tabs>
119-
120-
</details>
64+
The port number in the route **From** URL is not used in the initial connection to Pomerium itself. This connection will still use port 443, unless you use a bastion host (see [**Advanced configuration**](#advanced-configuration) below).
12165
122-
### Add a Connection
66+
Rather, the port defined in **From** is part of the mapping to the individual route. In this way, you can create multiple routes that share a DNS entry, differentiated by the port to determine which route they use.
12367
124-
![A new connection to an SSH gateway](examples/img/desktop/demo-new-connection.png)
68+
For example, suppose we have a server called `augur` running behind Pomerium that has a MySQL server and also listens for SSH connections. We can create routes for `tcp+https://augur.example.com:22` and `tcp+https://augur.example.com:3306`.
12569

126-
**Name**: A local name for the route.
70+
:::
12771

128-
**Destination**: Matches the [From](/docs/reference/routes/from) value of the route, without the protocol. Always include the port specified in the route, and do not include the `https://` protocol.
72+
See the "Configure Routes" section of [TCP Support](/docs/capabilities/tcp#configure-routes) for more detailed information on TCP routes.
12973

130-
**Local Address**: The local address and port number from which to access the service locally. If left blank, the client will choose a random port to listen to on the loopback address.
74+
## Access TCP routes with a client
13175

132-
In most cases, you only need to specify the port (ex: `:2222`), and the client will listen on all available local addresses.
76+
You can connect to this route with either the Pomerium CLI or Pomerium Desktop client.
13377

134-
**Tags**: Use tags to sort and organize your TCP routes.
78+
### Desktop client steps
13579

136-
:::note Long-lived connections behavior
80+
If you haven't, install [Pomerium Desktop](/docs/deploy/clients/pomerium-desktop).
13781

138-
<LongLivedConnections />
82+
Then, add a connection by filling in the fields defined below:
13983

140-
:::
84+
- **Name**: A local name for the route
85+
- **Destination**: Matches the [From](/docs/reference/routes/from) value of the route, without the protocol. Always include the port specified in the route, and do not include the `https://` protocol.
86+
- **Local Address**: The local address and port number from which to access the service locally. If left blank, the client will choose a random port to listen to on the loopback address.
87+
- **Tags**: Customizable tags to sort and organize TCP routes
14188

142-
---
89+
![Adding a new connection in the Pomerium Desktop client](./examples/img/desktop/desktop-new-connection.png)
14390

14491
#### Advanced Settings
14592

146-
**Pomerium URL**: The Pomerium Proxy service address. This is required if the **Destination URL** can't be resolved from DNS or a local `hosts` entry, or if the Proxy service uses a non-standard port.
93+
- **Pomerium URL**: The Pomerium Proxy service address. This is required if the **Destination URL** can't be resolved from DNS or a local `hosts` entry, or if the Proxy service uses a non-standard port.
94+
- **Disable TLS Verification**: Allows untrusted certificates from the Pomerium gateway
95+
- **Client Certificates**: For routes that enforce [mTLS](/docs/concepts/mutual-auth), you can **set a client certificate manually** or automatically [**search the OS certificate store**](/docs/capabilities/tcp#client-certificates) for a trusted certificate (note: macOS and Windows only).
14796

148-
**Disable TLS Verification**: Allows untrusted certificates from the Pomerium gateway
97+
![Reviewing the Advanced Settings in the Pomerium Desktop client](./examples/img/desktop/advanced-settings.png)
14998

150-
**Client Certificate & Certificate Key File or Text**: For routes that require client certificates for [mTLS](/docs/concepts/mutual-auth.md), you can provide the certificate and key file to the Pomerium Desktop client.
99+
### Pomerium CLI steps
151100

152-
</TabItem>
153-
<TabItem value="Pomerium CLI" label="Pomerium CLI">
101+
If you haven't, install [Pomerium CLI](/docs/deploy/clients/pomerium-cli).
154102

155-
### Install
103+
Then, connect to a TCP route:
156104

157-
See the [Pomerium CLI](/docs/deploy/clients/pomerium-cli) page to learn how to install `pomerium-cli` in your environment.
158-
159-
### Connect to a TCP Route
160-
161-
1. Invoke `pomerium-cli` with the `tcp` option, and provide the route to your service (As defined in [`from`](/docs/reference/routes/from) in your Route specification).
105+
1. Invoke `pomerium-cli` with the `tcp` option, and provide the route to your service (as defined in [`from`](/docs/reference/routes/from) in your Route specification).
162106

163107
```shell-session
164108
$ pomerium-cli tcp ssh.localhost.pomerium.io:22
@@ -178,20 +122,24 @@ See the [Pomerium CLI](/docs/deploy/clients/pomerium-cli) page to learn how to i
178122
ssh 127.0.0.1 -p 2222
179123
```
180124

181-
1. When the connection starts, the cli will open your browser and direct you to your Identity Provider to authenticate your session. Once authenticated the connection will continue and you can close the browser window.
125+
1. When the connection starts, the CLI will open your browser and direct you to your Identity Provider to authenticate your session. Once authenticated, the connection will continue and you can close the browser window.
182126

183127
1. In this example, since we are using SSH we can consolidate the TCP and SSH connections into a single command:
184128

185129
```bash
186130
ssh -o ProxyCommand='pomerium-cli tcp --listen - %h:%p' ssh.localhost.pomerium.io
187131
```
188132

189-
</TabItem>
190-
</Tabs>
133+
:::info
191134

192-
For more examples and detailed usage information, see [TCP Support](/docs/capabilities/tcp)
135+
For more examples and detailed usage information, see the following docs:
136+
137+
- [**TCP Reference**](/docs/capabilities/tcp/reference)
138+
- [**Securing TCP-based Services**](/docs/guides/securing-tcp)
139+
140+
:::
193141

194-
## Advanced Configuration
142+
## Advanced configuration
195143

196144
If Pomerium is listening on a port other than `443` (set with the [`address` key](/docs/reference/address)), the full TCP URL can be specified with a bastion host:
197145

Loading
Binary file not shown.
Loading

content/docs/deploy/clients/pomerium-desktop.mdx

+9-3
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,22 @@ keywords:
2121
sidebar_position: 4
2222
---
2323

24-
# Pomerium Desktop (GUI)
24+
# Pomerium Desktop
2525

26-
Pomerium desktop (optional, optional, Pomerium is clientless for HTTP based protocols) does everything `pomerium-cli` does, but is geared towards users who prefer a graphical user interface. Functions include acting as an authentication helper for tools like [kubectl](/docs/deploy/k8s/configure.md) or TCP [based applications](/docs/capabilities/tcp/).
26+
Pomerium Desktop does everything `pomerium-cli` does, but is designed for users who prefer a graphical user interface.
27+
28+
Functions include acting as an authentication helper for tools like [kubectl](/docs/deploy/k8s/configure.md) or TCP [based applications](/docs/capabilities/tcp/).
2729

2830
- Supported Operating Systems: `linux`, `darwin`, `windows`,
2931
- Supported Architectures: `amd64`, `arm64`, `armv6`, `armv7`
3032

3133
## Packages
3234

33-
The Desktop Client is available from [GitHub](https://github.com/pomerium/desktop-client/releases) as an `exe`, `dmg`, and `AppImage`.
35+
Download the latest release from [GitHub](https://github.com/pomerium/desktop-client/releases).
36+
37+
- **Windows**: The installer `.exe` file will install and open the Desktop Client. Right click on the system tray icon to interact with it.
38+
- **Linux**: We provide Linux binaries as `.AppImage` files, which can be executed in place or managed with a tool like [AppImageLauncher](https://github.com/TheAssassin/AppImageLauncher). Interact with the client from the system tray icon.
39+
- **macOS**: Open the `dmg` and move the binary to **Applications**. Interact with the client from the system tray icon.
3440

3541
## Brew (OSX)
3642

0 commit comments

Comments
 (0)