Skip to content

Instantly share code, notes, and snippets.

@davidino
Last active March 24, 2025 23:15
Show Gist options
  • Select an option

  • Save davidino/f92f3618f6f9567ed191307e43ad716c to your computer and use it in GitHub Desktop.

Select an option

Save davidino/f92f3618f6f9567ed191307e43ad716c to your computer and use it in GitHub Desktop.
nginx-proxy-manager plugin not install issue

Some plugins failed to install - Resolved

Issue

The main issue was that the container could not connect to any external services using HTTPS/SSL, which prevented it from downloading required dependencies during the bootstrap process. This resulted in the following error logs:

app-1  | [3/24/2025] [10:21:16 PM] [Certbot  ] › ▶  start     Installing cloudflare...
app-1  | [3/24/2025] [10:21:16 PM] [Global   ] › ⬤  debug     CMD: . /opt/certbot/bin/activate && pip install --no-cache-dir cloudflare==2.19.* acme==$(certbot --version | grep -Eo '[0-9](\.[0-9]+)+') certbot-dns-cloudflare==$(certbot --version | grep -Eo '[0-9](\.[0-9]+)+')  && deactivate
app-1  | [3/24/2025] [10:23:01 PM] [Certbot  ] › ✖  error     WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/certbot-dns-cloudflare/
app-1  | WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/certbot-dns-cloudflare/
app-1  | WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/certbot-dns-cloudflare/
app-1  | WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/certbot-dns-cloudflare/
app-1  | WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/certbot-dns-cloudflare/
app-1  | ERROR: Could not find a version that satisfies the requirement certbot-dns-cloudflare==3.2.0 (from versions: none)
app-1  | ERROR: No matching distribution found for certbot-dns-cloudflare==3.2.0
app-1  |
app-1  | [3/24/2025] [10:23:01 PM] [Global   ] › ✖  error     Some plugins failed to install. Please check the logs above CommandError: Some plugins failed to install. Please check the logs above
app-1  |     at /app/lib/certbot.js:39:14
app-1  |     at Immediate.<anonymous> (/app/node_modules/batchflow/lib/batchflow.js:80:9)
app-1  |     at process.processImmediate (node:internal/timers:483:21) {
app-1  |   previous: undefined,
app-1  |   code: 1,
app-1  |   public: false
app-1  | }

Solution

Since the container was unable to fetch the required packages from PyPI due to SSL issues, I had to manually download the dependencies from another machine, transfer them to the container, and install them locally.

Step 1: Download Required Packages on Balu

Run the following commands on Balu to download the necessary packages:

pip download --no-cache-dir --dest cloudflare_pkg "cloudflare==2.19.*" "certbot-dns-cloudflare==3.2.0" --python-version 3.11.2 pyyaml --only-binary=:all:

Step 2: Transfer the Downloaded Packages to the Container

Copy the cloudflare_pkg folder into the container:

docker cp cloudflare_pkg nginx-proxy-manager-app-1:/app/

Step 3: Enter the Container

Access the container shell:

docker exec -it nginx-proxy-manager-app-1 /bin/bash

Step 4: Install Packages from the Local Directory

Inside the container, install the downloaded packages without accessing PyPI:

pip install --no-index --find-links=/app/cloudflare_pkg cloudflare==2.19.* pyyaml certbot-dns-cloudflare==3.2.0

Step 5: Re-run the Failing Command

Once the packages are installed, re-run the command that was failing during the container bootstrap:

pip install --no-cache-dir cloudflare==2.19.* acme==$(certbot --version | grep -Eo '[0-9](\.[0-9]+)+') certbot-dns-cloudflare==$(certbot --version | grep -Eo '[0-9](\.[0-9]+)+') -vvv

Summary

By manually downloading and transferring the necessary packages to the container, we successfully bypassed the connectivity issues with PyPI and completed the installation process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment