Building wheel for certbot-dns-multi (pyproject.toml) did not run successfully.
Checklist
- Have you pulled and found the error with
jc21/nginx-proxy-manager:latestdocker image?- Yes
- Are you sure you're not using someone else's docker image?
- Yes
- Have you searched for similar issues (both open and closed)?
- Yes
Describe the bug Starting nginx proxy manager on my debian running in docker works fine. Has 10 proxy host and 1 certificate requested via DNSMulti ipv64. When i try to copy my complete configuration files to my raspberry pi, also running it in docker i get an error during start which seems to be related to the DNSMulti configuration of the certificate. Starting blank works fine, but with my configuration copied i get the following error during start. The same applies when requesting a new certificate right after a fresh start of the container without configuration.
Log:
nginxproxymanager-app-1 | [3/2/2025] [12:45:57 AM] [Certbot ] › ▶ start Installing dnsmulti...
nginxproxymanager-app-1 | [3/2/2025] [12:45:57 AM] [Global ] › ⬤ debug CMD: . /opt/certbot/bin/activate && pip install --no-cache-dir certbot-dns-multi~=4.9 && deactivate
nginxproxymanager-app-1 | [3/2/2025] [12:46:08 AM] [Certbot ] › ✖ error error: subprocess-exited-with-error
nginxproxymanager-app-1 |
nginxproxymanager-app-1 | × Building wheel for certbot-dns-multi (pyproject.toml) did not run successfully.
nginxproxymanager-app-1 | │ exit code: 1
nginxproxymanager-app-1 | ╰─> [27 lines of output]
nginxproxymanager-app-1 | running bdist_wheel
nginxproxymanager-app-1 | running build
nginxproxymanager-app-1 | running build_py
nginxproxymanager-app-1 | creating build/lib.linux-aarch64-cpython-311/certbot_dns_multi
nginxproxymanager-app-1 | copying certbot_dns_multi/_version.py -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi
nginxproxymanager-app-1 | copying certbot_dns_multi/init.py -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi
nginxproxymanager-app-1 | creating build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal
nginxproxymanager-app-1 | copying certbot_dns_multi/_internal/dns_multi.py -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal
nginxproxymanager-app-1 | running egg_info
nginxproxymanager-app-1 | writing certbot_dns_multi.egg-info/PKG-INFO
nginxproxymanager-app-1 | writing dependency_links to certbot_dns_multi.egg-info/dependency_links.txt
nginxproxymanager-app-1 | writing entry points to certbot_dns_multi.egg-info/entry_points.txt
nginxproxymanager-app-1 | writing requirements to certbot_dns_multi.egg-info/requires.txt
nginxproxymanager-app-1 | writing top-level names to certbot_dns_multi.egg-info/top_level.txt
nginxproxymanager-app-1 | ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any
nginxproxymanager-app-1 | reading manifest file 'certbot_dns_multi.egg-info/SOURCES.txt'
nginxproxymanager-app-1 | reading manifest template 'MANIFEST.in'
nginxproxymanager-app-1 | adding license file 'LICENSE.txt'
nginxproxymanager-app-1 | writing manifest file 'certbot_dns_multi.egg-info/SOURCES.txt'
nginxproxymanager-app-1 | creating build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal/bridge
nginxproxymanager-app-1 | copying certbot_dns_multi/_internal/bridge/go.mod -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal/bridge
nginxproxymanager-app-1 | copying certbot_dns_multi/_internal/bridge/go.sum -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal/bridge
nginxproxymanager-app-1 | copying certbot_dns_multi/_internal/bridge/main.c -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal/bridge
nginxproxymanager-app-1 | copying certbot_dns_multi/_internal/bridge/main.go -> build/lib.linux-aarch64-cpython-311/certbot_dns_multi/_internal/bridge
nginxproxymanager-app-1 | running build_ext
nginxproxymanager-app-1 | $ GOPATH=/tmp/tmphqs553fi go get -d
nginxproxymanager-app-1 | error: [Errno 2] No such file or directory: 'go'
nginxproxymanager-app-1 | [end of output]
nginxproxymanager-app-1 |
nginxproxymanager-app-1 | note: This error originates from a subprocess, and is likely not a problem with pip.
nginxproxymanager-app-1 | ERROR: Failed building wheel for certbot-dns-multi
nginxproxymanager-app-1 |
nginxproxymanager-app-1 | [notice] A new release of pip is available: 24.3.1 -> 25.0.1
nginxproxymanager-app-1 | [notice] To update, run: pip install --upgrade pip
nginxproxymanager-app-1 | ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (certbot-dns-multi)
nginxproxymanager-app-1 |
nginxproxymanager-app-1 | [3/2/2025] [12:46:08 AM] [Global ] › ✖ error Some plugins failed to install. Please check the logs above CommandError: Some plugins failed to install. Please check the logs above
nginxproxymanager-app-1 | at /app/lib/certbot.js:39:14
nginxproxymanager-app-1 | at Immediate.
Nginx Proxy Manager Version v2.12.3
To Reproduce Steps to reproduce the behavior:
- Go to 'SSL Certificates'
- Click on 'Add SSL Certificate'
- Click on 'Lets encrypt'
- Enter domain
- Click on 'Use a dns challenge'
- Choose 'DNSMulti' provider
- Use following config: 'https://go-acme.github.io/lego/dns/ipv64/index.html'
- Click on save
Expected behavior Normal start without errors after copying my configuration or at least no problems when requesting a new one as described in "to reproduce".
Operating System Raspberry pi 4, 4GB RAM, 64GB SD Card,
Raspberry Pi OS: PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm
Docker: Client: Docker Engine - Community Version: 28.0.1 API version: 1.48 Go version: go1.23.6 Git commit: 068a01e Built: Wed Feb 26 10:40:57 2025 OS/Arch: linux/arm64 Context: default
Server: Docker Engine - Community Engine: Version: 28.0.1 API version: 1.48 (minimum version 1.24) Go version: go1.23.6 Git commit: bbd0a17 Built: Wed Feb 26 10:40:57 2025 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.7.25 GitCommit: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb runc: Version: 1.2.4 GitCommit: v1.2.4-0-g6c52b3f docker-init: Version: 0.19.0 GitCommit: de40ad0
For anyone with the same issue on Raspberry Pi (OS) or arm64. I am using the following workaround, which works for me. Create and use a Dockerfile to startup nginx with the following content:
FROM docker.io/jc21/nginx-proxy-manager:latest
RUN apt-get update && apt-get install -y wget curl python3-dev
RUN wget https://go.dev/dl/go1.22.1.linux-arm64.tar.gz
RUN tar -C /usr/local -xzf go1.22.1.linux-arm64.tar.gz
RUN rm go1.22.1.linux-arm64.tar.gz
ENV PATH="/usr/local/go/bin:${PATH}"
The issue seems to be that neither go, nor python3 is installed in the image which this Dockerfile solves. The issuance of an certificate took a very long time for me, so be patient. Probably because of the very long installation time of the certbot dns multi plugin.
For anyone with the same issue on Raspberry Pi (OS) or arm64. I am using the following workaround, which works for me. Create and use a Dockerfile to startup nginx with the following content:
FROM docker.io/jc21/nginx-proxy-manager:latest RUN apt-get update && apt-get install -y wget curl python3-dev RUN wget https://go.dev/dl/go1.22.1.linux-arm64.tar.gz RUN tar -C /usr/local -xzf go1.22.1.linux-arm64.tar.gz RUN rm go1.22.1.linux-arm64.tar.gz ENV PATH="/usr/local/go/bin:${PATH}"The issue seems to be that neither go, nor python3 is installed in the image which this Dockerfile solves. The issuance of an certificate took a very long time for me, so be patient. Probably because of the very long installation time of the certbot dns multi plugin.
I can confirm that your solution is working on a RPI4. Thanks a lot!
For anyone with the same issue on Raspberry Pi (OS) or arm64. I am using the following workaround, which works for me. Create and use a Dockerfile to startup nginx with the following content:
FROM docker.io/jc21/nginx-proxy-manager:latest RUN apt-get update && apt-get install -y wget curl python3-dev RUN wget https://go.dev/dl/go1.22.1.linux-arm64.tar.gz RUN tar -C /usr/local -xzf go1.22.1.linux-arm64.tar.gz RUN rm go1.22.1.linux-arm64.tar.gz ENV PATH="/usr/local/go/bin:${PATH}"The issue seems to be that neither go, nor python3 is installed in the image which this Dockerfile solves. The issuance of an certificate took a very long time for me, so be patient. Probably because of the very long installation time of the certbot dns multi plugin.
Did not work for me. I still get the go error unfortunately.
the issue is still existing =(
CommandError: error: subprocess-exited-with-error
× Building wheel for certbot-dns-multi (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [48 lines of output]
/tmp/pip-build-env-fsi589he/overlay/lib/python3.11/site-packages/_distutils_hack/__init__.py:53: UserWarning: Reliance on distutils from stdlib is deprecated. Users must rely on setuptools to provide the distutils module. Avoid importing distutils or import setuptools first, and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
warnings.warn(
/tmp/pip-build-env-fsi589he/overlay/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!
********************************************************************************
Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).
By 2026-Feb-18, you need to update your project and remove deprecated calls
or your builds will no longer be supported.
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
corresp(dist, value, root_dir)
pip_system_certs: ERROR: truststore not available
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-aarch64-3.11
creating build/lib.linux-aarch64-3.11/certbot_dns_multi
copying certbot_dns_multi/_version.py -> build/lib.linux-aarch64-3.11/certbot_dns_multi
copying certbot_dns_multi/__init__.py -> build/lib.linux-aarch64-3.11/certbot_dns_multi
package init file 'certbot_dns_multi/_internal/__init__.py' not found (or not a regular file)
creating build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal
copying certbot_dns_multi/_internal/dns_multi.py -> build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal
package init file 'certbot_dns_multi/_internal/bridge/__init__.py' not found (or not a regular file)
running egg_info
writing certbot_dns_multi.egg-info/PKG-INFO
writing dependency_links to certbot_dns_multi.egg-info/dependency_links.txt
writing entry points to certbot_dns_multi.egg-info/entry_points.txt
writing requirements to certbot_dns_multi.egg-info/requires.txt
writing top-level names to certbot_dns_multi.egg-info/top_level.txt
ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any
reading manifest file 'certbot_dns_multi.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE.txt'
writing manifest file 'certbot_dns_multi.egg-info/SOURCES.txt'
creating build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal/bridge
copying certbot_dns_multi/_internal/bridge/go.mod -> build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal/bridge
copying certbot_dns_multi/_internal/bridge/go.sum -> build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal/bridge
copying certbot_dns_multi/_internal/bridge/main.c -> build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal/bridge
copying certbot_dns_multi/_internal/bridge/main.go -> build/lib.linux-aarch64-3.11/certbot_dns_multi/_internal/bridge
running build_ext
$ GOPATH=/tmp/tmpsquk296x go get -d
error: [Errno 2] No such file or directory: 'go'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for certbot-dns-multi
ERROR: Failed to build installable wheels for some pyproject.toml based projects (certbot-dns-multi)
at /app/lib/utils.js:16:13
at ChildProcess.exithandler (node:child_process:430:5)
at ChildProcess.emit (node:events:524:28)
at maybeClose (node:internal/child_process:1104:16)
at ChildProcess._handle.onexit (node:internal/child_process:304:5)
having the same with dns_multi_provider = ipv64
Issue #4529 appears to be the same.
The solution from https://github.com/NginxProxyManager/nginx-proxy-manager/issues/4408#issuecomment-2695752968 is in principle still working but requires a more recent version of the Go compiler (https://go.dev/dl/go1.24.5.linux-arm64.tar.gz worked for me).
https://v64.tech/t/nginx-proxy-manager-dnschallenge-ipv64-debian-13-fail/4177/7
https://v64.tech/t/nginx-proxy-manager-dnschallenge-ipv64-debian-13-fail/4177/7
Seems GoLang does not come preinstalled on the nginx image. The steps described here were the solution! 🎉 Keep in mind to increase resources like RAM and CPU temporarily.
apt install golang
pip install --no-build-isolation --no-cache-dir certbot-dns-multi