From 945f61e684fc502df6a476df042b2b00404d7374 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 13:36:43 +0000 Subject: [PATCH 01/64] Update dependency django-auth-ldap to v5.2.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index b1a8304..831c49e 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,4 +1,4 @@ -django-auth-ldap==5.1.0 +django-auth-ldap==5.2.0 dulwich==0.22.8 python3-saml==1.16.0 --no-binary lxml From 4a2b9be52cab4ddad986221513fc728d46a980aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 12:54:48 +0000 Subject: [PATCH 02/64] Update dependency sentry-sdk to v2.28.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 831c49e..2e2e2a5 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.22.8 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.27.0 +sentry-sdk[django]==2.28.0 From 9748e5b9b77c328d2bb278ef5529c6cb65db0f6f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 12:41:10 +0000 Subject: [PATCH 03/64] Update dependency sentry-sdk to v2.30.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 2e2e2a5..ce980ac 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.22.8 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.28.0 +sentry-sdk[django]==2.30.0 From 0e7e68e153f7378fd1c634a6e80fbde627f94d94 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:48:00 +0000 Subject: [PATCH 04/64] Update dependency dulwich to v0.23.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index ce980ac..799da56 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.22.8 +dulwich==0.23.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 8e8e37fcc145fce6fa0a9402deeee690120bf7be Mon Sep 17 00:00:00 2001 From: Jens Rudolf <58146618+jensrudolf@users.noreply.github.com> Date: Mon, 23 Jun 2025 13:08:00 +0200 Subject: [PATCH 05/64] Add AUTH_LDAP_ALWAY_UPDATE_USER to ldap config This change exposes the Django setting AUTH_LDAP_ALWAYS_UPDATE_USER as environment variable to simplify deployments with readonly databases and LDAP based authentication as no extra file is required to be mounted into the container anymore. --- configuration/ldap/ldap_config.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configuration/ldap/ldap_config.py b/configuration/ldap/ldap_config.py index 82fad72..59e6aea 100644 --- a/configuration/ldap/ldap_config.py +++ b/configuration/ldap/ldap_config.py @@ -109,3 +109,6 @@ AUTH_LDAP_USER_ATTR_MAP = { "last_name": environ.get('AUTH_LDAP_ATTR_LASTNAME', 'sn'), "email": environ.get('AUTH_LDAP_ATTR_MAIL', 'mail') } + +# Update user object with the latest values from the LDAP directory every time the user logs in. +AUTH_LDAP_ALWAYS_UPDATE_USER = environ.get('AUTH_LDAP_ALWAYS_UPDATE_USER', 'True').lower() == 'true' From a0b6ce5acee11ea8e8e97d0c571a817420b9cd79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 19:28:55 +0000 Subject: [PATCH 06/64] Update dependency sentry-sdk to v2.31.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 799da56..556d52e 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.30.0 +sentry-sdk[django]==2.31.0 From b845a0f45fd69cdffcb98370b606fd4b5f0e4804 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 08:38:17 +0000 Subject: [PATCH 07/64] Update dependency sentry-sdk to v2.32.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 556d52e..09e1afa 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.31.0 +sentry-sdk[django]==2.32.0 From bc4131017939515bc6bef6e32b2590604c65ce57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 23:37:38 +0000 Subject: [PATCH 08/64] Update dependency dulwich to v0.23.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 09e1afa..6bb19b2 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.23.0 +dulwich==0.23.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 21232c8ce10b97c4c7aa3fad3559a4c9cebfee5f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 13:43:56 +0000 Subject: [PATCH 09/64] Update dependency dulwich to v0.23.2 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 6bb19b2..b5dcc0a 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.23.1 +dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 3320c5d82fb958bdc76177109e40313a54b45439 Mon Sep 17 00:00:00 2001 From: dawnstrider Date: Mon, 7 Jul 2025 23:08:49 +0200 Subject: [PATCH 10/64] Fixed typo for BUILDX_PLATFORM variable The help prints the variable name as BUILDX_PLATFORMS whereas the code uses BUILDX_PLATFORM --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index a7ac817..c12fbe4 100755 --- a/build.sh +++ b/build.sh @@ -62,7 +62,7 @@ DOCKERFILE The name of Dockerfile to use. DOCKER_FROM The base image to use. ${_GREEN}Default:${_CLEAR} 'ubuntu:24.04' -BUILDX_PLATFORMS +BUILDX_PLATFORM Specifies the platform(s) to build the image for. ${_CYAN}Example:${_CLEAR} 'linux/amd64,linux/arm64' ${_GREEN}Default:${_CLEAR} 'linux/amd64' From c8d766a95bc6d4f1110bf8f4f45623bd2e05daaf Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Tue, 8 Jul 2025 07:33:49 +0200 Subject: [PATCH 11/64] Use our example file in the Readme --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d5af477..74b1ad7 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,9 @@ There is a more complete [_Getting Started_ guide on our wiki][wiki-getting-star ```bash git clone -b release https://github.com/netbox-community/netbox-docker.git cd netbox-docker -tee docker-compose.override.yml < Date: Tue, 15 Jul 2025 15:30:00 +0000 Subject: [PATCH 12/64] Update dependency sentry-sdk to v2.33.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index b5dcc0a..37c8f53 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.32.0 +sentry-sdk[django]==2.33.0 From 658fc00a8691e790e3e49f55992c4d36d727a846 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 23:45:53 +0000 Subject: [PATCH 13/64] Update ghcr.io/astral-sh/uv Docker tag to v0.8 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ffb3682..ea17f07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG FROM FROM ${FROM} AS builder -COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /usr/local/bin/ +COPY --from=ghcr.io/astral-sh/uv:0.8 /uv /usr/local/bin/ RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get update -qq \ && apt-get upgrade \ From 950b74e3e60c4c62be50c5de38bb7f7b1a3e4607 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 18 Jul 2025 15:59:13 +0000 Subject: [PATCH 14/64] Update super-linter/super-linter action to v8 --- .github/workflows/push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index c4f22d6..3d27f13 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -29,7 +29,7 @@ jobs: # list of changed files within `super-linter` fetch-depth: 0 - name: Lint Code Base - uses: super-linter/super-linter@v7 + uses: super-linter/super-linter@v8 env: DEFAULT_BRANCH: develop GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From f9f5ae70f9ca2882392b3c747bb4c1984c24816d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Jul 2025 19:45:47 +0000 Subject: [PATCH 15/64] Update dependency sentry-sdk to v2.33.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 37c8f53..36d7b3b 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.33.0 +sentry-sdk[django]==2.33.1 From e58c7358251413f37b0095a772e6b0dce4b892a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:24:34 +0000 Subject: [PATCH 16/64] Update dependency sentry-sdk to v2.33.2 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 36d7b3b..480b5fd 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.33.1 +sentry-sdk[django]==2.33.2 From d1ef353b31fc512202d6552665924e461377baea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Jul 2025 18:12:22 +0000 Subject: [PATCH 17/64] Update dependency sentry-sdk to v2.34.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 480b5fd..3eaa5f0 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.33.2 +sentry-sdk[django]==2.34.0 From 7b10cf0933e8dd7e6ce8934c8821571bf7dcb698 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Jul 2025 12:45:32 +0000 Subject: [PATCH 18/64] Update dependency sentry-sdk to v2.34.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 3eaa5f0..18c20de 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.23.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.34.0 +sentry-sdk[django]==2.34.1 From f03200b88bd65dc6bf2999429e4a90bdf4c4fd0b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 06:47:14 +0000 Subject: [PATCH 19/64] Update dependency dulwich to v0.24.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 18c20de..f4e6e60 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.23.2 +dulwich==0.24.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 68fd99c34a88c3fd926396d78af3a1af2980ed5d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:59:00 +0000 Subject: [PATCH 20/64] Update dependency dulwich to v0.24.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index f4e6e60..0865c1a 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.0 +dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 56e8af355ed01e0f54a33bc55cecda2f66d00360 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Sat, 2 Aug 2025 10:00:17 +0200 Subject: [PATCH 21/64] Fixed build for Netbox feature branch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ea17f07..e22c55d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -89,7 +89,7 @@ WORKDIR /opt/netbox/netbox # Must set permissions for '/opt/netbox/netbox/media' directory # to g+w so that pictures can be uploaded to netbox. -RUN mkdir -p static /opt/unit/state/ /opt/unit/tmp/ \ +RUN mkdir -p static media /opt/unit/state/ /opt/unit/tmp/ \ && chown -R unit:root /opt/unit/ media reports scripts \ && chmod -R g+w /opt/unit/ media reports scripts \ && cd /opt/netbox/ && SECRET_KEY="dummyKeyWithMinimumLength-------------------------" /opt/netbox/venv/bin/python -m mkdocs build \ From 109ef8afd2617415352954dd00cc8149c76a583f Mon Sep 17 00:00:00 2001 From: Kelly Shutt Date: Mon, 4 Aug 2025 13:10:06 -0400 Subject: [PATCH 22/64] Update DATABASES syntax. --- configuration/configuration.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/configuration/configuration.py b/configuration/configuration.py index 577c3f4..6125e2b 100644 --- a/configuration/configuration.py +++ b/configuration/configuration.py @@ -64,19 +64,21 @@ if '*' not in ALLOWED_HOSTS and 'localhost' not in ALLOWED_HOSTS: # PostgreSQL database configuration. See the Django documentation for a complete list of available parameters: # https://docs.djangoproject.com/en/stable/ref/settings/#databases -DATABASE = { - 'NAME': environ.get('DB_NAME', 'netbox'), # Database name - 'USER': environ.get('DB_USER', ''), # PostgreSQL username - 'PASSWORD': _read_secret('db_password', environ.get('DB_PASSWORD', '')), - # PostgreSQL password - 'HOST': environ.get('DB_HOST', 'localhost'), # Database server - 'PORT': environ.get('DB_PORT', ''), # Database port (leave blank for default) - 'OPTIONS': {'sslmode': environ.get('DB_SSLMODE', 'prefer')}, - # Database connection SSLMODE - 'CONN_MAX_AGE': _environ_get_and_map('DB_CONN_MAX_AGE', '300', _AS_INT), - # Max database connection age - 'DISABLE_SERVER_SIDE_CURSORS': _environ_get_and_map('DB_DISABLE_SERVER_SIDE_CURSORS', 'False', _AS_BOOL), - # Disable the use of server-side cursors transaction pooling +DATABASES = { + 'default': { + 'NAME': environ.get('DB_NAME', 'netbox'), # Database name + 'USER': environ.get('DB_USER', ''), # PostgreSQL username + 'PASSWORD': _read_secret('db_password', environ.get('DB_PASSWORD', '')), + # PostgreSQL password + 'HOST': environ.get('DB_HOST', 'localhost'), # Database server + 'PORT': environ.get('DB_PORT', ''), # Database port (leave blank for default) + 'OPTIONS': {'sslmode': environ.get('DB_SSLMODE', 'prefer')}, + # Database connection SSLMODE + 'CONN_MAX_AGE': _environ_get_and_map('DB_CONN_MAX_AGE', '300', _AS_INT), + # Max database connection age + 'DISABLE_SERVER_SIDE_CURSORS': _environ_get_and_map('DB_DISABLE_SERVER_SIDE_CURSORS', 'False', _AS_BOOL), + # Disable the use of server-side cursors transaction pooling + } } # Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate From e9b6231d03145855ea598a6b214b09bad1f93890 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 15:30:00 +0000 Subject: [PATCH 23/64] Update actions/checkout action to v5 --- .github/workflows/push.yml | 4 ++-- .github/workflows/release.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 3d27f13..e5aaf69 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -23,7 +23,7 @@ jobs: packages: read statuses: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Full git history is needed to get a proper # list of changed files within `super-linter` @@ -70,7 +70,7 @@ jobs: steps: - id: git-checkout name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - id: buildx-setup name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71b718c..2d83729 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,7 @@ jobs: steps: - id: source-checkout name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: ${{ matrix.build.branch }} - id: set-netbox-docker-version From 71ebfca443f0345a812c40b5fc7bb914a5074c4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:03:27 +0000 Subject: [PATCH 24/64] Update dependency sentry-sdk to v2.35.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 0865c1a..d03d874 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.34.1 +sentry-sdk[django]==2.35.0 From 00d8dd75d6f13175ee4d6a64c5889d95217bf1e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 00:38:39 +0000 Subject: [PATCH 25/64] Update docker.io/valkey/valkey Docker tag to v9 --- docker-compose.test.yml | 2 +- docker-compose.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index bbc139c..17ba358 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -49,7 +49,7 @@ services: retries: 5 redis: &redis - image: docker.io/valkey/valkey:8.1-alpine + image: docker.io/valkey/valkey:9.0-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env diff --git a/docker-compose.yml b/docker-compose.yml index 3ba2fd4..da03da6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: # redis redis: - image: docker.io/valkey/valkey:8.1-alpine + image: docker.io/valkey/valkey:9.0-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env @@ -74,7 +74,7 @@ services: volumes: - netbox-redis-data:/data redis-cache: - image: docker.io/valkey/valkey:8.1-alpine + image: docker.io/valkey/valkey:9.0-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env From 67eff20f7daa55dad1a208e169f695b7464e80fb Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Tue, 5 Aug 2025 08:06:22 +0200 Subject: [PATCH 26/64] Housekeeping --- Dockerfile | 1 - docker-compose.test.yml | 9 --------- docker-compose.yml | 12 ------------ docker/housekeeping.sh | 8 -------- env/netbox.env | 1 - 5 files changed, 31 deletions(-) delete mode 100755 docker/housekeeping.sh diff --git a/Dockerfile b/Dockerfile index e22c55d..452b44c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -79,7 +79,6 @@ COPY ${NETBOX_PATH} /opt/netbox COPY docker/configuration.docker.py /opt/netbox/netbox/netbox/configuration.py COPY docker/ldap_config.docker.py /opt/netbox/netbox/netbox/ldap_config.py COPY docker/docker-entrypoint.sh /opt/netbox/docker-entrypoint.sh -COPY docker/housekeeping.sh /opt/netbox/housekeeping.sh COPY docker/launch-netbox.sh /opt/netbox/launch-netbox.sh COPY configuration/ /etc/netbox/config/ COPY docker/nginx-unit.json /etc/unit/ diff --git a/docker-compose.test.yml b/docker-compose.test.yml index bbc139c..9388022 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -28,15 +28,6 @@ services: start_period: 40s timeout: 3s interval: 15s - netbox-housekeeping: - <<: *netbox - command: - - /opt/netbox/housekeeping.sh - healthcheck: - test: ps -aux | grep -v grep | grep -q housekeeping || exit 1 - start_period: 40s - timeout: 3s - interval: 15s postgres: image: docker.io/postgres:17-alpine diff --git a/docker-compose.yml b/docker-compose.yml index 3ba2fd4..8ac3358 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,18 +31,6 @@ services: start_period: 20s timeout: 3s interval: 15s - netbox-housekeeping: - <<: *netbox - depends_on: - netbox: - condition: service_healthy - command: - - /opt/netbox/housekeeping.sh - healthcheck: - test: ps -aux | grep -v grep | grep -q housekeeping || exit 1 - start_period: 20s - timeout: 3s - interval: 15s # postgres postgres: diff --git a/docker/housekeeping.sh b/docker/housekeeping.sh deleted file mode 100755 index 47a4a3d..0000000 --- a/docker/housekeeping.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -SLEEP_SECONDS=${HOUSEKEEPING_INTERVAL:=86400} -echo "Interval set to ${SLEEP_SECONDS} seconds" -while true; do - date - /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py housekeeping - sleep "${SLEEP_SECONDS}s" -done diff --git a/env/netbox.env b/env/netbox.env index ca22549..c89844f 100644 --- a/env/netbox.env +++ b/env/netbox.env @@ -15,7 +15,6 @@ EMAIL_USERNAME=netbox EMAIL_USE_SSL=false EMAIL_USE_TLS=false GRAPHQL_ENABLED=true -HOUSEKEEPING_INTERVAL=86400 MEDIA_ROOT=/opt/netbox/netbox/media METRICS_ENABLED=false REDIS_CACHE_DATABASE=1 From af562671e2c515fdf9b715ceec47fec6c8414702 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 15:54:13 +0000 Subject: [PATCH 27/64] Update dependency sentry-sdk to v2.35.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index d03d874..0f4b593 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.35.0 +sentry-sdk[django]==2.35.1 From 8dac9f2dc7c7a371748e6a5ce145da2a3016ed8c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 21:58:31 +0000 Subject: [PATCH 28/64] Update dependency sentry-sdk to v2.35.2 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 0f4b593..0867083 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.35.1 +sentry-sdk[django]==2.35.2 From e61aba8388849b7ff90254e635f178acbfd1a754 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Wed, 3 Sep 2025 07:50:41 +0200 Subject: [PATCH 29/64] Preparation for 3.4.0 --- VERSION | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 0fa4ae4..1809198 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.3.0 \ No newline at end of file +3.4.0 diff --git a/docker-compose.yml b/docker-compose.yml index 8ac3358..a5e78d4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: netbox: &netbox - image: docker.io/netboxcommunity/netbox:${VERSION-v4.3-3.3.0} + image: docker.io/netboxcommunity/netbox:${VERSION-v4.4-3.4.0} depends_on: - postgres - redis From 1b0da4048bd74c3187b406dfd670ffc5df93c6db Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Wed, 3 Sep 2025 07:59:56 +0200 Subject: [PATCH 30/64] Disable Trivy for now --- .github/workflows/push.yml | 1 + VERSION | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index e5aaf69..73b6a9c 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -40,6 +40,7 @@ jobs: VALIDATE_DOCKERFILE: false VALIDATE_GITLEAKS: false VALIDATE_JSCPD: false + VALIDATE_TRIVY: false FILTER_REGEX_EXCLUDE: (.*/)?(LICENSE|configuration/.*) EDITORCONFIG_FILE_NAME: .editorconfig-checker.json DOCKERFILE_HADOLINT_FILE_NAME: .hadolint.yaml diff --git a/VERSION b/VERSION index 1809198..fbcbf73 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.0 +3.4.0 \ No newline at end of file From e9a8e14aa8511ec82f414723bb64546a113fa33f Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Wed, 3 Sep 2025 08:10:15 +0200 Subject: [PATCH 31/64] Disable zizmor for now --- .github/workflows/push.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 73b6a9c..a4833e1 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -41,6 +41,7 @@ jobs: VALIDATE_GITLEAKS: false VALIDATE_JSCPD: false VALIDATE_TRIVY: false + VALIDATE_GITHUB_ACTIONS_ZIZMOR: false FILTER_REGEX_EXCLUDE: (.*/)?(LICENSE|configuration/.*) EDITORCONFIG_FILE_NAME: .editorconfig-checker.json DOCKERFILE_HADOLINT_FILE_NAME: .hadolint.yaml From fb1cfd880aaf910f02893ae892d3a171f913d742 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 09:54:49 +0000 Subject: [PATCH 32/64] Update dependency sentry-sdk to v2.36.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 0867083..602b28f 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.35.2 +sentry-sdk[django]==2.36.0 From 76f670faaa6a885e119f5a28f62520309e5fb646 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:59:40 +0000 Subject: [PATCH 33/64] Update dependency sentry-sdk to v2.37.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 602b28f..dd7043d 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.36.0 +sentry-sdk[django]==2.37.0 From 4744eeb3ef331671da647d9df32fec32d3608e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Colombaro?= Date: Sun, 7 Sep 2025 14:41:44 +0200 Subject: [PATCH 34/64] Update BUILD_DATE format to include seconds * Comply with all standards (RFC 3339, ISO 8601, and HTML). * Reduce ambiguity. * Ensure a fully compliant `org.opencontainers.image.created`. (fix artifacthub error) --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index c12fbe4..ef4dc96 100755 --- a/build.sh +++ b/build.sh @@ -223,7 +223,7 @@ fi ### # Variables for labelling the docker image ### -BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M+00:00')" +BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%S+00:00')" if [ -d ".git" ] && [ -z "${SKIP_GIT}" ]; then GIT_REF="$(git rev-parse HEAD)" From 942fc04776f4f9285944097e47e01524ff4ef5fd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:47:12 +0000 Subject: [PATCH 35/64] Update dependency sentry-sdk to v2.37.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index dd7043d..928d472 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.37.0 +sentry-sdk[django]==2.37.1 From e62af8be769852bac73ab89d814e8d6b2eeac6ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Hofst=C3=A4tter?= <6820505+alexanderhofstaetter@users.noreply.github.com> Date: Sat, 13 Sep 2025 13:06:29 +0200 Subject: [PATCH 36/64] Increase default NGINX Unit request body limit to 100 MB in docker/nginx-unit.json The current NGINX Unit configuration in netbox-docker implicitly limits incoming HTTP request bodies to roughly 2.5 MB. This causes file uploads (custom scripts, attachments, etc.) to fail with HTTP 413 before they reach Django, even when NetBox settings like FILE_UPLOAD_MAX_MEMORY_SIZE are raised. This change adds a settings block to docker/nginx-unit.json to raise the default limit: { "settings": { "http": { "max_body_size": 104857600 } } } With this change, new deployments can handle uploads up to 100 MB out of the box, aligning the container default with the capabilities of NetBox core and preventing unexpected 413 errors. Fixes: https://github.com/netbox-community/netbox-docker/issues/897 --- docker/nginx-unit.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docker/nginx-unit.json b/docker/nginx-unit.json index c095611..95fa1ef 100644 --- a/docker/nginx-unit.json +++ b/docker/nginx-unit.json @@ -73,5 +73,10 @@ } } }, - "access_log": "/dev/stdout" + "access_log": "/dev/stdout", + "settings": { + "http": { + "max_body_size": 104857600 + } + } } From c05e838edc51f07f24616b131492e0cbf7ccb8aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:32:23 +0000 Subject: [PATCH 37/64] Update dependency sentry-sdk to v2.38.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 928d472..18e914b 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.37.1 +sentry-sdk[django]==2.38.0 From 2c49500e8d5c3ec2172a564e99213d1ccea79504 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Sep 2025 12:49:11 +0000 Subject: [PATCH 38/64] Update dependency sentry-sdk to v2.39.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 18e914b..e285b55 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.1 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.38.0 +sentry-sdk[django]==2.39.0 From 88a2e489230518ba01541525c2b007a5b4179419 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 02:25:40 +0000 Subject: [PATCH 39/64] Update docker.io/postgres Docker tag to v18 --- docker-compose.test.yml | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 9388022..c75b13f 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -30,7 +30,7 @@ services: interval: 15s postgres: - image: docker.io/postgres:17-alpine + image: docker.io/postgres:18-alpine env_file: env/postgres.env healthcheck: test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER ## $$ because of docker-compose diff --git a/docker-compose.yml b/docker-compose.yml index a5e78d4..907a76f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,7 +34,7 @@ services: # postgres postgres: - image: docker.io/postgres:17-alpine + image: docker.io/postgres:18-alpine healthcheck: test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER start_period: 20s From a945236c818f563c2ca483db23d26f0992ffb000 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Fri, 26 Sep 2025 09:46:29 +0200 Subject: [PATCH 40/64] Preparation for 3.4.1 --- VERSION | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index fbcbf73..47b322c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.0 \ No newline at end of file +3.4.1 diff --git a/docker-compose.yml b/docker-compose.yml index a5e78d4..0af361c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: netbox: &netbox - image: docker.io/netboxcommunity/netbox:${VERSION-v4.4-3.4.0} + image: docker.io/netboxcommunity/netbox:${VERSION-v4.4-3.4.1} depends_on: - postgres - redis From dbc1b37cf7088c01f87a1527ca393f77c5f0bf7c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 10:42:24 +0000 Subject: [PATCH 41/64] Update dependency dulwich to v0.24.2 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index e285b55..1fa64b9 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.1 +dulwich==0.24.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 88bc5cf8d6c91cd8b88428f1e5ab9da7692ff2c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:37:57 +0000 Subject: [PATCH 42/64] Update dependency sentry-sdk to v2.40.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 1fa64b9..c65b635 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.2 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.39.0 +sentry-sdk[django]==2.40.0 From 7067475a81a7bd0591c03a3285a6fe90544f4421 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 05:08:30 +0000 Subject: [PATCH 43/64] Update ghcr.io/astral-sh/uv Docker tag to v0.9 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 452b44c..b398e9c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG FROM FROM ${FROM} AS builder -COPY --from=ghcr.io/astral-sh/uv:0.8 /uv /usr/local/bin/ +COPY --from=ghcr.io/astral-sh/uv:0.9 /uv /usr/local/bin/ RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get update -qq \ && apt-get upgrade \ From 1f0ef020a9d1372f6786d55c907870a46493a818 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Wed, 8 Oct 2025 08:12:59 +0200 Subject: [PATCH 44/64] Support new API_TOKEN format Allows configuration the new API_TOKEN_PEPPERS setting from an ENV variable or secret file. Feature request: https://github.com/netbox-community/netbox/issues/20210 Pull request: https://github.com/netbox-community/netbox/pull/20477 --- .github/workflows/push.yml | 3 ++- configuration/configuration.py | 5 +++++ env/netbox.env | 1 + test-configuration/test_config.py | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index a4833e1..f4b6305 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -36,12 +36,13 @@ jobs: SUPPRESS_POSSUM: true LINTER_RULES_PATH: / VALIDATE_ALL_CODEBASE: false + VALIDATE_BIOME_FORMAT: false VALIDATE_CHECKOV: false VALIDATE_DOCKERFILE: false + VALIDATE_GITHUB_ACTIONS_ZIZMOR: false VALIDATE_GITLEAKS: false VALIDATE_JSCPD: false VALIDATE_TRIVY: false - VALIDATE_GITHUB_ACTIONS_ZIZMOR: false FILTER_REGEX_EXCLUDE: (.*/)?(LICENSE|configuration/.*) EDITORCONFIG_FILE_NAME: .editorconfig-checker.json DOCKERFILE_HADOLINT_FILE_NAME: .hadolint.yaml diff --git a/configuration/configuration.py b/configuration/configuration.py index 6125e2b..8dfa736 100644 --- a/configuration/configuration.py +++ b/configuration/configuration.py @@ -116,6 +116,11 @@ REDIS = { # https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY SECRET_KEY = _read_secret('secret_key', environ.get('SECRET_KEY', '')) +API_TOKEN_PEPPERS = {} +if api_token_pepper := _read_secret('api_token_pepper_1', environ.get('API_TOKEN_PEPPER_1', '')): + API_TOKEN_PEPPERS.update({1: api_token_pepper}) + + ######################### # # diff --git a/env/netbox.env b/env/netbox.env index c89844f..52fca3b 100644 --- a/env/netbox.env +++ b/env/netbox.env @@ -1,3 +1,4 @@ +API_TOKEN_PEPPER_1=Qy+F=OTeGskWQ(wTMgjc+NPPlz6YwFXY=KHIIg=wpYXT&e(6u8 CORS_ORIGIN_ALLOW_ALL=True DB_HOST=postgres DB_NAME=netbox diff --git a/test-configuration/test_config.py b/test-configuration/test_config.py index 308d437..10f414c 100644 --- a/test-configuration/test_config.py +++ b/test-configuration/test_config.py @@ -10,3 +10,7 @@ PLUGINS = [ ALLOW_TOKEN_RETRIEVAL = True DEFAULT_PERMISSIONS = {} + +API_TOKEN_PEPPERS = { + 1: 'TEST-VALUE-DO-NOT-USE-TEST-VALUE-DO-NOT-USE-TEST-VALUE-DO-NOT-USE', +} From f89f9074083660d01947962e725264fa0063cf3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 01:45:18 +0000 Subject: [PATCH 45/64] Update dependency dulwich to v0.24.3 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index c65b635..ec870bc 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.2 +dulwich==0.24.3 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 85615a9bea38dcd44a368b38435dfe20a27faa48 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 04:46:28 +0000 Subject: [PATCH 46/64] Update dependency sentry-sdk to v2.41.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index ec870bc..6710500 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.3 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.40.0 +sentry-sdk[django]==2.41.0 From 95bcfeb69d0fc9fba273452f5b3b2fae3fe21f7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 21:08:52 +0000 Subject: [PATCH 47/64] Update dependency dulwich to v0.24.4 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 6710500..83a3ac4 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.3 +dulwich==0.24.4 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 07258394d151fc27c67a6db822a8a408fc588570 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 10:43:52 +0000 Subject: [PATCH 48/64] Update dependency sentry-sdk to v2.42.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 83a3ac4..608b117 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.4 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.41.0 +sentry-sdk[django]==2.42.0 From 56d27f84a7791adc918761d32a092804f2f29515 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:11:49 +0000 Subject: [PATCH 49/64] Update dependency dulwich to v0.24.5 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 608b117..551fd69 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.4 +dulwich==0.24.5 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From eb2822a978fdba91dd45200a0a902dac3de2eff4 Mon Sep 17 00:00:00 2001 From: Willard Nilges Date: Sun, 19 Oct 2025 01:17:23 -0400 Subject: [PATCH 50/64] Fix typo in error message for Unit configuration --- docker/launch-netbox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/launch-netbox.sh b/docker/launch-netbox.sh index 6cc63ba..11da1de 100755 --- a/docker/launch-netbox.sh +++ b/docker/launch-netbox.sh @@ -36,7 +36,7 @@ load_configuration() { http://localhost/config ) if [ "$RESP_CODE" != "200" ]; then - echo "⚠️ Could no load Unit configuration" + echo "⚠️ Could not load Unit configuration" kill "$(cat /opt/unit/unit.pid)" return 1 fi From b0aad0dfda909d6456e098902eff5a308a87721a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 19 Oct 2025 12:45:34 +0000 Subject: [PATCH 51/64] Update dependency dulwich to v0.24.6 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 551fd69..570f05d 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.5 +dulwich==0.24.6 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 73bbf17d6bed7ef35b112e1ee3a0479447ddccd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:32:40 +0000 Subject: [PATCH 52/64] Update dependency sentry-sdk to v2.42.1 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 570f05d..89e3ac6 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.6 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.42.0 +sentry-sdk[django]==2.42.1 From 2d6d5058fe803f412ff2276d5975766217db300d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 12:46:08 +0000 Subject: [PATCH 53/64] Update dependency dulwich to v0.24.7 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 89e3ac6..6e197a1 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.6 +dulwich==0.24.7 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 3f0f4e7160121e688f270f550cbb0eb6ee7f690a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 19:47:17 +0000 Subject: [PATCH 54/64] Update dependency sentry-sdk to v2.43.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 6e197a1..a64f051 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.7 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.42.1 +sentry-sdk[django]==2.43.0 From 35473e755b94a1b90d7c31f2cc4a4bf4c60c907e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Oct 2025 03:30:40 +0000 Subject: [PATCH 55/64] Update dependency dulwich to v0.24.8 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 6e197a1..1c83807 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.7 +dulwich==0.24.8 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 4965e7e988a0b6d5dc4d09829657e5bcb1305b84 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Mon, 10 Nov 2025 10:28:40 +0100 Subject: [PATCH 56/64] Preparation for 3.4.2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 47b322c..a423d42 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.1 +3.4.2 \ No newline at end of file From 22688dedd44a45ecb136d304734652f609a6ecb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Nov 2025 20:51:29 +0000 Subject: [PATCH 57/64] Update dependency dulwich to v0.24.10 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index a42196f..22bdc09 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,5 @@ django-auth-ldap==5.2.0 -dulwich==0.24.8 +dulwich==0.24.10 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From f474cc585c609355facd72fb4f522d28f75be87f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:43:40 +0000 Subject: [PATCH 58/64] Update dependency sentry-sdk to v2.44.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 22bdc09..65dc789 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -3,4 +3,4 @@ dulwich==0.24.10 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.43.0 +sentry-sdk[django]==2.44.0 From 07fcb205b4f6bd00d98c39fe84629ca7f1f76325 Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Wed, 12 Nov 2025 13:57:50 +0100 Subject: [PATCH 59/64] Switch server to Granian (#1561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Switch server to Granian Because the development of Nginx Unit has been stopped, switch the server to Granian which still allows to serve the Python application and the static files from one server. * Addressed review comments * Update docker/launch-netbox.sh Co-authored-by: Christian Mäder * Update docker/launch-netbox.sh Co-authored-by: Christian Mäder --------- Co-authored-by: Christian Mäder --- .github/workflows/push.yml | 1 + Dockerfile | 24 ++++----- docker-compose.override.yml.example | 4 -- docker-compose.test.yml | 2 +- docker-compose.yml | 2 +- docker/granian.py | 13 +++++ docker/launch-netbox.sh | 73 +++++++------------------ docker/nginx-unit.json | 82 ----------------------------- docker/unit.list | 1 - env/netbox.env | 2 + requirements-container.txt | 1 + 11 files changed, 47 insertions(+), 158 deletions(-) create mode 100644 docker/granian.py delete mode 100644 docker/nginx-unit.json delete mode 100644 docker/unit.list diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f4b6305..fa6bab1 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -42,6 +42,7 @@ jobs: VALIDATE_GITHUB_ACTIONS_ZIZMOR: false VALIDATE_GITLEAKS: false VALIDATE_JSCPD: false + VALIDATE_PYTHON_PYLINT: false VALIDATE_TRIVY: false FILTER_REGEX_EXCLUDE: (.*/)?(LICENSE|configuration/.*) EDITORCONFIG_FILE_NAME: .editorconfig-checker.json diff --git a/Dockerfile b/Dockerfile index b398e9c..753200a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ ARG NETBOX_PATH COPY ${NETBOX_PATH}/requirements.txt requirements-container.txt / ENV VIRTUAL_ENV=/opt/netbox/venv RUN \ - # Gunicorn is not needed because we use Nginx Unit + # Gunicorn is not needed because we use Granian sed -i -e '/gunicorn/d' /requirements.txt && \ # We need 'social-auth-core[all]' in the Docker image. But if we put it in our own requirements-container.txt # we have potential version conflicts and the build will fail. @@ -46,8 +46,6 @@ RUN \ ARG FROM FROM ${FROM} AS main -COPY docker/unit.list /etc/apt/sources.list.d/unit.list -ADD --chmod=444 --chown=0:0 https://unit.nginx.org/keys/nginx-keyring.gpg /usr/share/keyrings/nginx-keyring.gpg RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get update -qq \ && apt-get upgrade \ @@ -64,8 +62,6 @@ RUN export DEBIAN_FRONTEND=noninteractive \ openssl \ python3 \ tini \ - unit-python3.12=1.34.2-1~noble \ - unit=1.34.2-1~noble \ && rm -rf /var/lib/apt/lists/* # Copy the modified 'requirements*.txt' files, to have the files actually used during installation @@ -81,21 +77,21 @@ COPY docker/ldap_config.docker.py /opt/netbox/netbox/netbox/ldap_config.py COPY docker/docker-entrypoint.sh /opt/netbox/docker-entrypoint.sh COPY docker/launch-netbox.sh /opt/netbox/launch-netbox.sh COPY configuration/ /etc/netbox/config/ -COPY docker/nginx-unit.json /etc/unit/ +COPY docker/granian.py /opt/netbox/netbox/netbox/granian.py COPY VERSION /opt/netbox/VERSION WORKDIR /opt/netbox/netbox # Must set permissions for '/opt/netbox/netbox/media' directory # to g+w so that pictures can be uploaded to netbox. -RUN mkdir -p static media /opt/unit/state/ /opt/unit/tmp/ \ - && chown -R unit:root /opt/unit/ media reports scripts \ - && chmod -R g+w /opt/unit/ media reports scripts \ - && cd /opt/netbox/ && SECRET_KEY="dummyKeyWithMinimumLength-------------------------" /opt/netbox/venv/bin/python -m mkdocs build \ - --config-file /opt/netbox/mkdocs.yml --site-dir /opt/netbox/netbox/project-static/docs/ \ - && DEBUG="true" SECRET_KEY="dummyKeyWithMinimumLength-------------------------" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input \ - && mkdir /opt/netbox/netbox/local \ - && echo "build: Docker-$(cat /opt/netbox/VERSION)" > /opt/netbox/netbox/local/release.yaml +RUN useradd --home-dir /opt/netbox/ --no-create-home --no-user-group --system --shell /bin/false --uid 999 --gid 0 netbox \ + && mkdir -p static media local \ + && chown -R netbox:root media reports scripts \ + && chmod -R g+w media reports scripts \ + && cd /opt/netbox/ && SECRET_KEY="dummyKeyWithMinimumLength-------------------------" /opt/netbox/venv/bin/python -m mkdocs build \ + --config-file /opt/netbox/mkdocs.yml --site-dir /opt/netbox/netbox/project-static/docs/ \ + && DEBUG="true" SECRET_KEY="dummyKeyWithMinimumLength-------------------------" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input \ + && echo "build: Docker-$(cat /opt/netbox/VERSION)" > /opt/netbox/netbox/local/release.yaml ENV LANG=C.utf8 PATH=/opt/netbox/venv/bin:$PATH VIRTUAL_ENV=/opt/netbox/venv UV_NO_CACHE=1 ENTRYPOINT [ "/usr/bin/tini", "--" ] diff --git a/docker-compose.override.yml.example b/docker-compose.override.yml.example index d7ef961..1394814 100644 --- a/docker-compose.override.yml.example +++ b/docker-compose.override.yml.example @@ -2,9 +2,6 @@ services: netbox: ports: - "8000:8080" - # If you want the Nginx unit status page visible from the - # outside of the container add the following port mapping: - # - "8001:8081" # healthcheck: # Time for which the health check can fail after the container is started. # This depends mostly on the performance of your database. On the first start, @@ -19,4 +16,3 @@ services: # SUPERUSER_EMAIL: "" # SUPERUSER_NAME: "" # SUPERUSER_PASSWORD: "" - diff --git a/docker-compose.test.yml b/docker-compose.test.yml index d5acd95..8e22aa6 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -9,7 +9,7 @@ services: redis-cache: condition: service_healthy env_file: env/netbox.env - user: "unit:root" + user: "netbox:root" volumes: - ./test-configuration/test_config.py:/etc/netbox/config/test_config.py:z,ro healthcheck: diff --git a/docker-compose.yml b/docker-compose.yml index 2049c33..86586c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,7 @@ services: - redis - redis-cache env_file: env/netbox.env - user: "unit:root" + user: "netbox:root" healthcheck: test: curl -f http://localhost:8080/login/ || exit 1 start_period: 90s diff --git a/docker/granian.py b/docker/granian.py new file mode 100644 index 0000000..651b7da --- /dev/null +++ b/docker/granian.py @@ -0,0 +1,13 @@ +from granian.utils.proxies import wrap_wsgi_with_proxy_headers +from netbox.wsgi import application + +application = wrap_wsgi_with_proxy_headers( + application, + trusted_hosts=[ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + "fc00::/7", + "fe80::/10", + ], +) diff --git a/docker/launch-netbox.sh b/docker/launch-netbox.sh index 11da1de..a61e076 100755 --- a/docker/launch-netbox.sh +++ b/docker/launch-netbox.sh @@ -1,57 +1,20 @@ #!/bin/bash -UNIT_CONFIG="${UNIT_CONFIG-/etc/unit/nginx-unit.json}" -# Also used in "nginx-unit.json" -UNIT_SOCKET="/opt/unit/unit.sock" - -load_configuration() { - MAX_WAIT=10 - WAIT_COUNT=0 - while [ ! -S $UNIT_SOCKET ]; do - if [ $WAIT_COUNT -ge $MAX_WAIT ]; then - echo "⚠️ No control socket found; configuration will not be loaded." - return 1 - fi - - WAIT_COUNT=$((WAIT_COUNT + 1)) - echo "⏳ Waiting for control socket to be created... (${WAIT_COUNT}/${MAX_WAIT})" - - sleep 1 - done - - # even when the control socket exists, it does not mean unit has finished initialisation - # this curl call will get a reply once unit is fully launched - curl --silent --output /dev/null --request GET --unix-socket $UNIT_SOCKET http://localhost/ - - echo "⚙️ Applying configuration from $UNIT_CONFIG" - - RESP_CODE=$( - curl \ - --silent \ - --output /dev/null \ - --write-out '%{http_code}' \ - --request PUT \ - --data-binary "@${UNIT_CONFIG}" \ - --unix-socket $UNIT_SOCKET \ - http://localhost/config - ) - if [ "$RESP_CODE" != "200" ]; then - echo "⚠️ Could not load Unit configuration" - kill "$(cat /opt/unit/unit.pid)" - return 1 - fi - - echo "✅ Unit configuration loaded successfully" -} - -load_configuration & - -exec unitd \ - --no-daemon \ - --control unix:$UNIT_SOCKET \ - --pid /opt/unit/unit.pid \ - --log /dev/stdout \ - --statedir /opt/unit/state/ \ - --tmpdir /opt/unit/tmp/ \ - --user unit \ - --group root +exec granian \ + --host "::" \ + --port "8080" \ + --interface "wsgi" \ + --no-ws \ + --workers "${GRANIAN_WORKERS:-4}" \ + --respawn-failed-workers \ + --backpressure "${GRANIAN_BACKPRESSURE:-${GRANIAN_WORKERS:-4}}" \ + --loop "uvloop" \ + --log \ + --log-level "info" \ + --access-log \ + --working-dir "/opt/netbox/netbox/" \ + --static-path-route "/static" \ + --static-path-mount "/opt/netbox/netbox/static/" \ + --pid-file "/tmp/granian.pid" \ + "${GRANIAN_EXTRA_ARGS[@]}" \ + "netbox.granian:application" diff --git a/docker/nginx-unit.json b/docker/nginx-unit.json deleted file mode 100644 index 95fa1ef..0000000 --- a/docker/nginx-unit.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "listeners": { - "0.0.0.0:8080": { - "pass": "routes/main", - "forwarded": { - "client_ip": "X-Forwarded-For", - "protocol": "X-Forwarded-Proto", - "source": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] - } - }, - "0.0.0.0:8081": { - "pass": "routes/status", - "forwarded": { - "client_ip": "X-Forwarded-For", - "protocol": "X-Forwarded-Proto", - "source": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] - } - }, - "[::]:8080": { - "pass": "routes/main", - "forwarded": { - "client_ip": "X-Forwarded-For", - "protocol": "X-Forwarded-Proto", - "source": ["fc00::/7", "fe80::/10"] - } - }, - "[::]:8081": { - "pass": "routes/status", - "forwarded": { - "client_ip": "X-Forwarded-For", - "protocol": "X-Forwarded-Proto", - "source": ["fc00::/7", "fe80::/10"] - } - } - }, - "routes": { - "main": [ - { - "match": { - "uri": "/static/*" - }, - "action": { - "share": "/opt/netbox/netbox${uri}" - } - }, - { - "action": { - "pass": "applications/netbox" - } - } - ], - "status": [ - { - "match": { - "uri": "/status/*" - }, - "action": { - "proxy": "http://unix:/opt/unit/unit.sock" - } - } - ] - }, - "applications": { - "netbox": { - "type": "python 3", - "path": "/opt/netbox/netbox/", - "module": "netbox.wsgi", - "home": "/opt/netbox/venv", - "processes": { - "max": 4, - "spare": 1, - "idle_timeout": 120 - } - } - }, - "access_log": "/dev/stdout", - "settings": { - "http": { - "max_body_size": 104857600 - } - } -} diff --git a/docker/unit.list b/docker/unit.list deleted file mode 100644 index 6193723..0000000 --- a/docker/unit.list +++ /dev/null @@ -1 +0,0 @@ -deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] http://packages.nginx.org/unit/ubuntu/ noble unit diff --git a/env/netbox.env b/env/netbox.env index 52fca3b..88c8705 100644 --- a/env/netbox.env +++ b/env/netbox.env @@ -15,6 +15,8 @@ EMAIL_USERNAME=netbox # EMAIL_USE_SSL and EMAIL_USE_TLS are mutually exclusive, i.e. they can't both be `true`! EMAIL_USE_SSL=false EMAIL_USE_TLS=false +GRANIAN_BACKPRESSURE=4 +GRANIAN_WORKERS=4 GRAPHQL_ENABLED=true MEDIA_ROOT=/opt/netbox/netbox/media METRICS_ENABLED=false diff --git a/requirements-container.txt b/requirements-container.txt index 65dc789..74b4b1e 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,5 +1,6 @@ django-auth-ldap==5.2.0 dulwich==0.24.10 +granian[uvloop]==2.5.7 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From db027b14a309b600ee633826d5d782bbb6139195 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 16 Nov 2025 17:56:30 +0000 Subject: [PATCH 60/64] Update dependency granian to v2.6.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 74b4b1e..5e50235 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -1,6 +1,6 @@ django-auth-ldap==5.2.0 dulwich==0.24.10 -granian[uvloop]==2.5.7 +granian[uvloop]==2.6.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec From 74b0a41f3ed55c44dccf6452f48ddfc0d0a9b454 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Nov 2025 22:51:24 +0000 Subject: [PATCH 61/64] Update dependency sentry-sdk to v2.45.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 5e50235..cd5bf73 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -4,4 +4,4 @@ granian[uvloop]==2.6.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.44.0 +sentry-sdk[django]==2.45.0 From 0f2fb47d9c61283a2ba42d069b8bcbe4064b4314 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 18:38:17 +0000 Subject: [PATCH 62/64] Update actions/checkout action to v6 --- .github/workflows/push.yml | 4 ++-- .github/workflows/release.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index fa6bab1..4eb4efd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -23,7 +23,7 @@ jobs: packages: read statuses: write steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Full git history is needed to get a proper # list of changed files within `super-linter` @@ -74,7 +74,7 @@ jobs: steps: - id: git-checkout name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - id: buildx-setup name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d83729..9314b8f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,7 @@ jobs: steps: - id: source-checkout name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: ref: ${{ matrix.build.branch }} - id: set-netbox-docker-version From 10031c29902bb56b4abb63238f3f88253362c719 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 13:50:32 +0000 Subject: [PATCH 63/64] Update dependency sentry-sdk to v2.46.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index cd5bf73..8725c57 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -4,4 +4,4 @@ granian[uvloop]==2.6.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.45.0 +sentry-sdk[django]==2.46.0 From 9a68d6fd7015df922ebee62646cd8d8cd401a746 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 19:34:23 +0000 Subject: [PATCH 64/64] Update dependency sentry-sdk to v2.47.0 --- requirements-container.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-container.txt b/requirements-container.txt index 8725c57..65a5f82 100644 --- a/requirements-container.txt +++ b/requirements-container.txt @@ -4,4 +4,4 @@ granian[uvloop]==2.6.0 python3-saml==1.16.0 --no-binary lxml --no-binary xmlsec -sentry-sdk[django]==2.46.0 +sentry-sdk[django]==2.47.0