Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
452c413
docs: add missing prerequisite for installation
dkleinF5 Nov 25, 2025
9ce0851
added info about nginx x being installed with app protect
dkleinF5 Nov 25, 2025
4ad5518
updated kubernetes
dkleinF5 Nov 26, 2025
4c5e02b
added supported os and Kubernetes ctl/cluster
dkleinF5 Nov 26, 2025
bdfcb30
temp
dkleinF5 Nov 26, 2025
533c0a1
test
dkleinF5 Nov 26, 2025
c4089cc
test
dkleinF5 Nov 26, 2025
6ecb1b1
added link to my my5
dkleinF5 Nov 26, 2025
a7b7365
updated myf5 with link
dkleinF5 Nov 26, 2025
717fedb
added info for docker registry access
dkleinF5 Nov 26, 2025
3cdbec8
test for jwt
dkleinF5 Nov 26, 2025
25311a5
added jwt for docker
dkleinF5 Nov 26, 2025
4b24cfb
last work before remove
dkleinF5 Nov 26, 2025
c8b6a10
remove line since we have the line above it
dkleinF5 Nov 27, 2025
9e8a6eb
updated docker for jwt
dkleinF5 Nov 27, 2025
380452b
update dockerfile for nap
dkleinF5 Nov 27, 2025
1d610b7
updated storage
dkleinF5 Dec 1, 2025
896d02b
fixed kubernetes
dkleinF5 Dec 1, 2025
ec9b87d
ohad fix 1
dkleinF5 Dec 1, 2025
8656e74
chnaged title
dkleinF5 Dec 1, 2025
a356d40
CHANGED NAME
dkleinF5 Dec 1, 2025
f3175b7
need jwt anywasy for opensouce for docker cred
dkleinF5 Dec 1, 2025
874e23d
removed todo
dkleinF5 Dec 2, 2025
0f2efa2
Update content/waf/install/docker.md
dkleinF5 Dec 2, 2025
47f4b15
Update content/waf/install/docker.md
dkleinF5 Dec 2, 2025
5486b51
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 2, 2025
00b8c02
Update content/includes/waf/install-services-registry.md
dkleinF5 Dec 2, 2025
d3fe2c3
made changes from suggestions
dkleinF5 Dec 2, 2025
37c0c9f
updated compiler doc
dkleinF5 Dec 2, 2025
5ba5e5d
changes to bare metal
dkleinF5 Dec 2, 2025
d68f643
updated docker
dkleinF5 Dec 2, 2025
7a69c4e
updated jwt sections
dkleinF5 Dec 2, 2025
fd65d03
add info about logger
dkleinF5 Dec 2, 2025
28ca8fa
alan updates
dkleinF5 Dec 2, 2025
f496669
more suggestions
dkleinF5 Dec 2, 2025
016c36e
linted
dkleinF5 Dec 2, 2025
4f52e12
updated alan changes
dkleinF5 Dec 2, 2025
68a961f
fixed spelling
dkleinF5 Dec 3, 2025
b18972c
fixed hyperlinks
dkleinF5 Dec 3, 2025
2814594
updated note
dkleinF5 Dec 3, 2025
c082b0a
fixed hyperlinks again
dkleinF5 Dec 3, 2025
04ba789
fixed compiler link
dkleinF5 Dec 3, 2025
87048e7
fixed compiler hyperlink again
dkleinF5 Dec 3, 2025
aaa8909
updated jwt location
dkleinF5 Dec 4, 2025
ea0e7a6
missing kubctl jwt copy location
dkleinF5 Dec 4, 2025
5ec26cf
fixed hyperlink
dkleinF5 Dec 4, 2025
5f54bf9
updated shutout for jwt locations for experimental kubectl
dkleinF5 Dec 4, 2025
8247123
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 7, 2025
7878550
Update content/waf/install/virtual-environment.md
dkleinF5 Dec 7, 2025
390ab5e
Update content/waf/install/kubernetes.md
dkleinF5 Dec 7, 2025
6e2e701
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
b33b5ee
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 7, 2025
db52961
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
16b2e74
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
919b780
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
00bfcf7
Update content/waf/install/kubernetes-plm.md
dkleinF5 Dec 7, 2025
4ca0369
removed extra the and fixed hyperlinks
dkleinF5 Dec 7, 2025
b2839da
temp
dkleinF5 Dec 8, 2025
262b08c
added aviv suggestions
dkleinF5 Dec 8, 2025
7968ad0
updated hyperlinks
dkleinF5 Dec 8, 2025
45bbda5
updated hyperlinks
dkleinF5 Dec 8, 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
@@ -0,0 +1,12 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
- content/waf/install/kubernetes-plm.md
- content/waf/install/virtual-environment.md
---

