zuplo 7.0.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,53 +1,156 @@
1
1
  ---
2
- title: Tunnel Troubleshooting
2
+ title: Troubleshoot a Tunnel
3
+ sidebar_label: Troubleshooting
3
4
  ---
4
5
 
5
- Setting up a secure tunnel involves configuring several different networks to
6
- work together. When setting up your tunnel it's common for traffic to initially
7
- not reach your destination initially. This is almost always caused by
8
- configurations (firewalls, VPCs, IAM rules, etc.) in your internal network.
6
+ A tunnel spans your network and Zuplo's, so traffic often fails to reach its
7
+ destination on the first attempt. The cause is usually a configuration in your
8
+ own network a firewall, VPC route, security group, or IAM rule — rather than
9
+ the tunnel itself.
9
10
 
10
- As a quick sanity check, verify that the tunnel is running on a
11
- [supported Linux host](./secure-tunnel.mdx) before investigating further.
11
+ Work through the checks on this page in order. Each one narrows down which part
12
+ of the path is failing.
12
13
 
13
- ## Tunnel status
14
+ ## Confirm the tunnel is connected
14
15
 
15
- As a first step, check if the tunnel is up and running. You can use the
16
- following CLI command to check the status of the tunnel:
16
+ Start here. If the tunnel isn't connected, nothing else matters.
17
17
 
18
18
  ```bash
19
- # For brevity, the commands assume that you have exported your API key as an environment variable,
19
+ # The commands below assume you exported your API key:
20
20
  # export ZUPLO_API_KEY=zpka_d67b7e241bb948758f415b79aa8exxxx_2efbxxxx
21
21
 
22
- zuplo tunnel list # Get the list of tunnels
23
- zuplo tunnel describe --tunnel-id tnl_xxxxxxxxxxx # Narrow it down to the problematic tunnel
22
+ zuplo tunnel list
23
+ zuplo tunnel describe --tunnel-id tnl_TRMZwunq2PLNQDwhu6A04Bmx
24
24
  ```
25
25
 
26
- Check the `status` field from the output of `zuplo tunnel describe`. If it's
27
- "down" that means that your tunnel isn't up. If you are using a Docker
28
- container, check the container for errors. It takes a few seconds for new
29
- tunnels to register with the Cloudflare network for the first time.
26
+ Check the `status` field in the output of `zuplo tunnel describe`.
30
27
 
31
- ## Tunnel Logging
28
+ If the status is down:
32
29
 
