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 | }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.
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:Copy the cloudflare_pkg folder into the container:
docker cp cloudflare_pkg nginx-proxy-manager-app-1:/app/Access the container shell:
docker exec -it nginx-proxy-manager-app-1 /bin/bashInside 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.0Once 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]+)+') -vvvBy manually downloading and transferring the necessary packages to the container, we successfully bypassed the connectivity issues with PyPI and completed the installation process.