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

Open
wants to merge 52 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 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
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 no-reply@cloud.f5.com 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 **no-reply@cloud.f5.com** 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.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
docs:
files:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self: add file references here.

-
-
---

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" >}}
Learn how to register and manage NGINX instances in NGINX One Console. View CVE and configuration recommendations. Use Config Sync Groups to deploy JWT licenses and upgrade to the latest NGINX Plus.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way to set this up with bullets?

  • Alternatively, I'm tempted to set up different cards for the "unique" use cases
    • We already cover your first sentence in "Manage your NGINX instances"
    • Use case: "Review CVEs and our recommended config changes"
    • Use case: "Manage groups of instances (Config Sync Groups) to update licenses and upgrade systems with one command"

Screenshot 2025-07-09 at 7 05 50 AM

{{</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: 750
url: /nginx-one/workshops
---
121 changes: 121 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,121 @@
---
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 main features, and create a data plane key to register NGINX instances.

NGINX One Console is a cloud service in the F5 Distributed Cloud platform. It lets you:

- Manage all NGINX instances in one place
- Monitor performance and health metrics
- Detect security risks like 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
- Understand 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 enables secure communication between the instance and NGINX One Console.
NGINX Agent applies configuration updates from NGINX One Console, collects performance and operating system metrics, and sends event notifications from the instance.

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`
- Use the one-line `curl` command provided during registration

When you register a new instance, NGINX One Console gives you a `curl` command that downloads and installs NGINX Agent on your target 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 NGINX One Console 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 add NGINX instances are connected, the NGINX One Console dashboard remains empty. After you add instances, the dashboard shows metrics like 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 data plane key.
4. Set an expiration date, or use the one-year default.
5. Select **Generate**.
6. Copy the data plane key — **you can’t view it again**.
7. Store the data plane key in a safe place.

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

---

## Revoke a data plane key

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

---

## Delete a revoked data plane key

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

1. In NGINX One Console, go to the **Revoked Keys** tab.
2. Find the data plane key you want to delete.
3. Select the data plane 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
Loading