33
- If the tunnel is up (as verified in the previous step) but you aren't seeing any
34
- traffic, you can inspect the logs to see if there are any network or IAM issues
35
- that might be blocking a connection.
30
+ - Wait a few seconds. A newly created tunnel takes a moment to register the
31
+ first time it connects.
32
+ - Check the container or process for errors. A container that exits immediately
33
+ usually indicates a bad or missing `TUNNEL_TOKEN`.
34
+ - Confirm the token matches the tunnel. Re-run `zuplo tunnel describe` and
35
+ compare it against the value your container receives. If the token was
36
+ rotated, the old value no longer establishes new connections.
37
+ - Verify the host has outbound internet access. The tunnel connects outbound on
38
+ TCP port 7844, and the `zuplo/tunnel` image uses HTTP/2 rather than QUIC, so
39
+ outbound UDP isn't required. An egress firewall or proxy that blocks that port
40
+ prevents the tunnel from connecting.
41
+ - Confirm the host runs Linux. See
42
+ [tunnel requirements](./secure-tunnel.mdx#requirements).
36
43
 
37
- The tunnel by default logs only errors. For the purposes of debugging, it's
38
- useful to set a more verbose log level. To set logging to a different level,
39
- simply set the environment variable `TUNNEL_LOGLEVEL` on your Zuplo tunnel
40
- instance to `debug`. Other log levels available are `info`, `warn`, `error`, and
41
- `fatal`, but `debug` is recommended for troubleshooting.
44
+ ## Check the service configuration
42
45
 
43
- The way you set an environment variable will vary depending on where you
44
- deployed the tunnel. If you are using a Docker container, you can set it as the
45
- environment variables for the container. See your cloud provider's documentation
46
- for more details.
46
+ A connected tunnel that returns errors is often missing a service, or has one
47
+ that's scoped to a different environment.
47
48
 
48
- ```txt
49
+ ```bash
50
+ zuplo tunnel services describe --tunnel-id tnl_TRMZwunq2PLNQDwhu6A04Bmx
51
+ ```
52
+
53
+ Compare the output against the `service://` URL your gateway calls:
54
+
55
+ - **The service name matches exactly.** `service://payments-api` requires a
56
+ service named `payments-api`. Names are case-sensitive and don't allow partial
57
+ matches.
58
+ - **Your project is listed.** A project absent from a service's `configurations`
59
+ can't reach it.
60
+ - **Your environment is allowed.** Check that `accessibleBy` includes the
61
+ environment you're testing from: `production`, `preview`, or `working-copy`. A
62
+ service scoped to `production` returns an error when called from a preview
63
+ build.
64
+ - **The configuration is the one you meant to upload.** Each
65
+ `zuplo tunnel services update` replaces the whole configuration, so a partial
66
+ file removes services you left out.
67
+
68
+ For the meaning of each property, see
69
+ [Service configuration reference](./tunnel-services.mdx#service-configuration-reference).
70
+
71
+ ## Enable debug logging
72
+
73
+ If the tunnel is connected and the services look right but traffic still doesn't
74
+ arrive, raise the log level to see what the tunnel does with each request.
75
+
76
+ Set `TUNNEL_LOGLEVEL` to `debug` on your tunnel instance:
77
+
78
+ ```text
49
79
  TUNNEL_LOGLEVEL=debug
50
80
  ```
51
81
 
52
- Once you are done debugging, we recommend resetting the log level to something
53
- less verbose since the `debug` level can generate a lot of logs.
82
+ How you set the variable depends on where you deployed. For a container, set it
83
+ as a container environment variable and restart the instance. Consult your
84
+ platform's documentation for the specific mechanism.
85
+
86
+ Debug logs show each connection attempt the tunnel makes to your internal
87
+ endpoint, which distinguishes the two common failures:
88
+
89
+ - **No attempt logged.** The request isn't reaching the tunnel. Recheck the
90
+ service configuration and the `service://` URL in your gateway.
91
+ - **An attempt that fails.** The tunnel is working and can't reach your backend.
92
+ Continue to
93
+ [Check connectivity to your backend](#check-connectivity-to-your-backend).
94
+
95
+ Return the log level to `info` or `error` when you finish. Debug logging is
96
+ verbose.
97
+
98
+ ## Check connectivity to your backend
99
+
100
+ The tunnel reaches your backend the same way any other process in the same
101
+ network position would, so reproduce the request from there.
102
+
103
+ The tunnel image is distroless and has no shell, so you can't exec into it. Run
104
+ a debug container in the same network instead:
105
+
106
+ ```bash
107
+ docker run --rm --network container:zuplo-tunnel curlimages/curl \
108
+ -sv http://payments.internal:8080/health
109
+ ```
110
+
111
+ On Kubernetes, run the equivalent pod in the same namespace as the tunnel:
112
+
113
+ ```bash
114
+ kubectl run tunnel-debug --rm -it --image=curlimages/curl --restart=Never \
115
+ -- -sv http://payments.internal:8080/health
116
+ ```
117
+
118
+ Use the exact `endpoint` value from your service configuration. Common failures:
119
+
120
+ - **DNS doesn't resolve.** The tunnel host can't see your internal DNS zone. On
121
+ Kubernetes, confirm the service name and namespace. On ECS, check that service
122
+ discovery is configured for the tunnel's task.
123
+ - **The connection times out.** A security group, network ACL, or firewall rule
124
+ blocks traffic from the tunnel to the backend. The tunnel's host needs egress
125
+ to your backend's port.
126
+ - **The connection is refused.** The backend isn't listening on that host and
127
+ port, or it binds only to localhost. A backend bound to `127.0.0.1` isn't
128
+ reachable from a separate container or host.
129
+ - **TLS fails.** If the endpoint uses `https` with an internal certificate
130
+ authority, the tunnel must trust that certificate authority. Use `http` for
131
+ internal traffic that's already isolated, or
132
+ [contact support](mailto:support@zuplo.com) to discuss certificate options.
133
+
134
+ ## Check the gateway side
135
+
136
+ If the tunnel reaches your backend directly but requests through the gateway
137
+ still fail, the problem is in your Zuplo project rather than the tunnel:
138
+
139
+ - Confirm the route's rewrite URL or `fetch` call uses the `service://` scheme,
140
+ not an internal hostname. Your gateway can't resolve internal DNS names
141
+ directly.
142
+ - If the URL comes from an environment variable, confirm the variable is set in
143
+ the environment you're testing and holds the full `service://` prefix.
144
+ - Check your [gateway logs](./monitoring-your-gateway.mdx) for the actual error
145
+ status and message.
146
+
147
+ ## Get help
148
+
149
+ If you've worked through these checks and traffic still doesn't arrive, contact
150
+ [Zuplo support](mailto:support@zuplo.com). Include:
151
+
152
+ - Your tunnel ID.
153
+ - The output of `zuplo tunnel describe` and `zuplo tunnel services describe`.
154
+ - Tunnel logs at `debug` level covering a failed request.
155
+ - The `service://` URL your gateway calls and the environment you called it
156
+ from.
@@ -0,0 +1,100 @@
1
+ ---
2
+ title: IAM Authentication for Your Backend
3
+ sidebar_label: Overview
4
+ ---
5
+
6
+ IAM authentication lets your cloud provider decide whether a request from Zuplo
7
+ is allowed to reach your backend. Instead of sharing a secret you both store,
8
+ your gateway proves its identity to AWS, Azure, or Google Cloud, and your
9
+ provider's own authorization rules do the rest.
10
+
11
+ Zuplo handles this with a set of upstream auth policies. Each one resolves a
12
+ credential before your request leaves the gateway, then attaches it — as an
13
+ `Authorization` header, or as a signature the handler computes.
14
+
15
+ This approach suits backends that already run behind cloud IAM: Cloud Run, API
16
+ Gateway, Lambda, App Service, Identity-Aware Proxy, or anything fronted by an
17
+ identity provider you control. For the alternatives, see
18
+ [Securing your backend](./securing-your-backend.mdx).
19
+
20
+ ## Federated identity or stored credentials
21
+
22
+ Every provider offers two paths, and the choice matters more than which cloud
23
+ you're on.
24
+
25
+ **Federated identity** is the stronger option. Zuplo presents a short-lived,
26
+ audience-bound OIDC token that proves which gateway is calling, and your cloud
27
+ exchanges it for temporary credentials. No long-lived key exists, so there's
28
+ nothing to leak or rotate. Use it when your provider supports it.
29
+
30
+ **Stored credentials** mean you create a key or client secret in your cloud and
31
+ save it as a Zuplo environment variable. This works everywhere and is simpler to
32
+ set up, but the credential is long-lived, so you own rotating it.
33
+
34
+ ## Choose a policy
35
+
36
+ | Provider | Federated identity | Stored credentials |
37
+ | ------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
38
+ | AWS | [Upstream AWS Federated Auth](../policies/upstream-aws-federated-auth-inbound.mdx) | [Upstream AWS Service Auth](../policies/upstream-aws-service-auth-inbound.mdx) |
39
+ | Google Cloud | [Upstream GCP Federated Auth](../policies/upstream-gcp-federated-auth-inbound.mdx) | [Upstream GCP Service Auth](../policies/upstream-gcp-service-auth-inbound.mdx) |
40
+ | Azure | — | [Upstream Azure AD Service Auth](../policies/upstream-azure-ad-service-auth-inbound.mdx) |
41
+
42
+ Two more policies cover cases that aren't tied to one cloud:
43
+
44
+ - [Upstream GCP JWT](../policies/upstream-gcp-jwt-inbound.mdx) issues a signed
45
+ JWT from a service account, for backends that verify a Google-issued token
46
+ rather than calling an IAM-protected endpoint.
47
+ - [Upstream OAuth Client Credentials](../policies/upstream-oauth-client-credentials-inbound.mdx)
48
+ handles any backend that accepts an OAuth 2.0 client credentials token,
49
+ including identity providers outside the three major clouds.
50
+
51
+ Each policy page documents its options and the setup required on the cloud side.
52
+
53
+ ## How AWS differs
54
+
55
+ The AWS policies behave differently from the others, and it's worth knowing
56
+ before you configure a route. They don't add an `Authorization` header. AWS
57
+ Signature Version 4 signs the exact final request — method, host, path, query,
58
+ and a hash of the body — which isn't known until the handler builds it.
59
+
60
+ So the AWS policies resolve credentials onto the request context, and the
61
+ [AWS Lambda handler](../handlers/aws-lambda.mdx) or your own code signs with
62
+ them. In custom code, read them with `AwsClient.fromContext(context)`. When you
63
+ use the Lambda handler, attach the policy to the route and omit the handler's
64
+ own `accessKeyId` and `secretAccessKey`.
65
+
66
+ The Azure and GCP policies fetch a token and set the `Authorization` header
67
+ themselves, so a URL Rewrite route needs no extra code.
68
+
69
+ ## Keep credentials out of source control
70
+
71
+ Whichever policy you pick, reference secrets through environment variables
72
+ rather than writing them into `policies.json`:
73
+
74
+ ```json title="config/policies.json"
75
+ {
76
+ "name": "upstream-auth",
77
+ "policyType": "upstream-azure-ad-service-auth-inbound",
78
+ "handler": {
79
+ "export": "UpstreamAzureAdServiceAuthInboundPolicy",
80
+ "module": "$import(@zuplo/runtime)",
81
+ "options": {
82
+ "activeDirectoryTenantId": "$env(AZURE_TENANT_ID)",
83
+ "activeDirectoryClientId": "$env(AZURE_CLIENT_ID)",
84
+ "activeDirectoryClientSecret": "$env(AZURE_CLIENT_SECRET)"
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ Mark each value as a secret when you create it. For per-environment values, see
91
+ [Configuring environment variables](./environment-variables.mdx).
92
+
93
+ ## Next steps
94
+
95
+ - [Secure a GCP backend with Zuplo upstream auth](./gke-with-upstream-auth-policy.mdx)
96
+ — a full walkthrough, including Identity-Aware Proxy.
97
+ - [Gateway to origin mTLS authentication](./securing-backend-mtls.mdx) — use
98
+ client certificates instead, when your backend isn't behind cloud IAM.
99
+ - [Secure tunnel](./secure-tunnel.mdx) — reach a backend that has no public
100
+ endpoint at all.
@@ -48,6 +48,8 @@ The following global options are available for all commands:
48
48
 
49
49
  ## Additional resources
50
50
 
51
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
52
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
53
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
51
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
52
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
53
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
54
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
55
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -1,9 +1,13 @@
1
1
  ---
2
2
  additional-resources:
3
- - name: Secure Tunnels
3
+ - name: Secure Tunnel
4
4
  href: ../articles/secure-tunnel.mdx
5
- - name: Tunnel Setup & Configuration
5
+ - name: Set up a Tunnel
6
6
  href: ../articles/tunnel-setup.mdx
7
- - name: Tunnel Troubleshooting
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
8
12
  href: ../articles/tunnel-troubleshooting.mdx
9
13
  ---
@@ -30,6 +30,8 @@ The following global options are available for all commands:
30
30
 
31
31
  ## Additional resources
32
32
 
33
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
34
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
35
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
33
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
34
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
35
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
36
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
37
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -1,9 +1,13 @@
1
1
  ---
2
2
  additional-resources:
3
- - name: Secure Tunnels
3
+ - name: Secure Tunnel
4
4
  href: ../articles/secure-tunnel.mdx
5
- - name: Tunnel Setup & Configuration
5
+ - name: Set up a Tunnel
6
6
  href: ../articles/tunnel-setup.mdx
7
- - name: Tunnel Troubleshooting
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
8
12
  href: ../articles/tunnel-troubleshooting.mdx
9
13
  ---
@@ -29,12 +29,6 @@ sidebar_label: tunnel describe
29
29
  usage="$0 tunnel describe --tunnel-id <id> [options]"
30
30
  >
31
31
 
32
- **Additional Resources**
33
-
34
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
35
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
36
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
37
-
38
32
  </CliCommand>
39
33
 
40
34
  ## Global options
@@ -43,3 +37,11 @@ The following global options are available for all commands:
43
37
 
44
38
  - [`--help`](./global-options.mdx#help)
45
39
  - [`--api-key`](./global-options.mdx#api-key)
40
+
41
+ ## Additional resources
42
+
43
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
44
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
45
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
46
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
47
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -1,5 +1,13 @@
1
- **Additional Resources**
2
-
3
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
4
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
5
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
1
+ ---
2
+ additional-resources:
3
+ - name: Secure Tunnel
4
+ href: ../articles/secure-tunnel.mdx
5
+ - name: Set up a Tunnel
6
+ href: ../articles/tunnel-setup.mdx
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
12
+ href: ../articles/tunnel-troubleshooting.mdx
13
+ ---
@@ -30,6 +30,8 @@ The following global options are available for all commands:
30
30
 
31
31
  ## Additional resources
32
32
 
33
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
34
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
35
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
33
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
34
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
35
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
36
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
37
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -1,9 +1,13 @@
1
1
  ---
2
2
  additional-resources:
3
- - name: Secure Tunnels
3
+ - name: Secure Tunnel
4
4
  href: ../articles/secure-tunnel.mdx
5
- - name: Tunnel Setup & Configuration
5
+ - name: Set up a Tunnel
6
6
  href: ../articles/tunnel-setup.mdx
7
- - name: Tunnel Troubleshooting
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
8
12
  href: ../articles/tunnel-troubleshooting.mdx
9
13
  ---
@@ -37,3 +37,11 @@ The following global options are available for all commands:
37
37
 
38
38
  - [`--help`](./global-options.mdx#help)
39
39
  - [`--api-key`](./global-options.mdx#api-key)
40
+
41
+ ## Additional resources
42
+
43
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
44
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
45
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
46
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
47
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -0,0 +1,13 @@
1
+ ---
2
+ additional-resources:
3
+ - name: Secure Tunnel
4
+ href: ../articles/secure-tunnel.mdx
5
+ - name: Set up a Tunnel
6
+ href: ../articles/tunnel-setup.mdx
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
12
+ href: ../articles/tunnel-troubleshooting.mdx
13
+ ---
@@ -40,6 +40,8 @@ The following global options are available for all commands:
40
40
 
41
41
  ## Additional resources
42
42
 
43
- - [Secure Tunnels](../articles/secure-tunnel.mdx)
44
- - [Tunnel Setup & Configuration](../articles/tunnel-setup.mdx)
45
- - [Tunnel Troubleshooting](../articles/tunnel-troubleshooting.mdx)
43
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
44
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
45
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
46
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
47
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -1,9 +1,13 @@
1
1
  ---
2
2
  additional-resources:
3
- - name: Secure Tunnels
3
+ - name: Secure Tunnel
4
4
  href: ../articles/secure-tunnel.mdx
5
- - name: Tunnel Setup & Configuration
5
+ - name: Set up a Tunnel
6
6
  href: ../articles/tunnel-setup.mdx
7
- - name: Tunnel Troubleshooting
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
8
12
  href: ../articles/tunnel-troubleshooting.mdx
9
13
  ---
@@ -46,3 +46,11 @@ The following global options are available for all commands:
46
46
 
47
47
  - [`--help`](./global-options.mdx#help)
48
48
  - [`--api-key`](./global-options.mdx#api-key)
49
+
50
+ ## Additional resources
51
+
52
+ - [Secure Tunnel](../articles/secure-tunnel.mdx)
53
+ - [Set up a Tunnel](../articles/tunnel-setup.mdx)
54
+ - [Connect to Tunnel Services](../articles/tunnel-services.mdx)
55
+ - [Advanced Tunnel Configuration](../articles/tunnel-advanced.mdx)
56
+ - [Troubleshoot a Tunnel](../articles/tunnel-troubleshooting.mdx)
@@ -0,0 +1,13 @@
1
+ ---
2
+ additional-resources:
3
+ - name: Secure Tunnel
4
+ href: ../articles/secure-tunnel.mdx
5
+ - name: Set up a Tunnel
6
+ href: ../articles/tunnel-setup.mdx
7
+ - name: Connect to Tunnel Services
8
+ href: ../articles/tunnel-services.mdx
9
+ - name: Advanced Tunnel Configuration
10
+ href: ../articles/tunnel-advanced.mdx
11
+ - name: Troubleshoot a Tunnel
12
+ href: ../articles/tunnel-troubleshooting.mdx
13
+ ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zuplo",
3
- "version": "7.0.2",
3
+ "version": "7.1.0",
4
4
  "type": "module",
5
5
  "description": "The programmable API Gateway",
6
6
  "author": "Zuplo, Inc.",
@@ -19,9 +19,9 @@
19
19
  "zuplo": "zuplo.js"
20
20
  },
21
21
  "dependencies": {
22
- "@zuplo/cli": "7.0.2",
23
- "@zuplo/core": "7.0.2",
24
- "@zuplo/runtime": "7.0.2",
25
- "@zuplo/test": "7.0.2"
22
+ "@zuplo/cli": "7.1.0",
23
+ "@zuplo/core": "7.1.0",
24
+ "@zuplo/runtime": "7.1.0",
25
+ "@zuplo/test": "7.1.0"
26
26
  }
27
27
  }
@@ -1,9 +0,0 @@
1
- ---
2
- additional-resources:
3
- - name: Secure Tunnels
4
- href: ../articles/secure-tunnel.mdx
5
- - name: Tunnel Setup & Configuration
6
- href: ../articles/tunnel-setup.mdx
7
- - name: Tunnel Troubleshooting
8
- href: ../articles/tunnel-troubleshooting.mdx
9
- ---