From 7565e323d69f18d40da081344737f0b2d620b482 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:19:46 -0400 Subject: [PATCH 01/26] starting on tunnels core feature docs --- docs/core-features/tunnels.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 docs/core-features/tunnels.md diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md new file mode 100644 index 00000000..cdcbef93 --- /dev/null +++ b/docs/core-features/tunnels.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 30 +--- + +# Tunnels + +`zrok` includes support for sharing low-level TCP and UDP network resources using the `tcpTunnel` and `udpTunnel` backend modes. From 9dc7455f7a9ebf24e4eff480759434e8febf82c6 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:35:11 -0400 Subject: [PATCH 02/26] tunnels update --- docs/core-features/tunnels.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md index cdcbef93..9091163c 100644 --- a/docs/core-features/tunnels.md +++ b/docs/core-features/tunnels.md @@ -1,5 +1,5 @@ --- -sidebar_position: 30 +sidebar_position: 25 --- # Tunnels From 877a0c6442870b3e497c66dabf4215e322193799 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:37:31 -0400 Subject: [PATCH 03/26] tunnels --- docs/core-features/tunnels.md | 104 ++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md index 9091163c..a865e535 100644 --- a/docs/core-features/tunnels.md +++ b/docs/core-features/tunnels.md @@ -5,3 +5,107 @@ sidebar_position: 25 # Tunnels `zrok` includes support for sharing low-level TCP and UDP network resources using the `tcpTunnel` and `udpTunnel` backend modes. + +As of version `v0.4`, `zrok` supports sharing TCP and UDP network resources using `private` sharing. + +To share a raw network resource using `zrok`, you'll want to use the `zrok share private` command from your `enable`-d environment, like this: + +``` +$ zrok share private --backend-mode tcpTunnel 192.168.9.1:22 +``` + +This will result in a share client starting, which looks like this: + +``` +╭───────────────────────────────────────────────────────────╮╭──────────────────────────╮ +│ access your share with: zrok access private 5adagwfl888k ││ [PRIVATE] [TCPTUNNEL] │ +╰───────────────────────────────────────────────────────────╯╰──────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ + +``` + +Then on the system where you want to access your shared resource (an SSH endpoint in this case), you'll need an `enable`-d `zrok` environment. Run the following command (shown in the banner at the top of the `zrok share` client above): + +``` +$ zrok access private 5adagwfl888k +``` + +This will start an `access` client on this system: +``` +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ +``` + +The `access` client shows the endpoint at the top where the service can be accessed. In this case, you'll want to connect your SSH client to `127.0.0.1:9191`. We'll just use `nc` (netcat) to access the shared TCP port: +``` +$ nc 127.0.0.1 9191 +SSH-2.0-OpenSSH_9.2 FreeBSD-openssh-portable-9.2.p1,1 +``` + +And both the `share` client and the `access` client show the traffic: + +``` +╭───────────────────────────────────────────────────────────╮╭──────────────────────────╮ +│ access your share with: zrok access private 5adagwfl888k ││ [PRIVATE] [TCPTUNNEL] │ +╰───────────────────────────────────────────────────────────╯╰──────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│Friday, 23-Jun-23 15:33:10 EDT ziti-edge-router │ +│connId=2147483648, logical=ziti- │ +│sdk[router=tls:ziti-lx:3022] -> ACCEPT 192.168.9.1:22 │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ +``` + +``` +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────────────────╮ +│Friday, 23-Jun-23 15:33:10 EDT 127.0.0.1:42312 -> ACCEPT 5adagwfl888k │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +╰───────────────────────────────────────────────────────────────────────────────────────╯ +``` + +Exit the `access` client to remove the local access to the shared TCP port. Exit the `share` client to disable further accesses to the shared resource. From 1467f4c939b88ce1549445b47eedbf843f024bce Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:40:00 -0400 Subject: [PATCH 04/26] also udp --- docs/core-features/tunnels.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md index a865e535..e7191c92 100644 --- a/docs/core-features/tunnels.md +++ b/docs/core-features/tunnels.md @@ -109,3 +109,5 @@ And both the `share` client and the `access` client show the traffic: ``` Exit the `access` client to remove the local access to the shared TCP port. Exit the `share` client to disable further accesses to the shared resource. + +For UDP network resources just use the `zrok share private --backend-mode udpTunnel` instead of `tcpTunnel`. From fd25be7c6155ec3576973e672543c3f77418da59 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:43:51 -0400 Subject: [PATCH 05/26] core features improvements --- docs/core-features/index.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/core-features/index.md b/docs/core-features/index.md index f0d4ec31..9fd98aa3 100644 --- a/docs/core-features/index.md +++ b/docs/core-features/index.md @@ -4,10 +4,9 @@ sidebar_position: 25 --- # Core Features -`zrok` was built for sharing resources. This doc is meant to explain the core features of `zrok` sharing -as well as other important features. +`zrok` was designed to make sharing local resources both secure and easy. In this section of the `zrok` documentation, we'll tour through all of the most important features. Sharing with `zrok` can be either [`public`](./sharing-public.md) or [`private`](./sharing-private.md). -Naturally, regular web-based resources can be shared but `zrok` also includes a [file sharing](./files.md) feature. +Naturally, regular web-based resources can be shared but `zrok` also includes support for sharing raw [TCP](./tunnels.md) and [UDP](./tunnels.md) network connections, and also includes a [website and file sharing](./files.md) feature. -Learn about `zrok` [hosting here](./hosting.md). \ No newline at end of file +Learn about `zrok` [hosting here](./hosting.md), including instructions on how to [install your own `zrok` instance](../guides/self-hosting/self_hosting_guide.md). \ No newline at end of file From dab82eab83031590886d31f2964f85cea91fd9f5 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:51:22 -0400 Subject: [PATCH 06/26] attic --- docs/{guides => _attic}/v0.4_limits.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{guides => _attic}/v0.4_limits.md (100%) diff --git a/docs/guides/v0.4_limits.md b/docs/_attic/v0.4_limits.md similarity index 100% rename from docs/guides/v0.4_limits.md rename to docs/_attic/v0.4_limits.md From 29c35f0fa66af5366d1aeffa92352feaf7659072 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 15:56:20 -0400 Subject: [PATCH 07/26] self hosting references --- docs/guides/self-hosting/self_hosting_guide.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/guides/self-hosting/self_hosting_guide.md b/docs/guides/self-hosting/self_hosting_guide.md index 0ee17a35..04e8ddaf 100644 --- a/docs/guides/self-hosting/self_hosting_guide.md +++ b/docs/guides/self-hosting/self_hosting_guide.md @@ -81,6 +81,14 @@ The `store` section defines the local `sqlite3` database used by the controller. The `ziti` section defines how the `zrok` controller should communicate with your OpenZiti installation. When using the OpenZiti quickstart, an administrative password will be generated; the `password` in the `ziti` stanza should reflect this password. +:::note + +Be sure to see the [reference configuration at `etc/ctrl.yml`](../../../etc/ctrl.yml) for the complete documentation of the current configuration file format for the `zrok` controller and service instance components. + +See the separate guides on [configuring metrics](../metrics-and-limits/configuring-metrics.md) and [configuring limits](../metrics-and-limits/configuring-limits.md) for details about both of these specialized areas of service instance configuration. + +::: + ## Environment Variables The `zrok` binaries are configured to work with the global `zrok.io` service, and default to using `api.zrok.io` as the endpoint for communicating with the service. From 0db020b9627b24fe8ef22099316d0e879e127f5f Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 16:09:06 -0400 Subject: [PATCH 08/26] private sharing rewrite --- docs/core-features/sharing-private.md | 28 +++++++++++++-------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/core-features/sharing-private.md b/docs/core-features/sharing-private.md index a756e97d..0373d9d1 100644 --- a/docs/core-features/sharing-private.md +++ b/docs/core-features/sharing-private.md @@ -4,31 +4,29 @@ sidebar_position: 0 # Shares - Private `zrok` was built to share and access digital resources. A `private` share allows a resource to be -shared through a __privately__ available endpoint. Sharing a resource with `private` is __a differentiating__ -feature of `zrok`. +shared through a __privately__ available endpoint. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. + +Sharing a resource with privately is one of the things that makes `zrok` unique. + +`zrok` also provides `public` sharing of resources with non-`zrok` users. Public resource sharing is limited to only resources that can be accessed over `HTTP` or `HTTPS`. + +Here's how private sharing works: # Peer to Peer ![zrok_public_share](../images/zrok_private_share.png) -A `private` share will require `zrok` to access the share and will also require a special shared -secret token. This access token, combined with the `zrok access` command will be how the private share is accessed. +`private` shares are accessed using the `zrok access` command, and require the accessing user to have a working (and `enable`-d) `zrok` account on the same service instance where the share was created. -Sharing something with `private` is similar to sharing something publicly. The main difference is -obvious, the shared resource is `private` and the share is __not__ open to the public. With `zrok`, you -can share resources on a private network without needing to expose the service to the internet. The share is not -through an obfuscated, difficult to guess url. Instead the sharing is accomplished using a secure, zero trust overlay -network provided by [OpenZiti](https://docs.openziti.io/docs/learn/introduction/). With this private, peer to peer -sharing model, there will never an attack surface available to the open internet. +The `private` share is identified by a _share token_, which uniquely identifies your share. The accessing user will use the share token, along with the `zrok access` command to create a local endpoint on their system, which let's them use the shared resource as if it were local to their system. + +`private` sharing does not require you to open any firewall ports or otherwise compromise the security of your local system; there is never an attack surface open to the public internet. The shared resource can be a development web server to share with friends and colleagues or perhaps, it could be a webhook from a server running in the cloud which has `zrok` running and has been instructed to `access` the private resource. What matters is that the access to the shared resource __should not__ be done in a public way, for more secure access. -Using `private` shares is easy and is accomplished using the `zrok share private` command. Run `zrok share private` -to see the usage output and to further learn how to use the command. +The peer-to-peer capabilities of `zrok` are an important property of the underlying [OpenZiti](https://docs.openziti.io/docs/learn/introduction/) network that `zrok` uses to provide connectivity between users and resources. -Unlike public shares, `private` shares do not need to be [reserved](./sharing-reserved.md) to be predictable. When sharing a -resource with `private`, the resource is shared at a known location. Resources shared with `private` do not -need to be `reserved`. \ No newline at end of file +Using `private` shares is easy and is accomplished using the `zrok share private` command. Run `zrok share private` to see the usage output and to further learn how to use the command. \ No newline at end of file From 1b65b6ba38f3a35bbb7a8730f2db95a4922341fc Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 16:13:43 -0400 Subject: [PATCH 09/26] private sharing tweaks --- docs/core-features/sharing-private.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/core-features/sharing-private.md b/docs/core-features/sharing-private.md index 0373d9d1..e97dffa8 100644 --- a/docs/core-features/sharing-private.md +++ b/docs/core-features/sharing-private.md @@ -6,7 +6,7 @@ sidebar_position: 0 `zrok` was built to share and access digital resources. A `private` share allows a resource to be shared through a __privately__ available endpoint. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. -Sharing a resource with privately is one of the things that makes `zrok` unique. +Peer-to-peer private resource sharing is one of the things that makes `zrok` unique. `zrok` also provides `public` sharing of resources with non-`zrok` users. Public resource sharing is limited to only resources that can be accessed over `HTTP` or `HTTPS`. @@ -18,14 +18,14 @@ Here's how private sharing works: `private` shares are accessed using the `zrok access` command, and require the accessing user to have a working (and `enable`-d) `zrok` account on the same service instance where the share was created. -The `private` share is identified by a _share token_, which uniquely identifies your share. The accessing user will use the share token, along with the `zrok access` command to create a local endpoint on their system, which let's them use the shared resource as if it were local to their system. +The `private` share is identified by a _share token_, which uniquely identifies your share. The accessing user will use the share token, along with the `zrok access` command to create a local endpoint on their system, which lets them use the shared resource as if it were local to their system. -`private` sharing does not require you to open any firewall ports or otherwise compromise the security of your local system; there is never an attack surface open to the public internet. +`private` sharing does not require you to open any firewall ports or otherwise compromise the security of your local system; there is never an attack surface open to the public internet. As soon as you terminate the `zrok share` process, you immediately terminate any possible access to your shared resource. The shared resource can be a development web server to share with friends and colleagues or perhaps, it could be a webhook from a server running in the cloud which has `zrok` running and has been instructed -to `access` the private resource. What matters is that the access to the shared resource __should not__ -be done in a public way, for more secure access. +to `access` the private resource. `zrok` can also share files, websites, and low-level TCP and UDP network connections using the `tunnel` backend. What matters is that the access to the shared resource is not +done in a public way, and can only be accessed by other `zrok` users that have access to your share token. The peer-to-peer capabilities of `zrok` are an important property of the underlying [OpenZiti](https://docs.openziti.io/docs/learn/introduction/) network that `zrok` uses to provide connectivity between users and resources. From c46e979d6e8b7e5325357b8395b81c7434c1b295 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 16:16:43 -0400 Subject: [PATCH 10/26] private sharing --- docs/core-features/sharing-private.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/core-features/sharing-private.md b/docs/core-features/sharing-private.md index e97dffa8..1fe1f3ad 100644 --- a/docs/core-features/sharing-private.md +++ b/docs/core-features/sharing-private.md @@ -3,8 +3,8 @@ sidebar_position: 0 --- # Shares - Private -`zrok` was built to share and access digital resources. A `private` share allows a resource to be -shared through a __privately__ available endpoint. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. +`zrok` was designed to securely share and access digital resources. A `private` share allows a resource to be +shared through a privately available endpoint local to the user accessing the resource. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. You are in control of who can access your `private` shares by sharing the the share token. Peer-to-peer private resource sharing is one of the things that makes `zrok` unique. From 41791a74a5d3a71498edf923520e2ac5ff85380b Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Fri, 23 Jun 2023 16:19:24 -0400 Subject: [PATCH 11/26] tcp and udp tunnels --- docs/core-features/tunnels.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md index e7191c92..e906eaed 100644 --- a/docs/core-features/tunnels.md +++ b/docs/core-features/tunnels.md @@ -2,7 +2,7 @@ sidebar_position: 25 --- -# Tunnels +# TCP and UDP Tunnels `zrok` includes support for sharing low-level TCP and UDP network resources using the `tcpTunnel` and `udpTunnel` backend modes. From b89a7f17091b5ddea898ab6415bc9ab4a9622fa6 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 11:45:00 -0400 Subject: [PATCH 12/26] private shares; tweaks --- docs/core-features/sharing-private.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docs/core-features/sharing-private.md b/docs/core-features/sharing-private.md index 1fe1f3ad..801fd05d 100644 --- a/docs/core-features/sharing-private.md +++ b/docs/core-features/sharing-private.md @@ -3,12 +3,12 @@ sidebar_position: 0 --- # Shares - Private -`zrok` was designed to securely share and access digital resources. A `private` share allows a resource to be -shared through a privately available endpoint local to the user accessing the resource. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. You are in control of who can access your `private` shares by sharing the the share token. +`zrok` was built to share and access digital resources. A `private` share allows a resource to be +accessed on another user's system as if it were local to them. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. You are in control of who can access your `private` shares by sharing the the share token. Peer-to-peer private resource sharing is one of the things that makes `zrok` unique. -`zrok` also provides `public` sharing of resources with non-`zrok` users. Public resource sharing is limited to only resources that can be accessed over `HTTP` or `HTTPS`. +`zrok` also provides `public` sharing of resources with non-`zrok` users. Public resource sharing is limited to only resources that can be accessed over `HTTP` or `HTTPS`. `private` sharing works with all of the resources types that `zrok` supports. Here's how private sharing works: @@ -16,17 +16,14 @@ Here's how private sharing works: ![zrok_public_share](../images/zrok_private_share.png) -`private` shares are accessed using the `zrok access` command, and require the accessing user to have a working (and `enable`-d) `zrok` account on the same service instance where the share was created. +`private` shares are accessed using the `zrok access` command, and require the accessing user to have a `zrok enable`-d account on the same service instance where the share was created. -The `private` share is identified by a _share token_, which uniquely identifies your share. The accessing user will use the share token, along with the `zrok access` command to create a local endpoint on their system, which lets them use the shared resource as if it were local to their system. +The `private` share is identified by a _share token_. The accessing user will use the share token, along with the `zrok access` command to create a local endpoint on their system, which lets them use the shared resource as if it were local to their system. -`private` sharing does not require you to open any firewall ports or otherwise compromise the security of your local system; there is never an attack surface open to the public internet. As soon as you terminate the `zrok share` process, you immediately terminate any possible access to your shared resource. +`zrok` does not require you to open any firewall ports or otherwise compromise the security of your local system; there is never an attack surface open to the public internet. As soon as you terminate the `zrok share` process, you immediately terminate any possible access to your shared resource. -The shared resource can be a development web server to share with friends and colleagues or perhaps, -it could be a webhook from a server running in the cloud which has `zrok` running and has been instructed -to `access` the private resource. `zrok` can also share files, websites, and low-level TCP and UDP network connections using the `tunnel` backend. What matters is that the access to the shared resource is not -done in a public way, and can only be accessed by other `zrok` users that have access to your share token. +The shared resource can be a development web server to share with friends and colleagues, a webhook from a server running in the cloud which has `zrok` running and has been instructed to `access` the private resource. `zrok` can also share files, websites, and low-level TCP and UDP network connections using the `tunnel` backend. What matters is that the access to the shared resource is not done in a public way, and can only be accessed by other `zrok` users that have access to your share token. The peer-to-peer capabilities of `zrok` are an important property of the underlying [OpenZiti](https://docs.openziti.io/docs/learn/introduction/) network that `zrok` uses to provide connectivity between users and resources. -Using `private` shares is easy and is accomplished using the `zrok share private` command. Run `zrok share private` to see the usage output and to further learn how to use the command. \ No newline at end of file +Creating `private` shares is easy and is accomplished using the `zrok share private` command. Run `zrok share private` to see the usage output and to further learn how to use the command. \ No newline at end of file From bdf684b3893b5d1080ff10ff8753f7e0879eb528 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 11:52:51 -0400 Subject: [PATCH 13/26] public shares; tweaks --- docs/core-features/sharing-public.md | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/docs/core-features/sharing-public.md b/docs/core-features/sharing-public.md index d3eeb55f..876cbc22 100644 --- a/docs/core-features/sharing-public.md +++ b/docs/core-features/sharing-public.md @@ -3,21 +3,14 @@ sidebar_position: 10 --- # Shares - Public -`zrok` was built to share and access digital resources. a `public` share allows something to be shared through -a publicly available endpoint. +`zrok` supports `public` sharing for web-based (HTTP and HTTPS) resources. These resources are easily shared with the general internet through public access points. -## Public Sharing +## Peer to Public ![zrok_public_share](../images/zrok_public_share.png) -Sharing something with `public` is useful when the person or service accessing the thing being shared doesn't -have `zrok` running locally and can't make use of the `private` sharing mode built into `zrok`. This could be -a development web server to share with friends and colleagues, or perhaps a webhook from a -server running in the cloud which can't have `zrok` installed onto it. What matters is that the access to the -shared resource needs to be done in a public way, generally for easy access. +`public` sharing is most useful when the person or service accessing your resources does not have `zrok` running locally and cannot make use of the `private` sharing mode built into `zrok`. Many users share development web servers, webhooks, and other HTTP/HTTPS resources. -Using `public` shares is easy and is accomplished using the `zrok share public` command. Run `zrok share public` -to see the usage output and to further learn how to use the command. +As with `private` sharing, `public` sharing does not require you to open any firewall ports or otherwise compromise the security of your local environments. A `public` share goes away as soon as you terminate the `zrok share` command. -Unless `reserved` (see [Sharing - Reserved](./sharing-reserved.md), all 'public' shares are ephemeral. When the -sharing is stopped, the shared url will be reclaimed. \ No newline at end of file +Using `public` shares is easy and is accomplished using the `zrok share public` command. Run `zrok share public` to see the command-line help and to learn how to use `public` shares. \ No newline at end of file From 0f2ea4d5107ab5bc5b7c313344dc1a16c629c48a Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 12:00:06 -0400 Subject: [PATCH 14/26] reserved shares --- docs/core-features/sharing-reserved.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/core-features/sharing-reserved.md b/docs/core-features/sharing-reserved.md index b111d12d..b9a786cd 100644 --- a/docs/core-features/sharing-reserved.md +++ b/docs/core-features/sharing-reserved.md @@ -3,9 +3,12 @@ sidebar_position: 10 --- # Shares - Reserved -`zrok` was built to share and access digital resources. A `reserved` share allows the user to have a reliable, -public, persistent shared url. (the share name not ephemeral, it is `reserved`). This means that the share -will be able to be used and regardless of how many times the resource is shared. This is useful when the -url must be known. +By default a `public` or `private` share is allocated a _share token_ when you run the `zrok share` command. The `zrok share` command is the bridge between your local environment and the users you are sharing with. When you terminate the `zrok share`, the bridge is eliminated and the _share token_ is deleted. If you run `zrok share` again, you will be allocated a brand new _share token_. -Use the `zrok reserve` command to create a reserved share. +You can use a `reserved` share to persist your _share token_ across multiple runs of the `zrok share` bridge. When you use a `reserved` share, the share token will not be deleted between multiple runs of `zrok share`. + +To use a `reserved` share, you will first run the `zrok reserve` command to create the reserved share (see `zrok reserve --help` for details). Once you've created your `reserved` share, you will use the `zrok share reserved` command (see `--help` for details) to run the bridge for the shared resource. + +This pattern works for both `public` and `private` shares, and for all resource types supported by `zrok`. + +To delete your `reserved` share use the `zrok release` command. From 5f9ac52a7f93c4d53cf8b2313ccd6ef329e515ae Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 12:06:33 -0400 Subject: [PATCH 15/26] names --- docs/core-features/sharing-private.md | 2 +- docs/core-features/sharing-public.md | 2 +- docs/core-features/sharing-reserved.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/core-features/sharing-private.md b/docs/core-features/sharing-private.md index 801fd05d..642c22ae 100644 --- a/docs/core-features/sharing-private.md +++ b/docs/core-features/sharing-private.md @@ -1,7 +1,7 @@ --- sidebar_position: 0 --- -# Shares - Private +# Private Shares `zrok` was built to share and access digital resources. A `private` share allows a resource to be accessed on another user's system as if it were local to them. Privately shared resources can only be accessed by another `zrok` user who has the details of your unique share. You are in control of who can access your `private` shares by sharing the the share token. diff --git a/docs/core-features/sharing-public.md b/docs/core-features/sharing-public.md index 876cbc22..fc403bbc 100644 --- a/docs/core-features/sharing-public.md +++ b/docs/core-features/sharing-public.md @@ -1,7 +1,7 @@ --- sidebar_position: 10 --- -# Shares - Public +# Public Shares `zrok` supports `public` sharing for web-based (HTTP and HTTPS) resources. These resources are easily shared with the general internet through public access points. diff --git a/docs/core-features/sharing-reserved.md b/docs/core-features/sharing-reserved.md index b9a786cd..04f8a145 100644 --- a/docs/core-features/sharing-reserved.md +++ b/docs/core-features/sharing-reserved.md @@ -1,7 +1,7 @@ --- sidebar_position: 10 --- -# Shares - Reserved +# Reserved Shares By default a `public` or `private` share is allocated a _share token_ when you run the `zrok share` command. The `zrok share` command is the bridge between your local environment and the users you are sharing with. When you terminate the `zrok share`, the bridge is eliminated and the _share token_ is deleted. If you run `zrok share` again, you will be allocated a brand new _share token_. From 6f53e43238920dda596bfbf21edc28f524ef8f53 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 12:48:20 -0400 Subject: [PATCH 16/26] tweaks --- docs/core-features/sharing-reserved.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/core-features/sharing-reserved.md b/docs/core-features/sharing-reserved.md index 04f8a145..ee28c9c1 100644 --- a/docs/core-features/sharing-reserved.md +++ b/docs/core-features/sharing-reserved.md @@ -3,7 +3,7 @@ sidebar_position: 10 --- # Reserved Shares -By default a `public` or `private` share is allocated a _share token_ when you run the `zrok share` command. The `zrok share` command is the bridge between your local environment and the users you are sharing with. When you terminate the `zrok share`, the bridge is eliminated and the _share token_ is deleted. If you run `zrok share` again, you will be allocated a brand new _share token_. +By default a `public` or `private` share is assigned a _share token_ when you create a share using the `zrok share` command. The `zrok share` command is the bridge between your local environment and the users you are sharing with. When you terminate the `zrok share`, the bridge is eliminated and the _share token_ is deleted. If you run `zrok share` again, you will be allocated a brand new _share token_. You can use a `reserved` share to persist your _share token_ across multiple runs of the `zrok share` bridge. When you use a `reserved` share, the share token will not be deleted between multiple runs of `zrok share`. From 98c79845defa97dbe6d07b8cc7621a67dc333c91 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 12:57:04 -0400 Subject: [PATCH 17/26] proxy --- docs/core-features/files.md | 2 +- docs/core-features/http.md | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 docs/core-features/http.md diff --git a/docs/core-features/files.md b/docs/core-features/files.md index 070acb86..598c2f7b 100644 --- a/docs/core-features/files.md +++ b/docs/core-features/files.md @@ -1,7 +1,7 @@ --- sidebar_position: 30 --- -# File Sharing +# Web and File Sharing With `zrok` it is possible to share files quickly and easily as well. To share files using `zrok` use the `--backend-mode web`, for example: `zrok share private . --backend-mode web`. diff --git a/docs/core-features/http.md b/docs/core-features/http.md new file mode 100644 index 00000000..b3e9ea56 --- /dev/null +++ b/docs/core-features/http.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 22 +--- + +# HTTP and HTTPS Endpoints + +`zrok` can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you will use the `zrok share` command using the `--backend-mode proxy` flag. + +The `--backend-mode proxy` is the default backend mode, so if you do not specify a `--backend-mode` you will get the `proxy` mode by default. + +If you have a web server running on `localhost` that you want to expose to other users using `zrok`, you can execute a command like the following: + +``` +$ zrok share public localhost:8080 +``` +When you execute this command, you'll get a `zrok` bridge like the following: + +``` +╭───────────────────────────────────────────────╮╭──────────────────────────╮ +│ http://0635uf7slmbu.share.zrok.io ││ [PUBLIC] [PROXY] │ +╰───────────────────────────────────────────────╯╰──────────────────────────╯ +╭───────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +│ │ +╰───────────────────────────────────────────────────────────────────────────╯ +``` + +The URL shown at the top of the bridge shows the address where you can access your `public` share. + +Hit `CTRL-C` or `q` in the bridge to exit it and delete the `public` share. \ No newline at end of file From 775566f1defe65127c6fdd8c60e058b6f87da456 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:00:23 -0400 Subject: [PATCH 18/26] naming --- docs/core-features/files.md | 2 +- docs/core-features/http.md | 2 +- docs/core-features/tunnels.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/core-features/files.md b/docs/core-features/files.md index 598c2f7b..cca0b7ee 100644 --- a/docs/core-features/files.md +++ b/docs/core-features/files.md @@ -1,7 +1,7 @@ --- sidebar_position: 30 --- -# Web and File Sharing +# Sharing Websites and Files With `zrok` it is possible to share files quickly and easily as well. To share files using `zrok` use the `--backend-mode web`, for example: `zrok share private . --backend-mode web`. diff --git a/docs/core-features/http.md b/docs/core-features/http.md index b3e9ea56..6470dae1 100644 --- a/docs/core-features/http.md +++ b/docs/core-features/http.md @@ -2,7 +2,7 @@ sidebar_position: 22 --- -# HTTP and HTTPS Endpoints +# Sharing HTTP Servers `zrok` can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you will use the `zrok share` command using the `--backend-mode proxy` flag. diff --git a/docs/core-features/tunnels.md b/docs/core-features/tunnels.md index e906eaed..62bd4fd5 100644 --- a/docs/core-features/tunnels.md +++ b/docs/core-features/tunnels.md @@ -2,7 +2,7 @@ sidebar_position: 25 --- -# TCP and UDP Tunnels +# Sharing TCP and UDP Servers `zrok` includes support for sharing low-level TCP and UDP network resources using the `tcpTunnel` and `udpTunnel` backend modes. From e0ebe53d4259ad9954c105c2d277817ad6379a43 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:01:12 -0400 Subject: [PATCH 19/26] core features -> concepts --- docs/{core-features => concepts}/files.md | 0 docs/{core-features => concepts}/hosting.md | 0 docs/{core-features => concepts}/http.md | 0 docs/{core-features => concepts}/index.md | 2 +- docs/{core-features => concepts}/opensource.md | 0 docs/{core-features => concepts}/sharing-private.md | 0 docs/{core-features => concepts}/sharing-public.md | 0 docs/{core-features => concepts}/sharing-reserved.md | 0 docs/{core-features => concepts}/tunnels.md | 0 9 files changed, 1 insertion(+), 1 deletion(-) rename docs/{core-features => concepts}/files.md (100%) rename docs/{core-features => concepts}/hosting.md (100%) rename docs/{core-features => concepts}/http.md (100%) rename docs/{core-features => concepts}/index.md (96%) rename docs/{core-features => concepts}/opensource.md (100%) rename docs/{core-features => concepts}/sharing-private.md (100%) rename docs/{core-features => concepts}/sharing-public.md (100%) rename docs/{core-features => concepts}/sharing-reserved.md (100%) rename docs/{core-features => concepts}/tunnels.md (100%) diff --git a/docs/core-features/files.md b/docs/concepts/files.md similarity index 100% rename from docs/core-features/files.md rename to docs/concepts/files.md diff --git a/docs/core-features/hosting.md b/docs/concepts/hosting.md similarity index 100% rename from docs/core-features/hosting.md rename to docs/concepts/hosting.md diff --git a/docs/core-features/http.md b/docs/concepts/http.md similarity index 100% rename from docs/core-features/http.md rename to docs/concepts/http.md diff --git a/docs/core-features/index.md b/docs/concepts/index.md similarity index 96% rename from docs/core-features/index.md rename to docs/concepts/index.md index 9fd98aa3..3f49930b 100644 --- a/docs/core-features/index.md +++ b/docs/concepts/index.md @@ -2,7 +2,7 @@ sidebar_title: Core Features sidebar_position: 25 --- -# Core Features +# Concepts `zrok` was designed to make sharing local resources both secure and easy. In this section of the `zrok` documentation, we'll tour through all of the most important features. diff --git a/docs/core-features/opensource.md b/docs/concepts/opensource.md similarity index 100% rename from docs/core-features/opensource.md rename to docs/concepts/opensource.md diff --git a/docs/core-features/sharing-private.md b/docs/concepts/sharing-private.md similarity index 100% rename from docs/core-features/sharing-private.md rename to docs/concepts/sharing-private.md diff --git a/docs/core-features/sharing-public.md b/docs/concepts/sharing-public.md similarity index 100% rename from docs/core-features/sharing-public.md rename to docs/concepts/sharing-public.md diff --git a/docs/core-features/sharing-reserved.md b/docs/concepts/sharing-reserved.md similarity index 100% rename from docs/core-features/sharing-reserved.md rename to docs/concepts/sharing-reserved.md diff --git a/docs/core-features/tunnels.md b/docs/concepts/tunnels.md similarity index 100% rename from docs/core-features/tunnels.md rename to docs/concepts/tunnels.md From 4abc4321d4c4ba244bafc5a5b6d2498e013cc21e Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:04:48 -0400 Subject: [PATCH 20/26] concepts --- docs/getting-started.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 35ba9b9b..7ab2fe79 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -7,8 +7,8 @@ sidebar_position: 0 As of version `v0.4.0`, `zrok` provides the ability to: -* share resources [publicly](./core-features/sharing-public.md), similar to other distributed reverse proxies; this allows you to easily expose your private HTTP/S resources to the public internet without changing your network security -* share resources [privately](./core-features/sharing-private.md); private sharing uses peer-to-peer connectivity between two parties by leveraging the OpenZiti overlay. We believe the private sharing offered by `zrok` provides a unique level of security and privacy for this type of sharing. +* share resources [publicly](./concepts/sharing-public.md), similar to other distributed reverse proxies; this allows you to easily expose your private HTTP/S resources to the public internet without changing your network security +* share resources [privately](./concepts/sharing-private.md); private sharing uses peer-to-peer connectivity between two parties by leveraging the OpenZiti overlay. We believe the private sharing offered by `zrok` provides a unique level of security and privacy for this type of sharing. As of version `v0.4.0`, `zrok` allows sharing these kinds of resources: From c02b1016b8c4ca8f10c3e91ad30f264f08ffea28 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:11:29 -0400 Subject: [PATCH 21/26] better screenies --- docs/concepts/tunnels.md | 102 ++++++++++++++------------------------- 1 file changed, 37 insertions(+), 65 deletions(-) diff --git a/docs/concepts/tunnels.md b/docs/concepts/tunnels.md index 62bd4fd5..ac2bbc36 100644 --- a/docs/concepts/tunnels.md +++ b/docs/concepts/tunnels.md @@ -17,23 +17,15 @@ $ zrok share private --backend-mode tcpTunnel 192.168.9.1:22 This will result in a share client starting, which looks like this: ``` -╭───────────────────────────────────────────────────────────╮╭──────────────────────────╮ -│ access your share with: zrok access private 5adagwfl888k ││ [PRIVATE] [TCPTUNNEL] │ -╰───────────────────────────────────────────────────────────╯╰──────────────────────────╯ -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ - +╭───────────────────────────────────────────────────────────╮╭────────────────────╮ +│ access your share with: zrok access private 5adagwfl888k ││[PRIVATE][TCPTUNNEL]│ +╰───────────────────────────────────────────────────────────╯╰────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────╯ ``` Then on the system where you want to access your shared resource (an SSH endpoint in this case), you'll need an `enable`-d `zrok` environment. Run the following command (shown in the banner at the top of the `zrok share` client above): @@ -44,22 +36,15 @@ $ zrok access private 5adagwfl888k This will start an `access` client on this system: ``` -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ +╰─────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────╯ ``` The `access` client shows the endpoint at the top where the service can be accessed. In this case, you'll want to connect your SSH client to `127.0.0.1:9191`. We'll just use `nc` (netcat) to access the shared TCP port: @@ -71,41 +56,28 @@ SSH-2.0-OpenSSH_9.2 FreeBSD-openssh-portable-9.2.p1,1 And both the `share` client and the `access` client show the traffic: ``` -╭───────────────────────────────────────────────────────────╮╭──────────────────────────╮ -│ access your share with: zrok access private 5adagwfl888k ││ [PRIVATE] [TCPTUNNEL] │ -╰───────────────────────────────────────────────────────────╯╰──────────────────────────╯ -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│Friday, 23-Jun-23 15:33:10 EDT ziti-edge-router │ -│connId=2147483648, logical=ziti- │ -│sdk[router=tls:ziti-lx:3022] -> ACCEPT 192.168.9.1:22 │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ +╭──────────────────────────────────────────────────────────╮╭─────────────────────╮ +│ access your share with: zrok access private 5adagwfl888k ││[PRIVATE] [TCPTUNNEL]│ +╰──────────────────────────────────────────────────────────╯╰─────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│Friday, 23-Jun-23 15:33:10 EDT ziti-edge-router │ +│connId=2147483648, logical=ziti- │ +│sdk[router=tls:ziti-lx:3022] -> ACCEPT 192.168.9.1:22 │ +│ │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────╯ ``` ``` -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ -╭───────────────────────────────────────────────────────────────────────────────────────╮ -│Friday, 23-Jun-23 15:33:10 EDT 127.0.0.1:42312 -> ACCEPT 5adagwfl888k │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -╰───────────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│ tcp://127.0.0.1:9191 -> 5adagwfl888k │ +╰─────────────────────────────────────────────────────────────────────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│Friday, 23-Jun-23 15:33:10 EDT 127.0.0.1:42312 -> ACCEPT 5adagwfl888k │ +│ │ +│ │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────╯ ``` Exit the `access` client to remove the local access to the shared TCP port. Exit the `share` client to disable further accesses to the shared resource. From 061fb697e9372b79524ea765bc30313122bca7dd Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:15:18 -0400 Subject: [PATCH 22/26] better screenie --- docs/concepts/http.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/docs/concepts/http.md b/docs/concepts/http.md index 6470dae1..3145e98a 100644 --- a/docs/concepts/http.md +++ b/docs/concepts/http.md @@ -16,18 +16,15 @@ $ zrok share public localhost:8080 When you execute this command, you'll get a `zrok` bridge like the following: ``` -╭───────────────────────────────────────────────╮╭──────────────────────────╮ -│ http://0635uf7slmbu.share.zrok.io ││ [PUBLIC] [PROXY] │ -╰───────────────────────────────────────────────╯╰──────────────────────────╯ -╭───────────────────────────────────────────────────────────────────────────╮ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -│ │ -╰───────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────────────────────────────────────────────╮╭────────────────╮ +│ http://cht7gj4g5pjf.share.zrok.io ││[PUBLIC] [PROXY]│ +╰───────────────────────────────────────────────────────────────╯╰────────────────╯ +╭─────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ │ +│ │ +│ │ +╰─────────────────────────────────────────────────────────────────────────────────╯ ``` The URL shown at the top of the bridge shows the address where you can access your `public` share. From a345df9397b067d5981eaf7896d84461f332a596 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:28:04 -0400 Subject: [PATCH 23/26] better web/files sharing guide --- docs/concepts/files.md | 32 +++++++++++++++++++++---- docs/concepts/http.md | 2 +- docs/images/zrok_share_file.png | Bin 15011 -> 0 bytes docs/images/zrok_share_web_files.png | Bin 0 -> 13375 bytes docs/images/zrok_share_web_website.png | Bin 0 -> 13733 bytes 5 files changed, 28 insertions(+), 6 deletions(-) delete mode 100644 docs/images/zrok_share_file.png create mode 100755 docs/images/zrok_share_web_files.png create mode 100755 docs/images/zrok_share_web_website.png diff --git a/docs/concepts/files.md b/docs/concepts/files.md index cca0b7ee..da664f54 100644 --- a/docs/concepts/files.md +++ b/docs/concepts/files.md @@ -11,16 +11,38 @@ was run from. For example if you have a directory with a structure like this: ```shell --rwxrwxrwx 1 cd cd 2506 Jan 26 11:57 README.md --rwxrwxrwx 1 cd cd 2971 Jan 26 11:57 CHANGELOG.md --rwxrwxrwx 1 cd cd 41544024 Jan 26 12:00 zrok +-rw-r--r--+ 1 Michael None 7090 Apr 17 12:53 CHANGELOG.md +-rw-r--r--+ 1 Michael None 11346 Apr 17 12:53 LICENSE +-rw-r--r--+ 1 Michael None 2885 Apr 17 12:53 README.md +-rwxr-xr-x+ 1 Michael None 44250624 Apr 17 13:00 zrok.exe* ``` The files can be shared using a command such as: ```shell -zrok share public . --backend-mode web +zrok share public --backend-mode web . ``` Then the files can be access with a `private` or `public` share, for example as shown: -![zrok_public_share](../images/zrok_share_file.png) \ No newline at end of file +![zrok_share_web_files](../images/zrok_share_web_files.png) + +`zrok` will automatically provide a stock website, which will allow the accessing user to browse and navigate the file tree. Clicking the files allows the user to download them. + +`zrok` can also share a pre-rendered static HTML website. If you have a directory like this: + +```shell +-rw-rw-r--+ 1 Michael None 56 Jun 26 13:23 index.html +``` + +If `index.html` contains valid HTML, like this: + +```html + + +

