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. 🙂