Update Nginx Proxy Manager 2.10.x – IT – Praxis aus Oberschwaben
8 mins read

Update Nginx Proxy Manager 2.10.x – IT – Praxis aus Oberschwaben


Zuletzt aktualisiert am 24. September 2023, 22:09:21 Uhr

In meinem Labor habe ich einen Ubuntu-Server, auf dem Nginx Proxy Manager (NPM) mit Docker ausgeführt wird. Die derzeit verwendete NPM-Version ist 2.9.19.

Ein blindes Upgrade von Containern ist beim Upgrade auf Version 2.10.x nicht mehr möglich. Die Entwickler haben einige Änderungen an den Berechtigungen vorgenommen.

Daher beschreibe ich in diesem Artikel mein Vorgehen für ein erfolgreiches Update von NPM auf Version 2.10.3.

Ausgangszustand

Die Konfiguration und Daten der NPM-Instanz befinden sich im Verzeichnis „/opt/containers/npm/“.

Die zugehörige docker-compose.yml-Datei für die NPM-Funktionalität sieht folgendermaßen aus:

version: "3.9"
services:
  npm-app:
    image: "jc21/nginx-proxy-manager:latest"
    container_name: npm-app
    restart: unless-stopped
    ports:
      - "80:80" # Public HTTP Port
      - "443:443" # Public HTTPS Port
      - "81:81" # Admin Web Port
    environment:
      DB_MYSQL_HOST: "npm-db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: ${MYSQL_USER}
      DB_MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      DB_MYSQL_NAME: ${MYSQL_DATABASE}
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - npm-db
    networks:
      - npm-nw
      - npm-internal

  npm-db:
    image: "mariadb:latest"
    container_name: npm-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - ./data/mysql:/var/lib/mysql
    networks:
      - npm-internal

networks:
  npm-internal:
    external: false
  npm-nw:
    external: true

NPM-Update

Wechseln Sie in das NPM-Verzeichnis.

cd /opt/containers/npm/

Stoppen Sie zunächst alle aktiven Container.

docker compose -f docker-compose.yml down

Erstellen Sie ein neues Verzeichnis für NPM.

mkdir /opt/containers/npm/data/app

Verschieben Sie vorhandene Verzeichnisse von NPM in das neue Verzeichnis.

mv /opt/containers/npm/data/access/ /opt/containers/npm/data/app/
mv /opt/containers/npm/data/custom_ssl/ /opt/containers/npm/data/app/
mv /opt/containers/npm/data/letsencrypt-acme-challenge/ /opt/containers/npm/data/app/
mv /opt/containers/npm/data/logs/ /opt/containers/npm/data/app/
mv /opt/containers/npm/data/nginx/ /opt/containers/npm/data/app/

Erstellen Sie einen neuen Benutzer für NPM. In meinem Fall heißt der Benutzer auch „npm“.

useradd npm -s /usr/sbin/nologin

Lesen Sie die neue Benutzer-ID und die zugehörigen Informationen.

root@npm01a:~# id -u npm
1001
root@npm01a:~# id -g npm
1001

Die bestehende Konfigurationsdatei „docker-compose.yml“ sollte nun erweitert werden. Zunächst werden im Feld „Umgebung:“ zwei Parameter PUID und GUID angezeigt

environment:
  PUID: 1001
  GUID: 1001

Die Werte (=IDs) stimmen mit der Ausgabe der vorherigen Abfragen überein Ausweis.

Auch die Datenverzeichniszuordnungen müssen in der Datei in Zeile 21 angepasst werden:

- ./data/app:/data

Speichern Sie die Änderungen und schließen Sie die Datei.

Laden Sie die neueste/neueste Version der Container herunter:

docker image pull mariadb
docker image pull jc21/nginx-proxy-manager

Starten Sie den Container neu:

docker compose -f docker-compose.yml up -d --force-recreate

[+] Building 0.0s (0/0)
[+] Running 2/2
✔ Container npm-db Started5.7s
✔ Container npm-app Started

Abhängig von der Serverleistung kann es vom Start bis zur Verfügbarkeit der Weboberfläche 30-60 Sekunden dauern. Zeit für einen Kaffee. 🙂

Überprüfen Sie die Container-Protokolldatei:

docker compose logs

