Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
6a9f0b1
docs: add missing prerequisite for installation
dkleinF5 Nov 25, 2025
ee80a4d
added info about nginx x being installed with app protect
dkleinF5 Nov 25, 2025
178e251
updated kubernetes
dkleinF5 Nov 26, 2025
af254e2
added supported os and Kubernetes ctl/cluster
dkleinF5 Nov 26, 2025
69f771a
temp
dkleinF5 Nov 26, 2025
21912b3
test
dkleinF5 Nov 26, 2025
bc549f7
test
dkleinF5 Nov 26, 2025
0dd1c01
added link to my my5
dkleinF5 Nov 26, 2025
01d4b8d
updated myf5 with link
dkleinF5 Nov 26, 2025
4d809bb
added info for docker registry access
dkleinF5 Nov 26, 2025
7186dc9
test for jwt
dkleinF5 Nov 26, 2025
ad3aa0f
added jwt for docker
dkleinF5 Nov 26, 2025
396e961
last work before remove
dkleinF5 Nov 26, 2025
1039de0
remove line since we have the line above it
dkleinF5 Nov 27, 2025
35474f6
updated docker for jwt
dkleinF5 Nov 27, 2025
37498e9
update dockerfile for nap
dkleinF5 Nov 27, 2025
df00895
updated storage
dkleinF5 Dec 1, 2025
65ae1c4
fixed kubernetes
dkleinF5 Dec 1, 2025
b6b5730
ohad fix 1
dkleinF5 Dec 1, 2025
790823c
chnaged title
dkleinF5 Dec 1, 2025
e878f41
CHANGED NAME
dkleinF5 Dec 1, 2025
30e6c63
need jwt anywasy for opensouce for docker cred
dkleinF5 Dec 1, 2025
151c044
removed todo
dkleinF5 Dec 2, 2025
44b0e80
Update content/waf/install/docker.md
dkleinF5 Dec 2, 2025
83c9ae1
Update content/waf/install/docker.md
dkleinF5 Dec 2, 2025
5b01cbf
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 2, 2025
fad32f4
Update content/includes/waf/install-services-registry.md
dkleinF5 Dec 2, 2025
b0ced8a
made changes from suggestions
dkleinF5 Dec 2, 2025
0f13231
updated compiler doc
dkleinF5 Dec 2, 2025
6009761
changes to bare metal
dkleinF5 Dec 2, 2025
f0e4484
updated docker
dkleinF5 Dec 2, 2025
e598457
updated jwt sections
dkleinF5 Dec 2, 2025
34104a5
add info about logger
dkleinF5 Dec 2, 2025
f58e257
alan updates
dkleinF5 Dec 2, 2025
7729be5
more suggestions
dkleinF5 Dec 2, 2025
405d82c
linted
dkleinF5 Dec 2, 2025
5ad2938
updated alan changes
dkleinF5 Dec 2, 2025
b43a607
fixed spelling
dkleinF5 Dec 3, 2025
3efb28f
fixed hyperlinks
dkleinF5 Dec 3, 2025
c7fb1e0
updated note
dkleinF5 Dec 3, 2025
c05d07c
fixed hyperlinks again
dkleinF5 Dec 3, 2025
31d8301
fixed compiler link
dkleinF5 Dec 3, 2025
de2b938
fixed compiler hyperlink again
dkleinF5 Dec 3, 2025
8c2355f
updated jwt location
dkleinF5 Dec 4, 2025
e6dd858
missing kubctl jwt copy location
dkleinF5 Dec 4, 2025
7f0f251
fixed hyperlink
dkleinF5 Dec 4, 2025
0b380a9
updated shutout for jwt locations for experimental kubectl
dkleinF5 Dec 4, 2025
3896e6c
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 7, 2025
e187af5
Update content/waf/install/virtual-environment.md
dkleinF5 Dec 7, 2025
d9f0ca9
Update content/waf/install/kubernetes.md
dkleinF5 Dec 7, 2025
ca16a38
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
9e78bb6
Update content/includes/waf/install-build-image.md
dkleinF5 Dec 7, 2025
628af3c
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
c180b55
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
15260c3
Update content/waf/install/docker.md
dkleinF5 Dec 7, 2025
1a59497
Update content/waf/install/kubernetes-plm.md
dkleinF5 Dec 7, 2025
500a29c
removed extra the and fixed hyperlinks
dkleinF5 Dec 7, 2025
7f3be7d
temp
dkleinF5 Dec 8, 2025
c33c7f4
added aviv suggestions
dkleinF5 Dec 8, 2025
5997180
updated hyperlinks
dkleinF5 Dec 8, 2025
b8fd058
updated hyperlinks
dkleinF5 Dec 8, 2025
ea72132
missing periods
dkleinF5 Dec 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
@@ -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