Hello zrok

+ +``` + +Sharing the directory will result in the following when you access the share in a web browser: + +![zrok_share_web_website](../images/zrok_share_web_website.png) \ No newline at end of file diff --git a/docs/concepts/http.md b/docs/concepts/http.md index 3145e98a..a8ac241b 100644 --- a/docs/concepts/http.md +++ b/docs/concepts/http.md @@ -4,7 +4,7 @@ sidebar_position: 22 # Sharing HTTP Servers -`zrok` can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you will use the `zrok share` command using the `--backend-mode proxy` flag. +`zrok` can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you can use the `zrok share` command using the `--backend-mode proxy` flag. The `--backend-mode proxy` is the default backend mode, so if you do not specify a `--backend-mode` you will get the `proxy` mode by default. diff --git a/docs/images/zrok_share_file.png b/docs/images/zrok_share_file.png deleted file mode 100644 index 19f0d4c2a4a86d825d2eb2384260859278823338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15011 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 DF33^9 literal 0 HcmV?d00001 diff --git a/docs/images/zrok_share_web_website.png b/docs/images/zrok_share_web_website.png new file mode 100755 index 0000000000000000000000000000000000000000..9facc7e4d8b7b5c954987d574aeb3d6b4b3c15b7 GIT binary patch literal 13733 zcmeHtdpMif+P*#ArhBTbT~%tFW=s`z8njg7Ff*lE$D*Ywq^)9$&ge zUb4@6yY1Qa?JgxHr9Ed(yZ9+7?Z7K3eKq>8uYnqe^yVbs*FWO@+5^Ea`lgW{Ex_V#T5{DTVr>#CB{u@h%pem<8H%4cUjZ%hu+|G=Eq zaC-ta{OX(Uz8M)ByWnAbz(n`gw(pPpL(S0eut7_O?a;p)BmQX1GIl;B+vlgny?5XH zY|g*FIx*3fa1^@g=6-2D>A~@=TXVK=#cI*d4~yL{T718e2r3;Vf{sW@ zd?>n9!eTFMI1M`y7M44tPMk=I4qk9;iRQe%nE9Q-r-Et8hB4JykGCHpy$CE6%9{i4zTCBcxFIE@Z`G_4-g-Yc6L$9wP#QgK|C-5*gmGPQ zS4=U|?1dl)&TOh3D5OKarM?d+LAPT(yLE@Bo$5-1o{d9aUu8RaXe3{GyYFmj-RI_qUAhnC-}L?5#{bF8 z-Ip(n@t>w{0#shTtPYqo*_%cW%4|&&K3<|VREkEuW)Wr$xd-wc{|waG-P01GX`q6Tf2mj1HLLZOB>KQ&McF==)*p3e)Rec1wHuotF`A z+cr$*W=SW)dh^fwjF^it4du0(Kk5P ze@+asvzl*mmgT+gl>I4go0F6y+qP&Nr+|!&EGe#V>Vn476;ChwBFV)29 z8RLl0Y+;3gB(zRQTLv#X3{-)$dl}W$rN+6@&SRU|L|9_}`nws!It9$7b!Sbp3B-*? zC|jZzx4Uw~Cg0sg1jo8@oe^QlY>Wi1s+UthgXt`k(cJQ&FVgijCoR+7`dl}}VPhsg z8_QA1hKmV8`M`_&+JH6pnwo|yA7tmg*sPa0fIIc@+!4_*Sr8AbAj2qAKKu}>F+3~w zn5)4#oYezuk`ar=adi(1Od62jSYBIXfeP$tz}3JI*bln|SbJHGMMN;6^;yqSPmG;Y zGiU9s?>B;hnITNUEEc5#+fuu{BLdD$P~q1XGVcI85`)VYb^bM%MCU(IE4N?yrr$S! zAm{vmvQs#T{w^u|BPqxfn+=VY>O@{JNNzZH1dmC#CC!}byqRQ2gB}X$&h>{2AKHQJ z%}ok;c9elg-cfeMskRU~s36^C-?9K%cs#t_B)8|6V??KETd`)TpgJDJ=H={)mb{r2 zCrsW{#*v0s;O#S%7Hn%5`%PZz3O4|RO)4V@uE(~eAwVQ4X${L=ualMvq6xAAX(yGJ zq|e`c`@nZz5M6$}_AMsSCpgBZhIJ|+B$nG3=s=01g+NJn?!*id?>DgWR-d8Mm)d4d zmF8+O@p572me0fR?=7g93k;2EydHC0Y(MlQ3q($n@>TE2A%tpTRHs0MppO{Q`0yB< z7B4s1GctpdAYERggyFhUF;#CdBesJkfAd8XnUR@Zhj9|hB)%F4o({GHVMj32@(8LX z)dn;!cJged+77PV6Z&T|1rzxd+?0-0w?7dlfL`KS0G&I8IM4Omm#@~DoU z>P+?#Tz;Ajo-H|(XQ2#J&b@QTyij=ZRXaXbG zddh80T-H00q-d87q;A#XtTN2r_q8E)a>QfJX!h{h&3_?nakqY;}8}B;Fo*^cJ)6n+FM_SxjeF`*Emw(cpw}8`M{~24cWGw`;cT zD=l! z-Nm1`T4o0Z*{)oy#}doJDa(oKtTV+H_zDAwfN;vtFhaX*sRF|=wc~oy-xnJkH~XdH z#W7tw7G&YNfAJCCUzoIj2ZYuK+#q^XOSF4<@V_E(LE6ryAFHi`1q|Y>!@6zlBTA?>UI6-=3@^en}7 z_`;ZXRSTk%^>|UjXuPWX99mleQJ<@z!A2&7a-GQ~DBCyN*_85axrwbz*l1Tp zN1vs5OhX{xMWofFBvKPbb&?~U$7UHO=@qoR}E( zF*$>j1Xd9rC|M|;Tf67H|B!)!)QVsA&0UwrxowOEbBJL0pM$1hD()d*_+7Sc_3H_f zVk;!Gm{gm9Pg=H%{HF6_u>v)IN!l9Tn@%R4x&A7{Kzkh?64z@=| zWl)Opvk;D@A77Np#c3=?r21o+(D_{9Ay~BEPt2f67*>5kAgfoWu4E7xn!3TsWxm%X z$in%S^4uK169m5RL+&)pnVnd~ox-5H<@3u88@$sJWSIV`?gRVsy-pAGk~b{nC83W) z3J(%e#J1LEu$=KdXjJ4mX`O~oaoSY&DVuH_>hu%Rph^ho%bs~)E~ zM*PN)PI&+p8I;`@uHW(~InrS@pX!qtl&FuPYYph-G@jT6OC;TC+a@0ZZ4Ng*4B(HZ z*+G+nMOsg9CqEJvj(a_DPIa1TilG_f$JPv9N7(IZ2G|MA$UP?Q7sQsPl} zD5mTIsfa!3WR5q$#BB2>fH@Tcu#EX}y8{3l?%RCmpz>$_X{dcZcGxf0)f@T0TnwOY z0-FQie8)2m!r6`gFtpB3?C8G?4HKsc7osuj*ocR+g|3 z;-Fy@%Zw3DJ^A0CiRB70XQ67_2L=X9mANMP;p_7qgJ!SoGDkNe;#|E?&ZcS%<5rfN z{?nvt&k_7^#lUQy2W-I1q|>0m#{oUNabUPLgd50&v%DFW)(R*BFlxZxr`v7RC=dg2^jEoO9_vbZoz&^hQ^u>`_PGyoSzqxf-nw z4qEC}P3Q{%h7`xow*PtG6a)TL2{(^+ez#4V#s0I$eEIG7?|iJDpT7Jg%fNwJJIY7^4>YGs0 z?9ni~_ZIkP@}AnY2t$mOZNa^U!hc6|Ypw*@CXVx@4Av?|$Tm0dQyJ+6V46Z-MB zNGRtEi+2hX@c+;f3(WmD0HK~=$KLd@N3Rs9~YQAE6OWLDA5FIEK+ZHIas;oT362DTGvkpB4WrxmZEs*{q zegK8~g(RO)L-h}KeV7*Q%#8I}4X!*5&I{*r*WT;nF&pNuVwtkSDOJfuxtyaIiE7DJ z9KWK03(+iLDlQ1fQX8Hq5HiUWpA)TQN|0WUbuB(60O0NQhv=ouq^x>KP7_1xbAt}I zGu)+yzTY}4HY`0McJPve+RQiN_TX$L6mBEWUFxwS%bSY69qxy0YJ;eu^PN{q zk+tYD933tj?}~DVK_P^q^(hLJ%3HTVfP&Ff$l=VK(q6YQ#GtJS--r z^{)S&1$GiryN5?#xXIg@DPEwdI-#*Jc>G9v7r2@9t2Eqna5Xe=THJ~@)qFEvf$e3? zmC!A>UL0bOiPjOJNzeJNj9dyh&|(S`)6Z`R;t1<_@u?lWcRP5+fn(!|A`0l#Fv*aT zeP5!^T26tG4S^Wdl>)ZR}U2l11> zo%RZjO&009NSUJ(SZsz-wrn}5JNLDX*@^b>22b_D%Nx(kgA>KXnLL&E%;uE02|hN6&!)%0g^!^l!E+Q)ubM?G#4vU?QS4h&>fu zBfFncKAVUH=P_Ql<9?!Gj;mN(P$woLjz<(_%iK7nfv-E2Eh+r*6$hzXo~^QEA!9Z3 zXpQYIL7<+#ChI|WdcU(%zz|VHM$Dg=6sgEZcJQ)|DvgDk9~8ev#D;weGp3gKvU4zI zuN`~QxML-_>^SKOw%JQM$T?gqj^>IzfKYimn_3@Wy})}zUocyRN#DT3vVXzsRF-6! zW;6%BnKutk6?e{5y0>t;u`3tkFWMPJ(Kx0suWJYZikFM0)4p~actu(IEj(jGFYHQ8 zjK9W|`!ynbSUxK0y&9%MpUW~eXcA;?W!C-?qQrvn)I?+t1${1OM+jZpD{rANSUG5T$!Df_e z@#YiWcCXHg?NH-hwD;Paz&u;J&=`IVo6W0eapMG9R0!Z_V~wOv*Xg{1HRv=LRwb~+ z{90vT(BPGJ=iC5=5*hbqoS_yLRt9WEGJrwAmRZ-DF77vOW#0#+vkT+J)1$tz1ff-~ z>MbaoP|S9yjCAeREgD-ip&6Z`9<_JvFvmlZ`~I2w>xcIbksp(vL<3>qmRVc5OLo zVcvqC+9}L2)9-`5quG9}YxF6#*CsaX7stxa5a01CcsIV%VD5?ZCD5Unls7wt1<7Uj{vXlAoT3htDMUzn-<%L7$%1LdF zCVz9oOQuCXMS9lFP{{M-VQg?Lj#+o-<@^1v$3j=lSCiMdB?7CYQiL`@BBm^}D_6qc z>-~#suzuZQ=IMKEzRmYsbYE|@^kq_}hB2j=(TNqDTU~BI74JZARnM#Q9#qI)U;0|o z2fwSuLY8T<-~_QeV!&B;dSFKG+X_Hw!)b{+pKt9zlAgo7&SGZ#<|hGvrJFRz<3QMqBN!kNAG*UB=a&FnMs-v^-->N6PVw{+kE$?x8P>aEpny7d zm@+5uS$jzI4^MwKzHtHq|)q={Y1IGs%B=S7Sshj!#90P>Yo zecxn7@6x>#(!R{MkFic_KshCi%PpIDv}hTWduoaAeo!exxwHB9p?(raC`?+vVAl)w9lb!o7FiwX#YYsoH<>aM}4- zTyagPR%u~vM_s9HJwFm36YxiE-K)GjfTATYGj;rH9QFv2HiQ!$RkADRCzB;s^?am2 zL}NTEn~z&!1uVqrL@uS5*An=}%w}gNu0Kk1xz%gocm!nFkX$vdml@7HK0iGX7Xi7Q zab>(M^GICHRf-8UI3nP-a&p@I@c8I`!Xh9xYY_3P2qMbf*>^LV&!!niO1x8_-SLH#qyZ4SW%He zEUhQO5qA-VldF)-%#E#+5R1%&EssG@Sj>JvChO=AO6|^#@#}XC;n}L)Of z4d>*Y<_~~fs7Lwi{#JaB)2r{t`yNyfA<3b$Qc&M+K|;_W%D4v%cNT^-b02bLc*Eim z1DamNC@M7G(<}8`^^VKm#LzC>(<<(Ew_kQT+#^e%?#4Bw?>Vu^R+uvb^QsFbv0Q10 zX%5@}K{RSjy!a_XUQF34f-X4bwVMT7mr34OSly65Gk%`qE_gKa5YVX|-H8=ZBbJ;n zwl{}z4q#AKYRZ^&4iuVx2r$nzJpTM5+0iB))if{KIB%^i*+V0 zUp%b7m%5!L)W`}`LUbbSD1Z3!z!=(}YnRFx7lzN;nbozjuu=L2 zVtB%s8qb!}xN5o6I}m`51w;2`p+X*6X26tbr^P`pcD`NNJC5RnG4m#2%*%&SK1fn><`HSscrrPFZ8a(- zu_dEPR7h(1ZB!sHWjX<=z_ofkMA*YM62aiQFr-b_4d_EZkd_T@2FqCB`@39CRueYl zYO(OFj6ct%y$nBOfz$u#Kp1gna%A@Gw~@ywE@uZe`|7*%@j58}HnsL<{?nHgTG%?( zdHD+X9=ZuM=D=;2x>?CSDa(A^S1t7$I1h^5ZT!G64x1Z z{J_TcoyolOpLiX5z*{_AE0rz7I zy_SsXfnJlBD-RzBUty{~x~5=Vl9Y&;HQNOIuzL(KG!LVlO|NU1z-FU4ZqA#aQHCf- zjhoaklfgC3tajkK<)Pf8)!9;-4ch7A-jF!B{pvF*&2&1Bn8sn|mDGi%LR!s$6I&;H zMXH99&sMIAAobfbTv85vAC)OpuRGgohdcz#XH+%^UI0+fvS1xATOa-bv+O1m9QES_6=XxHgyt~CguY9-9k`#%gHv~0r1YD*IvA+(I~)5CC8g6p|6jbgK%OBh?jvUY{+$=!FD)Askmbb9&D7GEWOo6X zTpq|weo9aPk%zb>tla&TlG3I9%PC(=Ml3U)u@c@szGmVO`|br|w2pj1ui_s6`bRmc zXsI%jvc-3jowm2qBB-IJAx^PD| z1@)i*Gz$6gOr9~m0g>DxCk}B_rq`+sfyQ;Wvp`Q~n(uD=a9LM5*`+(=z_tq~K)VEY zvIs}EyFO30t($SWp1Co>>_V3--WZkK7);tpFQ~enu|dXV5_PI1lAB5OGnL0PB0Cn> zEcrV0-w_}BeasiSKCba%B}_F$G>uSH`&v7P%BP=t z>N>23^X8F9+7UcuiA%@Ad`XdwY93X`AglmrTBCebJu+FxzQ3L&fmnm`p#CQLBtBD$oUKGG@fJ$z9HNL@XMF5&#F_WO z9(>7Hx%;W~3Of>+_;IVQ*a(MG{BBfK=OEh>y=HLE2^zi2;Qp~bIwlN#r{lqyGnees zWcle1+&xN4jj!ER1pN`PZpXObj%(KO+V;o4oiIJA$^nPIo*XXr>!f8#Up4V&Z92nF zg(ES~5@*MAKufBHCj;3@emp2oIoYG7ye6R6N2lX4aeZKOJ!)@dkOd(z<%IYN(DNOB z@0vL7*Mt};;)yn}fCr)-Zy-PNIn&y>M1|0@Bw<|txO7UC-T#oXOGRMR>_~8~P1@u` z0|z4tf7l7R0CTVn!tJ1IvQAc0VbQM3nyg^DE@O8dspJOl1?0VFjy~zJL*|JvLdf2t zhU=sAtGfi*h`G(4QHiOWcla&flaC^DRRk@Fo>eIqYmVPp34y)SpcNfpfoR8kme6Po z7EOlC5dP-vB~0M^4w2{c-tUe>&yeR{ATGzme~9gv=UQ>6(z`w!j|3+&uhMVREkh=p zZ>~?4kZ@_6`72H3DRZN|9caGh*ba_djA#qeey@znye9dJRhb%8{}BNke18l@Ir&0p zNq=fh^1m96;H%O->>VyZm_B^DE^+x}K~dei$0OVk#}H)q?swx_Gd8q7T#`2LHZ7bT zG$khM5FR^pwX(ZQSYZ2`>yHtu9-W4G=>xbq-tFs}t-l|86b1uFJFpSn-Bd_}N}SuC zWd(x-hAOZ`R^A?Wo~>crg;-T5#jPQ;r8Jr3-}*Y~A@BEGUk~L@hUloX>U1q`gK8Wi z^3lnm*1)my7{|>tKQXH{#`j3j*iI^z>g||?;wgE zeRQQCu#2AWS_+Q!VO_M)%WEPD6Z4N9cilLr0#nEu=(3=SjBfU3)bOfVNGu8*I8>Uq zL>^8_xhsmMogWrf4iVGscPc3z4+2Jr)?ZGTVbYl;_6%%0FbkMz;F{d!m2vwG`Kxf5 z>ZNaag-%zmeW=SWb{t#3sv_vI>w4PC)(YR8^xq+i+eu%BQi@bdzm=yN)|u>3QX*Uh zmOfj=MB9haCsM0)bhvP&Y>X$X=t^nr%p%NHeKUnXg3RVZdb&agH&i1}OlAcO@U;%m zPWJBzN*^x3>FWDmJ062fksn@IOHEG}Wq~es^85>B+1~*U*KCaI*4^lB=PjFahfNvh zr$$Z+yBfg>J&(MapU)KEhFMrHW_#xG; z9C2|F58%yny}G=IKc|My%X)$EOrMJD&J7}#Su_?7y?m@f_o~{wlA2(RT^f-(2Q)8M zB0wy`DC!M;D4WY0rw_42)8nwpkAWP_S|P(tXsM6C5_>Uj?p_YvavDTv+K)=>+!}zO zbr`8|W5wH?9wg!kD}I$uD=jEx-MEc5(I+@l94^XdYE|m`KAagQb#95z`1tH~pG^t^ z?2x9+-O}_Ca)~;h12uN**`=d(HCTO3~AP{0$!qA4f$EZ%rt>(RB0rQ2i@XFW)S#>RMe$)qmi_e8G9Gzjapj zw5~87^5H!~w(|(J^#^1~EcKx@Wle?FaYMTPF=YVW*{XvUzwT4UnGBPhQ;*X2P6zJ> z&d1BV$Zgoaq-(MbhEE^O0BHPY);3D~v}+s9luV4jy!hghFPq`ZG58W0zQn{YXz&Ff zzfglOr05Gz{KAmGelXx_^F;~R(3f0$cM0g0&68CP$Y=3g#l F{SSkuc^&`& literal 0 HcmV?d00001 From 936b8968e3e521d51678ec9a4f3ea2a567050079 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:30:14 -0400 Subject: [PATCH 24/26] lint --- docs/concepts/files.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/concepts/files.md b/docs/concepts/files.md index da664f54..91d6a0e7 100644 --- a/docs/concepts/files.md +++ b/docs/concepts/files.md @@ -45,4 +45,6 @@ If `index.html` contains valid HTML, like this: Sharing the directory will result in the following when you access the share in a web browser: -![zrok_share_web_website](../images/zrok_share_web_website.png) \ No newline at end of file +![zrok_share_web_website](../images/zrok_share_web_website.png) + +`zrok` contains a built-in web server, which you can use to serve static websites as a share. \ No newline at end of file From 160f9bcc300842a36eb410bf7b51fb12c5bc6c77 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 13:32:07 -0400 Subject: [PATCH 25/26] opensource --- docs/concepts/opensource.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/docs/concepts/opensource.md b/docs/concepts/opensource.md index 29d0a070..77796909 100644 --- a/docs/concepts/opensource.md +++ b/docs/concepts/opensource.md @@ -3,24 +3,21 @@ sidebar_position: 100 --- # Open Source -It's important to the `zrok` project that it remain free and open source software. The code is available on GitHub +It's important to the `zrok` project that it remain free and open source software. The code is available on [GitHub](https://github.com/openziti/zrok) for the world to use, inspect, and build upon! Check out the repository over on GitHub at https://github.com/openziti/zrok. If you find `zrok` to be useful, and you want to help spread the word of `zrok` give the project a star. It really does help get the word out about the project. -The project also uses a very permissive license: Apache v2. We encourage people to fork the repo and use `zrok` for -your own purposes how you see fit or contribute back to the project. +The project also uses a very permissive license: Apache v2. We encourage people to fork the repo and use `zrok` for your own purposes how you see fit or contribute back to the project. ## Built on OpenZiti The power of `zrok` really lies in `private` sharing. It's increasingly clear that security needs to be a first-class -member of any organization. To enable `private` sharing, `zrok` was built on top of another excellent open source -project named OpenZiti. +member of any organization. To enable `private` sharing, `zrok` was built on top of another excellent open source project named OpenZiti. OpenZiti is a secure overlay network focusing on bringing zero trust to applications. It is the __backbone__ of `zrok`. -In fact, `zrok` proudly proclaims itself as an OpenZiti _native_ application. +In fact, `zrok` proudly proclaims itself as an Ziti _native_ application. -If you are interested in learning more about OpenZiti head over to [the docs](https://docs.openziti.io/docs/learn/introduction/), -try the quickstart, and don't forget to star that project too. We couldn't build `zrok` without OpenZiti! \ No newline at end of file +If you are interested in learning more about OpenZiti head over to [the docs](https://docs.openziti.io/docs/learn/introduction/), try the quickstart, and don't forget to star that project too. We couldn't build `zrok` without OpenZiti! \ No newline at end of file From 8608fc438c683fdb79c4004f917b0f2cda4d0413 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 26 Jun 2023 15:02:32 -0400 Subject: [PATCH 26/26] click the button --- docs/concepts/sharing-reserved.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/sharing-reserved.md b/docs/concepts/sharing-reserved.md index ee28c9c1..5f0410fb 100644 --- a/docs/concepts/sharing-reserved.md +++ b/docs/concepts/sharing-reserved.md @@ -11,4 +11,4 @@ To use a `reserved` share, you will first run the `zrok reserve` command to crea This pattern works for both `public` and `private` shares, and for all resource types supported by `zrok`. -To delete your `reserved` share use the `zrok release` command. +To delete your `reserved` share use the `zrok release` command or click the delete button in the share's _Actions_ tab in the web console.