Skip to content

Epic 472 port nginx one labs #681

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 58 commits into from
Aug 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
9698077
Added lab 1
travisamartin May 30, 2025
2df7454
added lab2
travisamartin May 30, 2025
25f374f
added steps for lab 2
travisamartin Jun 10, 2025
411d3b8
moved lab files out of content dir
travisamartin Jun 10, 2025
1e1af12
added lab 3
travisamartin Jun 10, 2025
56fa0e5
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 10, 2025
c44decd
edits to lab 3
travisamartin Jun 10, 2025
5bd0015
Merge branch 'port-lab-3' of github.com:nginx/documentation into port…
travisamartin Jun 11, 2025
d03aa23
deleted unused file
travisamartin Jun 11, 2025
5f50bea
edits to lab 3
travisamartin Jun 17, 2025
a4b29ca
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 17, 2025
a9ecc38
Merge branch 'epic-472-port-nginx-one-labs' into port-lab-3
travisamartin Jun 17, 2025
67423e7
fixed link
travisamartin Jun 17, 2025
7d42168
deleted 1-day and 30-day certs and keys
travisamartin Jun 17, 2025
f6faf61
Ported lab 4
travisamartin Jun 17, 2025
d437960
Merge branch 'epic-472-port-nginx-one-labs' into port-n1-lab-4-workshop
travisamartin Jun 20, 2025
a04b3e7
edits to note re combining NOSS and N+ in config sync groups
travisamartin Jun 21, 2025
8c8580e
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 23, 2025
bd9ada1
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 24, 2025
c3046e1
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 24, 2025
7a90fb8
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jun 25, 2025
fa6260f
Port lab 5 (#733)
travisamartin Jun 25, 2025
fac3953
edits per tech review
travisamartin Jun 25, 2025
f46af90
Merge branch 'epic-472-port-nginx-one-labs' of github.com:nginx/docum…
travisamartin Jun 25, 2025
b461555
Apply suggestions from code review
travisamartin Jun 25, 2025
bfb0fec
reordered N1 workshops in nav
travisamartin Jun 25, 2025
4b312a1
edits
travisamartin Jun 25, 2025
16c7d06
added verification step for enabling N+ API using CSG
travisamartin Jun 25, 2025
e7b1ede
added card for workshops to index page
travisamartin Jun 25, 2025
54faf01
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Jun 25, 2025
5d33ebd
fixed workshops card link
travisamartin Jun 25, 2025
8a59ccc
Merge branch 'main' into epic-472-port-nginx-one-labs
lamATnginx Jun 26, 2025
2e00869
Update workshops card link
lamATnginx Jun 26, 2025
82567cf
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Jun 26, 2025
e5982d4
Merge branch 'main' into epic-472-port-nginx-one-labs
lamATnginx Jul 1, 2025
9bc04c0
Fix url link in N1 landing + changed to workshop for featured card
lamATnginx Jul 1, 2025
a6b54bf
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Jul 1, 2025
a939950
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jul 2, 2025
a1b62b3
edited N1 card text to include Console
travisamartin Jul 2, 2025
c6b5352
removed Apache license
travisamartin Jul 8, 2025
5083348
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Jul 8, 2025
61b7954
added workshop card
travisamartin Jul 8, 2025
c4daaa7
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Jul 8, 2025
7b5786e
added wrench icon to workshop card
travisamartin Jul 8, 2025
bd1fd9d
Merge branch 'epic-472-port-nginx-one-labs' of github.com:nginx/docum…
travisamartin Jul 8, 2025
275abe7
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Jul 9, 2025
00221ae
Merge remote-tracking branch 'origin/main' into epic-472-port-nginx-o…
travisamartin Jul 25, 2025
257b1af
Merge remote-tracking branch 'origin' into epic-472-port-nginx-one-labs
travisamartin Aug 5, 2025
9f7dc44
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Aug 11, 2025
e2871ce
tightened up the text in lab 1
travisamartin Aug 11, 2025
7f23814
edits to cloud-access-nginx and cloud-access includes
travisamartin Aug 11, 2025
b7cfc43
fixed number in cloud-access-nginx.md include
travisamartin Aug 11, 2025
53cbf0e
edits to lab for reading level and style
travisamartin Aug 19, 2025
d7d3be1
added include for XC tenant requirement bullet
travisamartin Aug 19, 2025
c4f2295
added files metadata to xc-account.md include
travisamartin Aug 19, 2025
f8c0037
added files metadata to enable-nginx-plus-api-with-config-sync-group.…
travisamartin Aug 19, 2025
14c1ebd
tweaked the workshops card text
travisamartin Aug 19, 2025
dfdb785
Merge branch 'main' into epic-472-port-nginx-one-labs
travisamartin Aug 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ server {
root /usr/share/nginx/html;
}
}
```
```
11 changes: 6 additions & 5 deletions content/includes/nginx-one/cloud-access-nginx.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
---
files:
- content/nginx-one/secure-your-fleet/set-up-security-alerts.md
- content/nginx-one/getting-started.md
---