1. Log in to [MyF5](https://my.f5.com/manage/s/).
1. Go to **My Products & Plans > Subscriptions** to see your active subscriptions.
1. Find your NGINX subscription, and select the **Subscription ID** for details.
1. Download the **SSL Certificate**, **Private Key** and **JSON Web Token** files from the subscription page.
4 changes: 4 additions & 0 deletions content/includes/waf/dockerfiles/alpine-plus.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ RUN --mount=type=secret,id=nginx-crt,dst=/etc/apk/cert.pem,mode=0644 \
&& ln -sf /dev/stderr /var/log/nginx/error.log \
&& rm -rf /var/cache/apk/*

# Securely copy the JWT license:
RUN --mount=type=secret,id=license-jwt,dst=license.jwt \
cp license.jwt /etc/nginx/license.jwt

# Expose port
EXPOSE 80

Expand Down
4 changes: 4 additions & 0 deletions content/includes/waf/dockerfiles/amazon-plus.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Securely copy the JWT license:
RUN --mount=type=secret,id=license-jwt,dst=license.jwt \
cp license.jwt /etc/nginx/license.jwt

# Expose port
EXPOSE 80

Expand Down
4 changes: 4 additions & 0 deletions content/includes/waf/dockerfiles/debian-plus.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Securely copy the JWT license:
RUN --mount=type=secret,id=license-jwt,dst=license.jwt \
cp license.jwt /etc/nginx/license.jwt

# Expose port
EXPOSE 80

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Supported OS_VER's are 3.22
ARG OS_VER="3.22"

# Base image
FROM alpine:${OS_VER}

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/apk/cert.pem,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/apk/cert.key,mode=0644 \
wget -O /etc/apk/keys/nginx_signing.rsa.pub https://cs.nginx.com/static/keys/nginx_signing.rsa.pub \
&& printf "https://pkgs.nginx.com/plus/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | \
tee -a /etc/apk/repositories \
&& printf "https://pkgs.nginx.com/app-protect-x-plus/alpine/v`egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release`/main\n" | \
tee -a /etc/apk/repositories \
&& apk update \
&& apk add app-protect-module-plus \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log \
&& rm -rf /var/cache/apk/*

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Base image
FROM amazonlinux:2023

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
yum -y install wget ca-certificates shadow-utils \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/plus-amazonlinux2023.repo \
&& echo "[app-protect-x-plus]" > /etc/yum.repos.d/app-protect-plus.repo \
&& echo "name=nginx-app-protect repo" >> /etc/yum.repos.d/app-protect-plus.repo \
&& echo "baseurl=https://pkgs.nginx.com/app-protect-x-plus/amzn/2023/\$basearch/" >> /etc/yum.repos.d/app-protect-plus.repo \
&& echo "sslclientcert=/etc/ssl/nginx/nginx-repo.crt" >> /etc/yum.repos.d/app-protect-plus.repo \
&& echo "sslclientkey=/etc/ssl/nginx/nginx-repo.key" >> /etc/yum.repos.d/app-protect-plus.repo \
&& echo "gpgcheck=0" >> /etc/yum.repos.d/app-protect-plus.repo \
&& echo "enabled=1" >> /etc/yum.repos.d/app-protect-plus.repo \
&& yum -y install app-protect-module-plus \
&& yum clean all \
&& rm -rf /var/cache/yum \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Supported OS_CODENAME's are: bullseye/bookworm
ARG OS_CODENAME=bookworm

# Base image
FROM debian:${OS_CODENAME}

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
apt-get update \
&& apt-get install -y \
apt-transport-https \
lsb-release \
ca-certificates \
wget \
gnupg2 \
debian-archive-keyring \
&& wget -qO - https://cs.nginx.com/static/keys/nginx_signing.key | \
gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null \
&& gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg \
&& printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://pkgs.nginx.com/plus/debian `lsb_release -cs` nginx-plus\n" | \
tee /etc/apt/sources.list.d/nginx-plus.list \
&& printf "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://pkgs.nginx.com/app-protect-x-plus/debian `lsb_release -cs` nginx-plus\n" | \
tee /etc/apt/sources.list.d/nginx-app-protect.list \
&& wget -P /etc/apt/apt.conf.d https://cs.nginx.com/static/files/90pkgs-nginx \
&& apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get install -y app-protect-module-plus \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Base image
FROM oraclelinux:8

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
dnf -y install wget ca-certificates yum-utils \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/nginx-plus-8.repo \
&& echo "[app-protect-x-plus]" > /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "name=nginx-app-protect repo" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "baseurl=https://pkgs.nginx.com/app-protect-x-plus/centos/8/\$basearch/" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "sslclientcert=/etc/ssl/nginx/nginx-repo.crt" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "sslclientkey=/etc/ssl/nginx/nginx-repo.key" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "gpgcheck=0" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& echo "enabled=1" >> /etc/yum.repos.d/app-protect-8-x-plus.repo \
&& dnf clean all \
&& dnf -y install app-protect-module-plus \
&& dnf clean all \
&& rm -rf /var/cache/dnf \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Supported UBI_VERSION's are 7/8/9
ARG UBI_VERSION=8

# Base Image
FROM registry.access.redhat.com/ubi${UBI_VERSION}/ubi

# Define the ARG again after FROM to use it in this stage
ARG UBI_VERSION

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
PKG_MANAGER=dnf; \
if [ "${UBI_VERSION}" = "7" ]; then \
PKG_MANAGER=yum; \
NGINX_PLUS_REPO="nginx-plus-7.4.repo"; \
elif [ "${UBI_VERSION}" = "9" ]; then \
NGINX_PLUS_REPO="plus-${UBI_VERSION}.repo"; \
else \
NGINX_PLUS_REPO="nginx-plus-${UBI_VERSION}.repo"; \
fi \
&& $PKG_MANAGER -y install wget ca-certificates \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/dependencies.repo \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/${NGINX_PLUS_REPO} \
&& echo "[app-protect-x-plus]" > /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "name=nginx-app-protect repo" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "baseurl=https://pkgs.nginx.com/app-protect-x-plus/centos/${UBI_VERSION}/\$basearch/" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientcert=/etc/ssl/nginx/nginx-repo.crt" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientkey=/etc/ssl/nginx/nginx-repo.key" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "gpgcheck=0" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "enabled=1" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& $PKG_MANAGER clean all \
&& $PKG_MANAGER install -y app-protect-module-plus \
&& $PKG_MANAGER clean all \
&& rm -rf /var/cache/$PKG_MANAGER \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Base Image
FROM rockylinux:9

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
dnf -y install wget ca-certificates \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/dependencies.repo \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/${NGINX_PLUS_REPO} \
&& echo "[app-protect-x-plus]" > /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "name=nginx-app-protect repo" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "baseurl=https://pkgs.nginx.com/app-protect-x-plus/centos/${UBI_VERSION}/\$basearch/" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientcert=/etc/ssl/nginx/nginx-repo.crt" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientkey=/etc/ssl/nginx/nginx-repo.key" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "gpgcheck=0" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "enabled=1" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& dnf clean all \
&& dnf install -y app-protect-module-plus \
&& dnf clean all \
&& rm -rf /var/cache/dnf \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
nd-files:
- content/waf/install/docker.md
- content/waf/install/kubernetes.md
---

```dockerfile
# syntax=docker/dockerfile:1

# Base Image
FROM rockylinux:9

# Install NGINX Plus and F5 WAF for NGINX v5 module
RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt,mode=0644 \
--mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key,mode=0644 \
dnf -y install wget ca-certificates \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/dependencies.repo \
&& wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/${NGINX_PLUS_REPO} \
&& echo "[app-protect-x-plus]" > /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "name=nginx-app-protect repo" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "baseurl=https://pkgs.nginx.com/app-protect-x-plus/centos/${UBI_VERSION}/\$basearch/" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientcert=/etc/ssl/nginx/nginx-repo.crt" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "sslclientkey=/etc/ssl/nginx/nginx-repo.key" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "gpgcheck=0" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& echo "enabled=1" >> /etc/yum.repos.d/app-protect-${UBI_VERSION}-x-plus.repo \
&& dnf clean all \
&& dnf install -y app-protect-module-plus \
&& dnf clean all \
&& rm -rf /var/cache/dnf \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log

# Expose port
EXPOSE 80

# Define stop signal
STOPSIGNAL SIGQUIT

# Set default command
CMD ["nginx", "-g", "daemon off;"]
```
Loading