npm-db  | 2023-06-29 18:01:01+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.0.2+maria~ubu2204 started.
npm-db  | 2023-06-29 18:01:02+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
npm-db  | 2023-06-29 18:01:02+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.0.2+maria~ubu2204 started.
npm-db  | 2023-06-29 18:01:02+02:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required
npm-db  | 2023-06-29 18:01:02+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
npm-db  | 2023-06-29 18:01:02 0 [Note] Starting MariaDB 11.0.2-MariaDB-1:11.0.2+maria~ubu2204 source revision 0005f2f06c8e1aea4915887decad67885108a929 as process 1
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Number of transaction pools: 1
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Using generic crc32 instructions
npm-db  | 2023-06-29 18:01:02 0 [Note] mariadbd: O_TMPFILE is not supported on /tmp (disabling future attempts)
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Completed initialization of buffer pool
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Upgrading the change buffer
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Upgraded the change buffer: 0 tablespaces, 0 pages
npm-db  | 2023-06-29 18:01:02 0 [Warning] InnoDB: Cannot change innodb_undo_tablespaces=3 because previous shutdown was not with innodb_fast_shutdown=0
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: 128 rollback segments are active.
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: log sequence number 175049; transaction id 610
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
npm-db  | 2023-06-29 18:01:02 0 [Note] Plugin 'FEEDBACK' is disabled.
npm-db  | 2023-06-29 18:01:02 0 [Note] Plugin 'wsrep-provider' is disabled.
npm-db  | 2023-06-29 18:01:02 0 [Note] Server socket created on IP: '0.0.0.0'.
npm-db  | 2023-06-29 18:01:02 0 [Note] Server socket created on IP: '::'.
npm-db  | 2023-06-29 18:01:02 0 [Note] InnoDB: Buffer pool(s) load completed at 230629 18:01:02
npm-db  | 2023-06-29 18:01:02 0 [Note] mariadbd: ready for connections.
npm-db  | Version: '11.0.2-MariaDB-1:11.0.2+maria~ubu2204'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
npm-app  | ❯ Configuring npm user ...
npm-app  | ❯ Configuring npm group ...
npm-app  | ❯ Checking paths ...
npm-app  | ❯ Setting ownership ...
npm-app  | ❯ Dynamic resolvers ...
npm-app  | ❯ IPv6 ...
npm-app  | Enabling IPV6 in hosts in: /etc/nginx/conf.d
npm-app  | - /etc/nginx/conf.d/include/force-ssl.conf
npm-app  | - /etc/nginx/conf.d/include/ssl-ciphers.conf
npm-app  | - /etc/nginx/conf.d/include/proxy.conf
npm-app  | - /etc/nginx/conf.d/include/assets.conf
npm-app  | - /etc/nginx/conf.d/include/letsencrypt-acme-challenge.conf
npm-app  | - /etc/nginx/conf.d/include/ip_ranges.conf
npm-app  | - /etc/nginx/conf.d/include/block-exploits.conf
npm-app  | - /etc/nginx/conf.d/include/resolvers.conf
npm-app  | - /etc/nginx/conf.d/default.conf
npm-app  | - /etc/nginx/conf.d/production.conf
npm-app  | Enabling IPV6 in hosts in: /data/nginx
npm-app  | - /data/nginx/proxy_host/5.conf
npm-app  | - /data/nginx/proxy_host/3.conf
npm-app  | - /data/nginx/proxy_host/6.conf
npm-app  | - /data/nginx/proxy_host/8.conf
npm-app  | - /data/nginx/proxy_host/4.conf
npm-app  | - /data/nginx/proxy_host/7.conf
npm-app  | - /data/nginx/proxy_host/2.conf
npm-app  | - /data/nginx/proxy_host/1.conf
npm-app  | ❯ Docker secrets ...
npm-app  |
npm-app  | -------------------------------------
npm-app  |  _   _ ____  __  __
npm-app  | | \ | |  _ \|  \/  |
npm-app  | |  \| | |_) | |\/| |
npm-app  | | |\  |  __/| |  | |
npm-app  | |_| \_|_|   |_|  |_|
npm-app  | -------------------------------------
npm-app  | User:  npm PUID:1001 ID:1001 GROUP:1001
npm-app  | Group: npm PGID:1001 ID:1001
npm-app  | -------------------------------------
npm-app  |
npm-app  | ❯ Starting backend ...
npm-app  | ❯ Starting nginx ...
npm-app  | nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:4
npm-app  | [6/29/2023] [4:01:20 PM] [Global   ] › ℹ  info      Using MySQL configuration
npm-app  | [6/29/2023] [4:01:20 PM] [Global   ] › ℹ  info      Creating a new JWT key pair...
npm-app  | [6/29/2023] [4:01:23 PM] [Global   ] › ℹ  info      Wrote JWT key pair to config file: /data/keys.json
npm-app  | [6/29/2023] [4:01:24 PM] [Migrate  ] › ℹ  info      Current database version: 20211108145214
npm-app  |[6/29/2023] [4:01:26 PM] [Setup    ] › ℹ  info      Added Certbot plugins certbot-dns-hetzner~=1.0.4
npm-app  | [6/29/2023] [4:01:26 PM] [Setup    ] › ℹ  info      Logrotate Timer initialized
npm-app  | [6/29/2023] [4:01:26 PM] [Setup    ] › ℹ  info      Logrotate completed.
npm-app  | [6/29/2023] [4:01:26 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
npm-app  | [6/29/2023] [4:01:26 PM] [IP Ranges] › ℹ  info      Fetching 
npm-app  | [6/29/2023] [4:01:27 PM] [IP Ranges] › ℹ  info      Fetching 
npm-app  | [6/29/2023] [4:01:27 PM] [IP Ranges] › ℹ  info      Fetching 
npm-app  | [6/29/2023] [4:01:27 PM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized
npm-app  | [6/29/2023] [4:01:27 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
npm-app  | [6/29/2023] [4:01:27 PM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
npm-app  | [6/29/2023] [4:01:27 PM] [Global   ] › ℹ  info      Backend PID 167 listening on port 3000 ...

Es sind keine Fehler sichtbar, der Zugriff auf die NPM-Website funktioniert.

So soll es sein! Viel Spaß beim Ausprobieren. 🙂



technische Probleme auf

Leave a Reply

Your email address will not be published. Required fields are marked *