Once you've logged in with your password, you should be able to see and select the NGINX One tile.
1. Go to `https://<TENANT_NAME>.console.ves.volterra.io/` to access F5 Distributed Cloud, and sign in.

1. Select the **NGINX One** tile
1. If needed, select **Enable Service**
1. After the service has been enables, select **Visit Service** to load NGINX One Console
After you sign in, you should see the **NGINX One** tile.

1. Select the **NGINX One** tile.
1. If needed, select **Enable Service**.
1. After the service is enabled, select **Visit Service** to open NGINX One Console.
13 changes: 10 additions & 3 deletions content/includes/nginx-one/cloud-access.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ files:
- content/nginx-one/getting-started.md
---

Confirm an F5 Distributed Cloud tenant has been provisioned for you. Log in to MyF5 and review your subscriptions. You should see within one of your subscriptions "Distributed Cloud". This could be in either an NGINX subscription or a Distributed Cloud. If the above does not appear in any of your subscriptions, reach out to either your F5 Account Team or Customer Success Manager.
Confirm that an F5 Distributed Cloud tenant has been provisioned for you.

With access, you or someone in your organization should have an email from [email protected] asking you to update your password when the tenant was created. The account name referenced in the E-Mail in bold is the tenant name.
1. Log in to [MyF5](https://my.f5.com/manage/s/) and review your subscriptions.
2. Look for **Distributed Cloud** in one of your subscriptions. This could appear under an NGINX subscription or a Distributed Cloud subscription.

Navigate to https://INSERT_YOUR_TENANT_NAME.console.ves.volterra.io/ to access F5 Distributed Cloud. If you have never logged in, select the **Forgot Password?** option in the log in screen. Alternatively, if someone within your organization has access, ask them to add you as a user within your tenant with a role providing permissions for NGINX One.
If you don’t see **Distributed Cloud** in any subscription, contact your F5 account team or Customer Success Manager.

When your tenant is created, you or someone in your organization should receive an email from **[email protected]** asking you to set your password. The account name in bold in the email is your tenant name.

Go to `https://<TENANT_NAME>.console.ves.volterra.io/` to access F5 Distributed Cloud.
If you have never signed in, select **Forgot Password?** on the sign-in page.
Alternatively, ask someone in your organization with access to add you as a user in your tenant with a role that includes permissions for NGINX One Console.
9 changes: 9 additions & 0 deletions content/includes/nginx-one/workshops/xc-account.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
files:
- content/nginx-one/workshops/lab2/run-workshop-components-with-docker.md
- content/nginx-one/workshops/lab3/explore-nginx-one-console-and-features.md
- content/nginx-one/workshops/lab4/config-sync-groups.md
- content/nginx-one/workshops/lab5/upgrade-nginx-plus-to-latest-version.md
---

All labs require an **F5 Distributed Cloud (XC) account** with NGINX One enabled. If you don’t have an account or need to verify access, follow the steps in [Lab 1: Before you begin]({{< ref "nginx-one/workshops/lab1/getting-started-with-nginx-one.md#before-you-begin" >}}).
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
docs:
files:
- content/nginx-one/workshops/lab5/upgrade-nginx-plus-to-latest-version.md
- content/nginx-one/nginx-configs/metrics/enable-metrics.md
---

1. In the NGINX One Console, select **Manage > Config Sync Groups**, then pick your config sync group's name.
2. Select the **Configuration** tab, then select **Edit Configuration**.
3. Select **Add File**.
4. Select **New Configuration File**.
5. In the **File name** box, enter `/etc/nginx/conf.d/dashboard.conf`, then select **Add**.
6. Paste the following into the new file workspace:

{{< include "config-snippets/enable-nplus-api-dashboard.md" >}}

7. Select **Next**, review the diff, then select **Save and Publish**.
8. Open your browser to `http://<instance-ip>:9000/dashboard.html` (replace `<instance-ip>` with the IP or hostname of one of your group members). You should see the NGINX Plus dashboard.
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ To collect comprehensive metrics for NGINX Plus, including bytes streamed, infor
- To restrict write methods (`POST`, `PATCH`, `DELETE`), uncomment and configure the `limit_except GET` block and set up [HTTP basic authentication](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html).
{{</ call-out >}}

For more details, see the [NGINX Plus API module](https://nginx.org/en/docs/http/ngx_http_api_module.html) documentation and [Configuring the NGINX Plus API]({{< ref "/nginx/admin-guide/monitoring/live-activity-monitoring.md#configuring-the-api" >}}).
For more details, see the [NGINX Plus API module](https://nginx.org/en/docs/http/ngx_http_api_module.html) documentation and [Configuring the NGINX Plus API]({{< ref "/nginx/admin-guide/monitoring/live-activity-monitoring.md#configuring-the-api" >}}).
27 changes: 27 additions & 0 deletions content/includes/workshops/nginx-one-env-variables.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
docs:
files:
- content/nginx-one/workshops/lab4/config-sync-groups.md
- content/nginx-one/workshops/lab5/upgrade-nginx-plus-to-r34.md

---

Set these environment variables:

- **TOKEN**: your data plane key, for example:

```shell
export TOKEN="your-data-plane-key"
```

- **JWT**: your NGINX Plus license JWT. Save it as `nginx-repo.jwt`, then run:

```shell
export JWT=$(cat path/to/nginx-repo.jwt)
```

- **NAME**: a unique ID for your workshop (for example, `s.jobs`):

```shell
export NAME="s.jobs"
```
16 changes: 10 additions & 6 deletions content/nginx-one/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an
{{<card title="Get started" titleUrl="/nginx-one/getting-started/" icon="unplug" isFullSize="true">}}
Get up and running with NGINX One Console
{{</card >}}
{{</card-section>}}
{{</card-layout>}}


{{<card-layout>}}
{{<card-section showAsCards="true" >}}
{{<card title="Connect more NGINX instances" titleUrl="/nginx-one/connect-instances/" >}}
Work with data plane keys, containers, and proxy servers
{{</card>}}
Expand All @@ -46,6 +40,16 @@ F5 NGINX One Console makes it easy to manage NGINX instances across locations an
{{</card-section>}}
{{</card-layout>}}

### Workshops

{{<card-layout>}}
{{<card-section showAsCards="true">}}
{{<card title="NGINX One Console workshops" titleUrl="/nginx-one/workshops/" icon="wrench" >}}
Guided labs to help you secure, monitor, and scale your NGINX fleet with NGINX One Console.
{{</card>}}
{{</card-section>}}
{{</card-layout>}}

### More information

{{<card-layout>}}
Expand Down
10 changes: 8 additions & 2 deletions content/nginx-one/nginx-configs/metrics/enable-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,16 @@ nd-product: NGINX-One

The NGINX One Console dashboard relies on APIs for NGINX Plus and NGINX Open Source Stub Status to report traffic and system metrics. The following sections show you how to enable those metrics.

### Enable NGINX Plus API
## Enable NGINX Plus API and dashboard

{{< include "/use-cases/monitoring/enable-nginx-plus-api.md" >}}

### Enable NGINX Open Source Stub Status API
## Enable NGINX Plus API and dashboard with Config Sync Groups

To enable the NGINX Plus API and dashboard with [Config Sync Groups]({{< ref "nginx-one/nginx-configs/config-sync-groups/manage-config-sync-groups.md" >}}), add a file named `/etc/nginx/conf.d/dashboard.conf` to your shared group config. Any instance you add to that group automatically uses those settings.

{{< include "use-cases/monitoring/enable-nginx-plus-api-with-config-sync-group.md" >}}

## Enable NGINX Open Source Stub Status API

{{< include "/use-cases/monitoring/enable-nginx-oss-stub-status.md" >}}
6 changes: 6 additions & 0 deletions content/nginx-one/workshops/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: Workshops
description:
weight: 710
url: /nginx-one/workshops
---
122 changes: 122 additions & 0 deletions content/nginx-one/workshops/lab1/getting-started-with-nginx-one.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
title: "Lab 1: Get started with NGINX One Console"
weight: 100
toc: true
nd-content-type: tutorial
nd-product: NGINX-ONE
---

## Introduction

In this lab, you’ll log in to NGINX One Console, explore its features, and create a data plane key to register NGINX instances.

NGINX One Console is a cloud service in the F5 Distributed Cloud platform. You can use it to:

- Manage all NGINX instances in one place
- Monitor performance and health metrics
- Detect security risks, such as expired SSL certificates or known vulnerabilities
- Track software versions
- Get performance tips

Instead of switching between tools, you get one dashboard with real-time data and alerts.

---

## What you’ll learn

By the end of this tutorial, you can:

- Open and use NGINX One Console
- Describe how NGINX One Console works
- Create, copy, and store a data plane key
- Revoke or delete a data plane key

---

## Before you begin

You need:

- An F5 Distributed Cloud (XC) account
- NGINX One service enabled
- Basic Linux and NGINX knowledge

{{< include "/nginx-one/cloud-access.md" >}}

---

## How NGINX One Console works

NGINX One Console connects to each NGINX instance through **NGINX Agent**, a lightweight process that provides secure communication between the instance and NGINX One Console.

NGINX Agent applies configuration updates, collects performance and system metrics, and sends event notifications.

You can install NGINX Agent in several ways:

- Use public Docker images of NGINX Open Source with NGINX Agent preinstalled
- Use public Docker images of NGINX Plus with NGINX Agent preinstalled
- Install manually with `apt` or `yum`
- Run the one-line `curl` command provided during registration

When you register a new instance, NGINX One Console gives you a `curl` command to download and install NGINX Agent on your system.

A data plane key is required to connect an instance to NGINX One Console. Once connected, you can monitor and manage the instance from the dashboard.

For more about NGINX Agent, see the [NGINX Agent overview]({{< ref "/nginx-one/agent/overview/about.md" >}}).

---

## Open NGINX One Console

{{< include "/nginx-one/cloud-access-nginx.md" >}}

Until you connect NGINX instances, the NGINX One Console dashboard is empty. After you add instances, the dashboard shows metrics such as availability, version, and usage trends.

---

## Create a data plane key

1. In NGINX One Console, go to **Manage > Data Plane Keys**.
2. Select **Add Data Plane Key**.
3. Enter a name for the key.
4. Set an expiration date, or keep the one-year default.
5. Select **Generate**.
6. Copy the key — **you can’t view it again**.
7. Store the key in a safe place.

You can use the same key to register multiple instances. If you lose it, create a new one.

---

## Revoke a data plane key

1. In NGINX One Console, go to **Manage > Data Plane Keys**.
2. Find the key you want to revoke.
3. Select the key.
4. Choose **Revoke**, and confirm.

---

## Delete a revoked data plane key

You can delete a data plane key only after you revoke it.

1. In NGINX One Console, go to the **Revoked Keys** tab.
2. Find the key you want to delete.
3. Select the key.
4. Choose **Delete Selected**, and confirm.

---

## Next steps

You’re ready to connect your first NGINX instance to NGINX One Console.

Go to [Lab 2: Run workshop components with Docker]({{< ref "nginx-one/workshops/lab2/run-workshop-components-with-docker.md" >}}).

---

## References

- [Create and manage data plane keys]({{< ref "nginx-one/connect-instances/create-manage-data-plane-keys.md" >}})
- [NGINX Agent overview]({{< ref "/nginx-one/agent/overview/about.md" >}})
Loading