Internal Error trying to renew cert

I was trying to renew my cert running version 2.2.1 and the following error popped up:
[5/4/2020] [10:01:54 PM] [SSL      ] › ℹ  info      Renewing Let'sEncrypt certificates for Cert #1: mywebite.com,
[5/4/2020] [10:01:55 PM] [Express  ] › ⚠  warning   Command failed: /usr/bin/certbot renew --non-interactive --config "/etc/letsencrypt.ini" --cert-name "npm-1" --preferred-challenges "dns,http" --disable-hook-validation ,
Saving debug log to /var/log/letsencrypt/letsencrypt.log,
No certificate found with name npm-1 (expected /etc/letsencrypt/renewal/npm-1.conf).

I tried restarting the container to renew again and the log shows:
),
[5/4/2020] [10:00:15 PM] [SSL      ] › ✖  error     Certificate is not valid (Command failed: openssl x509 -in /etc/letsencrypt/live/npm-1/fullchain.pem -subject -noout,
140647724621128:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:,
unable to load certificate,
140647724621128:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:69:fopen('/etc/letsencrypt/live/npm-1/fullchain.pem','r'),
Can't open /etc/letsencrypt/live/npm-1/fullchain.pem for reading, No such file or directory,
[5/4/2020] [10:00:15 PM] [SSL      ] › ℹ  info      Renew Complete,
[5/4/2020] [10:00:14 PM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized,
[5/4/2020] [10:00:14 PM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized,
[5/4/2020] [10:00:15 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[5/4/2020] [10:00:14 PM] [Global   ] › ℹ  info      Backend PID 201 listening on port 3000 ...,
[5/4/2020] [10:00:14 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...,
[5/4/2020] [10:00:14 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6,
[5/4/2020] [10:00:13 PM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json,
[5/4/2020] [10:00:14 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4,
[5/4/2020] [10:00:13 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...,
[5/4/2020] [10:00:12 PM] [Migrate  ] › ℹ  info      Current database version:<PHONE_NUMBER>3839,
❯ Enabling IPV6 in hosts: /data/nginx,
  ❯ /etc/nginx/conf.d/production.conf,
  ❯ /etc/nginx/conf.d/default.conf,
  ❯ /etc/nginx/conf.d/include/resolvers.conf,
  ❯ /etc/nginx/conf.d/include/ip_ranges.conf,
  ❯ /etc/nginx/conf.d/include/proxy.conf,
  ❯ /etc/nginx/conf.d/include/block-exploits.conf,
  ❯ /etc/nginx/conf.d/include/assets.conf,
  ❯ /etc/nginx/conf.d/include/force-ssl.conf,
  ❯ /etc/nginx/conf.d/include/letsencrypt-acme-challenge.conf,
  ❯ /etc/nginx/conf.d/include/ssl-ciphers.conf,
❯ Enabling IPV6 in hosts: /etc/nginx/conf.d,
[services.d] done.,
[services.d] starting services,
[cont-init.d] done.,
[cont-init.d] executing container initialization scripts...,
[fix-attrs.d] done.,
[fix-attrs.d] applying ownership & permissions fixes...,
[s6-init] ensuring user provided files have correct perms...exited 0.,[s6-init] making user provided files available at /var/run/s6/etc...exited 0.

I decided to update to latest and the problem persists, so I completely deleted my npm container and it's data and start a whole new instance. However, I still cannot renew and now my SSL cert expired the moment I tried registering. This is not my only webserver trying to renew SSL and its happening to my other ones as well. I've tried creating with sub.subdomain.duckdns.org and it registered fine.  You should use `allowGraph` instead. `allowEager` method will be removed in 3.0,
`QueryBuilder#eager` method is deprecated. You should use the `withGraphFetched` method instead. `eager` method will be removed in 3.0,
QueryBuilder#omit is deprecated. This method will be removed in version 3.0,
[5/4/2020] [9:51:42 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[5/4/2020] [9:51:42 PM] [SSL      ] › ℹ  info      Requesting Let'sEncrypt certificates for Cert #1: mywebite.com,
[5/4/2020] [9:51:46 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[5/4/2020] [9:51:46 PM] [Express  ] › ⚠  warning   Command failed: /usr/bin/certbot certonly --non-interactive --config "/etc/letsencrypt.ini" --cert-name "npm-1" --agree-tos --email "email.com" --preferred-challenges "dns,http" --webroot --domains "mywebite.com" ,
Saving debug log to /var/log/letsencrypt/letsencrypt.log,
Plugins selected: Authenticator webroot, Installer None,
Obtaining a new certificate,
Performing the following challenges:,
http-01 challenge for mywebite.com,
Using the webroot path /data/letsencrypt-acme-challenge for all unmatched domains.,
Waiting for verification...,
Challenge failed for domain mywebite.com,
http-01 challenge for mywebite.com,
Cleaning up challenges,
Some challenges have failed.,
,

Could this be possible bug in the latest update? Could it be my domain has already been registered with let's encrypted before, I cannot re-register a new one when I start a new container?

I had a similar issue and fixed it by deleting the certificate that was having issues in "SSL Certificates" tab and requested the certificate again. Before you try this you might want to backup the database and configuration files just in case.

I'm having this issue as well, tried restarting the container and clearing out the certificates that keep failing ( I only set this up for the 1st time yesterday). I can't get it to work
When I request I get an error

Then I see the errors in the log like @AnonJervis
If I navigate to SSL Certificates page, I can see an entry still but it wont work

I'm having the same issue as well. Renewing manually times out and deleting then re-adding the cert gives "internal error".

@kizza42 and @CorySanin I believe the "internal error" notifications may be fixed in PR #407

switched my existing Docker container over to jc21/nginx-proxy-manager:github-pr-407 and I'm still getting "internal error" when manually renewing or adding a new certificate.

Are the ones that are failing linked to hosts that have an applied access list?
If so does removing the access list allow it to succeed?
Lastly, can you post the log from the npm container?

I have some with and without access lists, and the ones without are also failing. But looking at the logs I see Another instance of Certbot is already running. I think what I'm experiencing is certbot hangs on one of the certs and then everything else fails. Which doesn't seem like the original issue, I don't think. So if I continue to see this I might open up a new issue.

My log after I restart the container:
`[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
❯ Enabling IPV6 in hosts: /etc/nginx/conf.d
❯ /etc/nginx/conf.d/default.conf
❯ /etc/nginx/conf.d/production.conf
❯ /etc/nginx/conf.d/include/proxy.conf
❯ /etc/nginx/conf.d/include/letsencrypt-acme-challenge.conf
❯ /etc/nginx/conf.d/include/ssl-ciphers.conf
❯ /etc/nginx/conf.d/include/block-exploits.conf
❯ /etc/nginx/conf.d/include/force-ssl.conf
❯ /etc/nginx/conf.d/include/ip_ranges.conf
❯ /etc/nginx/conf.d/include/assets.conf
❯ /etc/nginx/conf.d/include/resolvers.conf
❯ Enabling IPV6 in hosts: /data/nginx
❯ /data/nginx/default_host/site.conf
❯ /data/nginx/proxy_host/2.conf
❯ /data/nginx/proxy_host/3.conf
❯ /data/nginx/proxy_host/4.conf
❯ /data/nginx/proxy_host/5.conf
❯ /data/nginx/proxy_host/6.conf
❯ /data/nginx/proxy_host/7.conf
[5/11/2020] [11:34:52 PM] [Migrate  ] › ℹ  info      Current database version:<PHONE_NUMBER>3839
[5/11/2020] [11:34:52 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
[5/11/2020] [11:34:52 PM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
[5/11/2020] [11:34:52 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
[5/11/2020] [11:34:52 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
[5/11/2020] [11:34:52 PM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized
[5/11/2020] [11:34:52 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[5/11/2020] [11:34:52 PM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
[5/11/2020] [11:34:52 PM] [Global   ] › ℹ  info      Backend PID 204 listening on port 3000 ...
[5/11/2020] [11:34:53 PM] [SSL      ] › ✖  error     Error: Command failed: /usr/bin/certbot renew --non-interactive --quiet --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 64, in _reconstitute
renewal_candidate = storage.RenewableCert(full_path, config)

File "/usr/lib/python3.8/site-packages/certbot/_internal/storage.py", line 444, in init
raise errors.CertStorageError(

certbot.errors.CertStorageError: renewal config file {} is missing a required file reference
Renewal configuration file /etc/letsencrypt/renewal/npm-1.conf is broken. Skipping.
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 64, in _reconstitute
renewal_candidate = storage.RenewableCert(full_path, config)

File "/usr/lib/python3.8/site-packages/certbot/_internal/storage.py", line 444, in init
raise errors.CertStorageError(

certbot.errors.CertStorageError: renewal config file {} is missing a required file reference
Renewal configuration file /etc/letsencrypt/renewal/npm-2.conf is broken. Skipping.
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 64, in _reconstitute
renewal_candidate = storage.RenewableCert(full_path, config)

File "/usr/lib/python3.8/site-packages/certbot/_internal/storage.py", line 444, in init
raise errors.CertStorageError(

certbot.errors.CertStorageError: renewal config file {} is missing a required file reference
Renewal configuration file /etc/letsencrypt/renewal/npm-3.conf is broken. Skipping.
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 64, in _reconstitute
renewal_candidate = storage.RenewableCert(full_path, config)

File "/usr/lib/python3.8/site-packages/certbot/_internal/storage.py", line 444, in init
raise errors.CertStorageError(

certbot.errors.CertStorageError: renewal config file {} is missing a required file reference
Renewal configuration file /etc/letsencrypt/renewal/npm-4.conf is broken. Skipping.
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 64, in _reconstitute
renewal_candidate = storage.RenewableCert(full_path, config)

File "/usr/lib/python3.8/site-packages/certbot/_internal/storage.py", line 444, in init
raise errors.CertStorageError(

certbot.errors.CertStorageError: renewal config file {} is missing a required file reference
Renewal configuration file /etc/letsencrypt/renewal/npm-5.conf is broken. Skipping.
0 renew failure(s), 5 parse failure(s)
at ChildProcess.exithandler (child_process.js:295:12)

at ChildProcess.emit (events.js:210:5)

at maybeClose (internal/child_process.js:1028:16)

at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)

QueryBuilder#allowEager method is deprecated. You should use allowGraph instead. allowEager method will be removed in 3.0
QueryBuilder#eager method is deprecated. You should use the withGraphFetched method instead. eager method will be removed in 3.0
QueryBuilder#omit is deprecated. This method will be removed in version 3.0`
Those broken files:
/etc/letsencrypt/renewal/npm-3.conf are just empty

Firstly, the error in the issue at the top says that the challenge has failed. This would be due to you asking for a cert for mywebsite.com that doesn't have dns pointing to your setup.
I doubt any of this has anything to do with access lists.
The missing files make me think that maybe the data and/or letsencrypt folders aren't mounted properly. Please paste your docker-compose.yml to be sure.

Thankyou for the help @jc21
Here is my compose file:
version: "2"
services:
  nGinx:
    image: jc21/nginx-proxy-manager:2
    restart: always
    networks:
      dockerlan:
        ipv4_address: <IP_ADDRESS>
    dns:
      - <IP_ADDRESS>
    volumes:
      - /media/k2nas/SSD/Docker/data/Nginx/app/config:/app/config
      - /media/k2nas/SSD/Docker/data/Nginx/data:/data
      - /media/k2nas/SSD/Docker/data/Nginx/letsencrypt:/etc/letsencrypt
  mariadb:
    # Pinned at this version for Innodb Error
    image: jc21/mariadb-aria:10.4.12
    restart: always
    networks:
      dockerlan:
        ipv4_address: <IP_ADDRESS>
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - /media/k2nas/SSD/Docker/data/Nginx/mysql:/var/lib/mysql
networks:
  dockerlan:
       external: true

Also experiencing this issue. From the logs:
[5/25/2020] [6:42:02 PM] [Express  ] › ⚠  warning   Command failed: /usr/bin/certbot certonly --non-interactive --config "/etc/letsencrypt.ini" --cert-name "npm-1" --agree-tos --email "[EMAIL ADDRESS]" --preferred-challenges "dns,http" --webroot --domains "[DOMAIN]" Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for [DOMAIN] Using the webroot path /data/letsencrypt-acme-challenge for all unmatched domains. Waiting for verification... Challenge failed for domain [DOMAIN] http-01 challenge for [DOMAIN] Cleaning up challenges Some challenges have failed.
At first thought this was due to a bad install or something, so have a complete clean install and experiencing this. Checked DNS settings, all records are pointing to the correct IP and also checked firewall rules (not that any of these have changed recently).
Interestingly this worked fine a week ago.

Also experiencing an Internal Error when I attempt to perform a certificate renewal, or when the certbot attempts for me. letsencrypt.log:
Initialized: <certbot._internal.plugins.webroot.Authenticator object at 0x7f73f85f5df0>
Prep: True
2020-05-27 07:03:04,824:DEBUG:certbot._internal.plugins.selection:Selected authenticator <certbot._internal.plugins.webroot.Authenticator object at 0x7f73f85f5df0> and installer None
2020-05-27 07:03:04,824:INFO:certbot._internal.plugins.selection:Plugins selected: Authenticator webroot, Installer None
2020-05-27 07:03:04,837:WARNING:certbot._internal.renewal:Attempting to renew cert (npm-7) from /etc/letsencrypt/renewal/npm-7.conf produced an unexpected error: [Errno 1] Operation not permitted: '/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/2f1011068b45be8e10e11180c968b254/private_key.json'. Skipping.
2020-05-27 07:03:04,837:DEBUG:certbot._internal.renewal:Traceback was:
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/certbot/_internal/account.py", line 227, in _load_for_server_path
    with open(self._key_path(account_dir_path)) as key_file:
PermissionError: [Errno 1] Operation not permitted: '/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/2f1011068b45be8e10e11180c968b254/private_key.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/certbot/_internal/renewal.py", line 449, in handle_renewal_request
    main.renew_cert(lineage_config, plugins, renewal_candidate)
  File "/usr/lib/python3.8/site-packages/certbot/_internal/main.py", line 1178, in renew_cert
    le_client = _init_le_client(config, auth, installer)
  File "/usr/lib/python3.8/site-packages/certbot/_internal/main.py", line 607, in _init_le_client
    acc, acme = _determine_account(config)
  File "/usr/lib/python3.8/site-packages/certbot/_internal/main.py", line 511, in _determine_account
    acc = account_storage.load(config.account)
  File "/usr/lib/python3.8/site-packages/certbot/_internal/account.py", line 237, in load
    return self._load_for_server_path(account_id, self.config.server_path)
  File "/usr/lib/python3.8/site-packages/certbot/_internal/account.py", line 232, in _load_for_server_path
    raise errors.AccountStorageError(error)
certbot.errors.AccountStorageError: [Errno 1] Operation not permitted: '/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/2f1011068b45be8e10e11180c968b254/private_key.json'

My docker-compose.yml
version: "3"
services:
  app:
    image: jc21/nginx-proxy-manager:latest
    restart: always
    ports:
      - 80:80
      - 81:81
      - 443:443
    volumes:
      - ./config.json:/app/config/production.json
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db
    environment:
    # if you want pretty colors in your docker logs:
    - FORCE_COLOR=1
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "npm"
      MYSQL_DATABASE: "npm"
      MYSQL_USER: "npm"
      MYSQL_PASSWORD: "npm"
    volumes:
      - ./data/mysql:/var/lib/mysql

The volumes exist, I have files in the folder '2f1011068b45be8e10e11180c968b254' it describes as a permission issue. Latest v2.2.4.
Any help is appreciated.

My certificates are coming up for renewal and it's failing as well.  20 days before they start expiring.   Any guidance on how to resolve?

Time-consuming workaround for me is:
 docker exec -it docker-nginx-proxy_app_1 /bin/bash
certbot certonly --manual --preferred-challenges=dns -m<EMAIL_ADDRESS>--agree-tos -d YOUR_DOMAIN.TLD
Go to your DNS-settings of your Domain and add the following record:
name: __acme-challenge
type: TXT
ttl: 1hr
data: The code generated by certbot
wait 5 minutes and press enter in your CLI to verify your domain
Exit the container and go to ./letsencrypt/ and retrieve the cert and cert key.
Go to the Manager and  http://<IP_ADDRESS>:81/nginx/certificates and add a custom certificate by uploading those files.

Would love an update on this very crippling bug, or be pointed in the direction of the last Docker tag that didn't have this.

I don't know if it will help, but I ended up giving up. And going to another docker solution that supports dns challenges. Once you configure it is 100% automatic (and also doesn't need you to have your http port open).
Perhaps this could be something to explore for the future of NPM.

I also gave up and moved completely away from Nginx Proxy Manager. Had great success for a year or so, but this SSL issue is crippling. It took me 1hr to install Caddy2 and replicate everything I had.

which solution did you go for in the end @Xinil and @Tsunami2056 ?

which solution did you go for in the end @Xinil and @Tsunami2056 ?

I ended up setting up linuxserver's letsencrypt docker, a little more manual, but supports dns challenges with API plugins for alot of providers. And all is also automated.

Funnily enough, I just pulled the non-official NPM docker container and it works fine.

Funnily enough, the non-official docker image of NPM works totally fine - so I just started using that.

It looks like there was a change in the way the certs were written. New certs are written as root vs the uid specified in the docker setup, also the keys that are located in the live directory are now symlinks. I think these issues are the main cause of the errors
My fix was to edit each domain, go into the ssl tab and request a new cert. After that I deleted the old certs in the ssl certificates tab. This didn't get rid of the old conf files, so I opened a shell (I'm using portainer) then ran 'certbot renew' this will give you a list of bad conf files. Then I went to '/etc/letsencrypt/renewal' and deleted the conf files that were giving me errors. To see if it worked I reran 'certbot renew'. The messages came back as skipped which is what I should see.

Does anybody know what is the latest image that does not have this issue? All my certs are already expired and none of the workarounds worked for me (or I didn't understand them). The non-official package does not work on ARM, so no RPi support.

Two things:

I'm using v2.5.0 and I might have a workaround:

cleared all entries in the MariaDB-database/npm/certificate

delete all certificates in /etc/letsencrypt/

check firewall to have an open port 80 and port-foward to this docker container. Make sure no other ports are using these.

@jc21 , why is npm-1.conf generated and not domain.tld.conf which I see in the folder /etc/letsencrypt/renewal?

Installed NPM through portainer a fews days ago and have been able to setup the proxy & to get a LetsEncrypt certificate.
Now, a few days later I cannot get any more certificates and I can see exceptions in the logs. When I try to renew a cert I get an internal error.
Removed the whole container and the db, reinstalled with new folders for letsencrypt and config, tried with a new subdomain and still same issue.
Port 80 and 443 are forwarded to the docker host and access to a jellyfin server (also a container) through HTTP works.
What I understand from the log is, that there seem to be connection errors. However, the host can access
@jc21 can you help narrowing this down?
 You should use `allowGraph` instead. `allowEager` method will be removed in 3.0,
`QueryBuilder#eager` method is deprecated. You should use the `withGraphFetched` method instead. `eager` method will be removed in 3.0,
QueryBuilder#omit is deprecated. This method will be removed in version 3.0,
Duplicate relation "access_list" in a relation expression. You should use "a.[b, c]" instead of "[a.b, a.c]". This will cause an error in objection 2.0,
[10/29/2020] [9:35:21 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[10/29/2020] [9:36:04 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[10/29/2020] [9:36:04 PM] [SSL      ] › ℹ  info      Requesting Let'sEncrypt certificates for Cert #1: music.removed.de,
[10/29/2020] [9:36:14 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[10/29/2020] [9:36:14 PM] [Express  ] › ⚠  warning   Command failed: /usr/bin/certbot certonly --non-interactive --config "/etc/letsencrypt.ini" --cert-name "npm-1" --agree-tos --email<EMAIL_ADDRESS>--preferred-challenges "dns,http" --domains "music.removed.de" ,
Saving debug log to /var/log/letsencrypt/letsencrypt.log,
Plugins selected: Authenticator webroot, Installer None,
An unexpected error occurred:,
Traceback (most recent call last):,
  File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 159, in _new_conn,
    conn = connection.create_connection(,
  File "/usr/lib/python3.8/site-packages/urllib3/util/connection.py", line 61, in create_connection,
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):,
  File "/usr/lib/python3.8/socket.py", line 918, in getaddrinfo,
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):,
socket.gaierror: [Errno -3] Try again,
,
During handling of the above exception, another exception occurred:,
,
Traceback (most recent call last):,
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 670, in urlopen,
    httplib_response = self._make_request(,
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 381, in _make_request,
    self._validate_conn(conn),
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 976, in _validate_conn,
    conn.connect(),
  File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 308, in connect,
    conn = self._new_conn(),
  File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 171, in _new_conn,
    raise NewConnectionError(,
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0xffff9c5c3370>: Failed to establish a new connection: [Errno -3] Try again,
,
During handling of the above exception, another exception occurred:,
,
Traceback (most recent call last):,
  File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 439, in send,
    resp = conn.urlopen(,
  File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 724, in urlopen,
    retries = retries.increment(,
  File "/usr/lib/python3.8/site-packages/urllib3/util/retry.py", line 439, in increment,
    raise MaxRetryError(_pool, url, error or ResponseError(cause)),
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xffff9c5c3370>: Failed to establish a new connection: [Errno -3] Try again')),
,
During handling of the above exception, another exception occurred:,
,
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xffff9c5c3370>: Failed to establish a new connection: [Errno -3] Try again')),
Please see the logfiles in /var/log/letsencrypt for more details.,
,
[10/29/2020] [10:12:13 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[10/29/2020] [10:29:41 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...,
[10/29/2020] [10:29:45 PM] [Nginx    ] › ℹ  info      Reloading Nginx,
[10/29/2020] [10:29:45 PM] [SSL      ] › ℹ  info      Renew Complete,
[10/29/2020] [10:29:45 PM] [SSL      ] › ✖  error     Certificate is not valid (Command failed: openssl x509 -in /etc/letsencrypt/live/npm-1/fullchain.pem -subject -noout,
Can't open /etc/letsencrypt/live/npm-1/fullchain.pem for reading, No such file or directory,
281472828726840:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:69:fopen('/etc/letsencrypt/live/npm-1/fullchain.pem','r'),
281472828726840:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:76:,
unable to load certificate,
),

I have this exact same problem. I keep getting an error. I have two instances: one local and one on a vps. vps has no problems. Which logs should i add for info?

Please put them in the same docker network (or expose the port of db )

networks:
  net:
    driver: bridge
    ipam:
     driver: default
     config:
       - subnet: <IP_ADDRESS>/29 #<IP_ADDRESS> - <IP_ADDRESS> bc:8.15
    driver_opts:
      com.docker.network.bridge.name: nginx_proxy_net

services:
  app:
    hostname: nginx-proxy
    container_name: nginx-proxy
    image: 'jc21/nginx-proxy-manager:latest'
    environment:
      - TZ=Europe/Amsterdam
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./config.json:/app/config/production.json
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - net
    restart: always

  db:
    container_name: nginx-proxy_db
    image: 'yobasystems/alpine-mariadb:latest'
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      - net
    restart: always

Please put them in the same docker network (or expose the port of db )

Shouldnt docker-compose do that automatically (putting them in the same network)?

f

Has anyone found a solution for this? I have letsencrypt running through NGINX PROXY MANAGER and I'm seeing the same issues in my logs. It just wont give me certs.

Has anyone found a solution for this? I have letsencrypt running through NGINX PROXY MANAGER and I'm seeing the same issues in my logs. It just wont give me certs.

Same issue here. It was working before, now it's not. No change in configuration.

Hi,
I having the same issue with v2.8.1
Any solution for this yet ?

Hi,
I having the same issue with v2.8.1
Any solution for this yet ?

I never found one, so I skipped letsencrypt and I'm using cloudflare certs instead.

Hi,
I having the same issue with v2.8.1
Any solution for this yet ?

I never found one, so I skipped letsencrypt and I'm using cloudflare certs instead.

Best way to go in my opinion. Hence why I did a video on it.

@ghost Please could you share the link?
Thanks

Hi,
I having the same issue with v2.8.1
Any solution for this yet ?

I never found one, so I skipped letsencrypt and I'm using cloudflare certs instead.

Best way to go in my opinion. Hence why I did a video on it.

Please could you share  the video? Thanks

Any updates on this?

Any updates on this?

i m still not able to renew the cert, i force a new cert over the "Edit Proxy Host" menu, then click on SSL-tab and click "Request a new cert" - that worked for me

Got the same issue... I have 4 proxy-hosts, only one is unable to get a new certificate. Finally ended up in NGINX logs where I found that NGINX is not able to fire up the webserver for verification (cannot bind IP-address to port 80).
After comparing this NPM container with another one, I found that I changed the Docker-network from 172.... to <IP_ADDRESS>. It's possible that I changed this after deploying the first proxy-host. I guess the old IP or subnet is still somewhere in NGINX configfiles - does somebody have an idea where? I'm not really used with NGINX...

Today, I stumbled over the above described errors. I found something else: NPM says the certificates expire today, but visiting the sites reveals and checking in the browser reveals that the certificates are still valid a few weeks or even months... Strange. Maybe it is just wrongly stored in the database?

Found the solution. Steps I took:

Go to cloudflare, set proxy status to "DNS Only"
Wait a couple of minutes.
Go to Dashboard, Proxy Hosts, disable source, now you can update the ssl certificate.
Enable source, and set proxy status back to Proxied on cloudflare.

Hopefully I'm helping someone out there.

I am still facing this error for creating the Certificate too. This is the error I am seeing, can some one help please?
[1/26/2022] [2:47:11 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[1/26/2022] [2:47:16 PM] [SSL      ] › ℹ  info      Requesting Let'sEncrypt certificates for Cert #1: gokuzelda.duckdns.org
[1/26/2022] [2:47:16 PM] [SSL      ] › ℹ  info      Command: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-1" --agree-tos --authenticator webroot --email<EMAIL_ADDRESS>--preferred-challenges "dns,http" --domains "xxxxxx.duckdns.org"
[1/26/2022] [2:47:29 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[1/26/2022] [2:47:29 PM] [Express  ] › ⚠  warning   Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-1" --agree-tos --authenticator webroot --email<EMAIL_ADDRESS>--preferred-challenges "dns,http" --domains "xxxxxxx.duckdns.org"
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How to resolve this issue?

For me it was a problem with Access Lists.
After changing the "Access" of my proxy host to "Publicly Accessible", I was able to renew the Let's encrypt certificate

For those who get an Internal Error while trying to renew certs and have this error message in their logs:
``
Try this https://github.com/NginxProxyManager/nginx-proxy-manager/issues/1816#issuecomment-1030841719

@LeducH I was able to resolve the problem through the UI.

Navigate to Proxy Hosts
Edit a Host entry with a bad SSL Cert
Navigate to the SSL Tab
Click on the SSL Certificate field and in the drop down select "Request a new SSL Certificate"
Click Save
Navigate to SSL Certificates
Delete the old Certificate

After doing the above steps for each of my Proxy Hosts, they can be renewed from the GUI.  I'm not sure if Auto-renew will work but I guess I'll find out in a couple months.

I found a solution to get a renewal.
) open portainer (if you use it, I use it on every docker maschine)
) navigate to "Containers"-> select the ">_" at the npm container
) navigate with the console to "cd /letsencrypt/live/npm-1"
) run "ln -s cert.pem cert2.pem"
) open NPM -> "SSL Ceritifcates" and try to renew one. This was the solution for me... only the cert in the first "npm-" -folder need a symlink and than the manual renew works. I don't have a cert what will stop working in the next days so I cant test the auto renewal yet.
I hope this will help you guys too.

For me this was happening to one specific proxy so I knew it must be down to something special about this host. Checked myself several times, protocol correct, ip correct, port correct. Anyway it was my bad. Although I had DNS setup correctly to point the domain to NGinxPM, I also had a left over NAT rule on my firewall that was forwarding incoming directly to the original machine, not NPM. So could be worth checking your firewall to make sure you've not done something as dumb as I did.

For me this was happening to one specific proxy so I knew it must be down to something special about this host. Checked myself several times, protocol correct, ip correct, port correct. Anyway it was my bad. Although I had DNS setup correctly to point the domain to NGinxPM, I also had a left over NAT rule on my firewall that was forwarding incoming directly to the original machine, not NPM. So could be worth checking your firewall to make sure you've not done something as dumb as I did.

I wish it were that simple.  I have a half dozen domains on a single IP going to multiple servers.  If I had a NAT rule wrong then only one of those servers would be remotely accessible.

I don't know if it's the same error, but I can't renew some certs (not sure why some are affected and some are not) unless I turn off all the SSL settings in the proxy host.   Not a great solution.

I don't know if it's the same error, but I can't renew some certs (not sure why some are affected and some are not) unless I turn off all the SSL settings in the proxy host.   Not a great solution.

I have the same issue. Can't renew specific certs unless I've turned all the SSL settings off. I could provide my logs later that day. Tested it on just one host that was failing, still plenty of hosts to test it. :D

I don't know if it's the same error, but I can't renew some certs (not sure why some are affected and some are not) unless I turn off all the SSL settings in the proxy host.   Not a great solution.

I have the same issue. Can't renew specific certs unless I've turned all the SSL settings off. I could provide my logs later that day. Tested it on just one host that was failing, still plenty of hosts to test it. :D

Tested it now on a few hosts, I have to disable the "Force SSL" under SSL-Settings to renew my certs. When I don't disable it I'll get the "internal error" with the following logs on version 2.9.19:
letsencrypt.log.txt
`2023-01-23 14:59:03,971:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "POST /acme/authz-v3/197593605707 HTTP/1.1" 200 805
2023-01-23 14:59:03,972:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Mon, 23 Jan 2023 14:59:03 GMT
Content-Type: application/json
Content-Length: 805
Connection: keep-alive
Boulder-Requester: 286501160
Cache-Control: public, max-age=0, no-cache
Link: https://acme-v02.api.letsencrypt.org/directory;rel="index"
Replay-Nonce: CENSORED
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800
{
"identifier": {
"type": "dns",
"value": "my.domain.tld"
},
"status": "pending",
"expires": "2023-01-30T14:58:59Z",
"challenges": [
{
"type": "http-01",
"status": "pending",
"url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/197593605707/FAxihQ",
"token": "CENSORED"
},
{
"type": "dns-01",
"status": "pending",
"url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/197593605707/EcSxMg",
"token": "CENSORED"
},
{
"type": "tls-alpn-01",
"status": "pending",
"url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/197593605707/NKSXIA",
"token": "CENSORED"
}
]
}
2023-01-23 14:59:03,972:DEBUG:acme.client:Storing nonce: CENSORED
2023-01-23 14:59:06,974:DEBUG:acme.client:JWS payload:
b''
2023-01-23 14:59:06,975:DEBUG:acme.client:Sending POST request to https://acme-v02.api.letsencrypt.org/acme/authz-v3/197593605707:
{
"protected": "CENSORED",
"signature": "CENSORED",
"payload": ""
}
2023-01-23 14:59:07,128:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "POST /acme/authz-v3/197593605707 HTTP/1.1" 200 1857
2023-01-23 14:59:07,128:DEBUG:acme.client:Received response:
HTTP 200
Server: nginx
Date: Mon, 23 Jan 2023 14:59:07 GMT
Content-Type: application/json
Content-Length: 1857
Connection: keep-alive
Boulder-Requester: 286501160
Cache-Control: public, max-age=0, no-cache
Link: https://acme-v02.api.letsencrypt.org/directory;rel="index"
Replay-Nonce: CENSORED
X-Frame-Options: DENY
Strict-Transport-Security: max-age=604800
{
"identifier": {
"type": "dns",
"value": "my.domain.tld"
},
"status": "invalid",
"expires": "2023-01-30T14:58:59Z",
"challenges": [
{
"type": "http-01",
"status": "invalid",
"error": {
"type": "urn:ietf:params:acme:error:connection",
"detail": "MY-IP: Fetching https://my.domain.tld/.well-known/acme-challenge/CENSORED: Error getting validation data",
"status": 400
},
"url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/197593605707/FAxihQ",
"token": "CENSORED",
"validationRecord": [
{
"url": "http://my.domain.tld/.well-known/acme-challenge/CENSORED",
"hostname": "my.domain.tld",
"port": "80",
"addressesResolved": [
"MY-IP",
"MY-IP-V6"
],
"addressUsed": "MY-IP-V6"
},
{
"url": "http://my.domain.tld/.well-known/acme-challenge/CENSORED",
"hostname": "my.domain.tld",
"port": "80",
"addressesResolved": [
"MY-IP",
"MY-IP-V6"
],
"addressUsed": "MY-IP"
},
{
"url": "https://my.domain.tld/.well-known/acme-challenge/CENSORED",
"hostname": "my.domain.tld",
"port": "443",
"addressesResolved": [
"MY-IP",
"MY-IP-V6"
],
"addressUsed": "MY-IP-V6"
}
],
"validated": "2023-01-23T14:58:59Z"
}
]
}
2023-01-23 14:59:07,128:DEBUG:acme.client:Storing nonce: CENSORED
2023-01-23 14:59:07,129:INFO:certbot._internal.auth_handler:Challenge failed for domain my.domain.tld
2023-01-23 14:59:07,129:INFO:certbot._internal.auth_handler:http-01 challenge for my.domain.tld
2023-01-23 14:59:07,129:DEBUG:certbot._internal.display.obj:Notifying user:
Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
Domain: my.domain.tld
Type:   connection
Detail: MY-IP: Fetching https://my.domain.tld/.well-known/acme-challenge/CENSORED: Error getting validation data
Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.
2023-01-23 14:59:07,129:DEBUG:certbot._internal.error_handler:Encountered exception:
Traceback (most recent call last):
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/auth_handler.py", line 106, in handle_authorizations
self._poll_authorizations(authzrs, max_retries, best_effort)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/auth_handler.py", line 206, in _poll_authorizations
raise errors.AuthorizationError('Some challenges have failed.')
certbot.errors.AuthorizationError: Some challenges have failed.
2023-01-23 14:59:07,129:DEBUG:certbot._internal.error_handler:Calling registered functions
2023-01-23 14:59:07,129:INFO:certbot._internal.auth_handler:Cleaning up challenges
2023-01-23 14:59:07,129:DEBUG:certbot._internal.plugins.webroot:Removing /data/letsencrypt-acme-challenge/.well-known/acme-challenge/CENSORED
2023-01-23 14:59:07,130:DEBUG:certbot._internal.plugins.webroot:All challenges cleaned up
2023-01-23 14:59:07,130:ERROR:certbot._internal.renewal:Failed to renew certificate npm-59 with error: Some challenges have failed.
2023-01-23 14:59:07,131:DEBUG:certbot._internal.renewal:Traceback was:
Traceback (most recent call last):
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/renewal.py", line 484, in handle_renewal_request
main.renew_cert(lineage_config, plugins, renewal_candidate)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/main.py", line 1541, in renew_cert
renewed_lineage = _get_and_save_cert(le_client, config, lineage=lineage)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/main.py", line 129, in _get_and_save_cert
renewal.renew_cert(config, domains, le_client, lineage)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/renewal.py", line 344, in renew_cert
new_cert, new_chain, new_key, _ = le_client.obtain_certificate(domains, new_key)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/client.py", line 442, in obtain_certificate
orderr = self._get_order_and_authorizations(csr.data, self.config.allow_subset_of_names)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/client.py", line 510, in _get_order_and_authorizations
authzr = self.auth_handler.handle_authorizations(orderr, self.config, best_effort)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/auth_handler.py", line 106, in handle_authorizations
self._poll_authorizations(authzrs, max_retries, best_effort)
File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/auth_handler.py", line 206, in _poll_authorizations
raise errors.AuthorizationError('Some challenges have failed.')
certbot.errors.AuthorizationError: Some challenges have failed.
2023-01-23 14:59:07,131:DEBUG:certbot._internal.display.obj:Notifying user:

2023-01-23 14:59:07,131:ERROR:certbot._internal.renewal:All renewals failed.
Fortunately, it was only 2 or 3 certs so I manually deleted them and re-requested them without issues.  Is there any workaround identified?
The logs I get are the below, and seem to be continuous:
npm  | 2023-01-27T21:31:34.074189905Z
npm  | 2023-01-27T21:31:34.074194695Z     at ChildProcess.exithandler (node:child_process:402:12)
npm  | 2023-01-27T21:31:34.074199735Z     at ChildProcess.emit (node:events:513:28)
npm  | 2023-01-27T21:31:34.074204645Z     at maybeClose (node:internal/child_process:1100:16)
npm  | 2023-01-27T21:31:34.074209645Z     at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)
npm  | 2023-01-27T22:31:32.252441362Z [1/27/2023] [10:31:32 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
npm  | 2023-01-27T22:31:32.261066175Z [1/27/2023] [10:31:32 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
npm  | 2023-01-27T22:31:32.261095964Z [1/27/2023] [10:31:32 PM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
npm  | 2023-01-27T22:31:32.616221690Z [1/27/2023] [10:31:32 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
npm  | 2023-01-27T22:31:32.786813548Z [1/27/2023] [10:31:32 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
npm  | 2023-01-27T22:31:33.083437363Z [1/27/2023] [10:31:33 PM] [Nginx    ] › ℹ  info      Reloading Nginx
npm  | 2023-01-27T22:31:33.749887794Z [1/27/2023] [10:31:33 PM] [SSL      ] › ✖  error     Error: Command failed: certbot renew --non-interactive --quiet --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
npm  | 2023-01-27T22:31:33.749917303Z Renewal configuration file /etc/letsencrypt/renewal/npm-14.conf is broken.
npm  | 2023-01-27T22:31:33.749922373Z The error was: expected /etc/letsencrypt/live/npm-14/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749926401Z Skipping.
npm  | 2023-01-27T22:31:33.749930219Z Renewal configuration file /etc/letsencrypt/renewal/npm-16.conf is broken.
npm  | 2023-01-27T22:31:33.749934127Z The error was: expected /etc/letsencrypt/live/npm-16/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749937964Z Skipping.
npm  | 2023-01-27T22:31:33.749941702Z Renewal configuration file /etc/letsencrypt/renewal/npm-19.conf is broken.
npm  | 2023-01-27T22:31:33.749945519Z The error was: expected /etc/letsencrypt/live/npm-19/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749949327Z Skipping.
npm  | 2023-01-27T22:31:33.749952954Z Renewal configuration file /etc/letsencrypt/renewal/npm-2.conf is broken.
npm  | 2023-01-27T22:31:33.749956752Z The error was: expected /etc/letsencrypt/live/npm-2/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749973365Z Skipping.
npm  | 2023-01-27T22:31:33.749977202Z Renewal configuration file /etc/letsencrypt/renewal/npm-20.conf is broken.
npm  | 2023-01-27T22:31:33.749980960Z The error was: expected /etc/letsencrypt/live/npm-20/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749984868Z Skipping.
npm  | 2023-01-27T22:31:33.749988625Z Renewal configuration file /etc/letsencrypt/renewal/npm-21.conf is broken.
npm  | 2023-01-27T22:31:33.749992433Z The error was: expected /etc/letsencrypt/live/npm-21/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.749996200Z Skipping.
npm  | 2023-01-27T22:31:33.749999838Z Renewal configuration file /etc/letsencrypt/renewal/npm-23.conf is broken.
npm  | 2023-01-27T22:31:33.750003595Z The error was: expected /etc/letsencrypt/live/npm-23/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750007373Z Skipping.
npm  | 2023-01-27T22:31:33.750011000Z Renewal configuration file /etc/letsencrypt/renewal/npm-25.conf is broken.
npm  | 2023-01-27T22:31:33.750014857Z The error was: expected /etc/letsencrypt/live/npm-25/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750018675Z Skipping.
npm  | 2023-01-27T22:31:33.750022252Z Renewal configuration file /etc/letsencrypt/renewal/npm-28.conf is broken.
npm  | 2023-01-27T22:31:33.750026020Z The error was: expected /etc/letsencrypt/live/npm-28/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750029827Z Skipping.
npm  | 2023-01-27T22:31:33.750033404Z Renewal configuration file /etc/letsencrypt/renewal/npm-29.conf is broken.
npm  | 2023-01-27T22:31:33.750037182Z The error was: expected /etc/letsencrypt/live/npm-29/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750040959Z Skipping.
npm  | 2023-01-27T22:31:33.750044577Z Renewal configuration file /etc/letsencrypt/renewal/npm-30.conf is broken.
npm  | 2023-01-27T22:31:33.750048374Z The error was: expected /etc/letsencrypt/live/npm-30/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750052172Z Skipping.
npm  | 2023-01-27T22:31:33.750056761Z Renewal configuration file /etc/letsencrypt/renewal/npm-31.conf is broken.
npm  | 2023-01-27T22:31:33.750060629Z The error was: expected /etc/letsencrypt/live/npm-31/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750064436Z Skipping.
npm  | 2023-01-27T22:31:33.750068003Z Renewal configuration file /etc/letsencrypt/renewal/npm-32.conf is broken.
npm  | 2023-01-27T22:31:33.750071761Z The error was: expected /etc/letsencrypt/live/npm-32/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750075599Z Skipping.
npm  | 2023-01-27T22:31:33.750079156Z Renewal configuration file /etc/letsencrypt/renewal/npm-33.conf is broken.
npm  | 2023-01-27T22:31:33.750082933Z The error was: expected /etc/letsencrypt/live/npm-33/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750086721Z Skipping.
npm  | 2023-01-27T22:31:33.750090298Z Renewal configuration file /etc/letsencrypt/renewal/npm-34.conf is broken.
npm  | 2023-01-27T22:31:33.750094055Z The error was: expected /etc/letsencrypt/live/npm-34/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750103775Z Skipping.
npm  | 2023-01-27T22:31:33.750107612Z Renewal configuration file /etc/letsencrypt/renewal/npm-35.conf is broken.
npm  | 2023-01-27T22:31:33.750111410Z The error was: expected /etc/letsencrypt/live/npm-35/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750115749Z Skipping.
npm  | 2023-01-27T22:31:33.750123574Z Renewal configuration file /etc/letsencrypt/renewal/npm-36.conf is broken.
npm  | 2023-01-27T22:31:33.750128795Z The error was: expected /etc/letsencrypt/live/npm-36/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750133835Z Skipping.
npm  | 2023-01-27T22:31:33.750138564Z Renewal configuration file /etc/letsencrypt/renewal/npm-39.conf is broken.
npm  | 2023-01-27T22:31:33.750143584Z The error was: expected /etc/letsencrypt/live/npm-39/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750148634Z Skipping.
npm  | 2023-01-27T22:31:33.750153424Z Renewal configuration file /etc/letsencrypt/renewal/npm-40.conf is broken.
npm  | 2023-01-27T22:31:33.750159035Z The error was: expected /etc/letsencrypt/live/npm-40/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750164726Z Skipping.
npm  | 2023-01-27T22:31:33.750169586Z Renewal configuration file /etc/letsencrypt/renewal/npm-42.conf is broken.
npm  | 2023-01-27T22:31:33.750175417Z The error was: expected /etc/letsencrypt/live/npm-42/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750180748Z Skipping.
npm  | 2023-01-27T22:31:33.750185498Z Renewal configuration file /etc/letsencrypt/renewal/npm-43.conf is broken.
npm  | 2023-01-27T22:31:33.750190498Z The error was: expected /etc/letsencrypt/live/npm-43/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750195568Z Skipping.
npm  | 2023-01-27T22:31:33.750200317Z Renewal configuration file /etc/letsencrypt/renewal/npm-44.conf is broken.
npm  | 2023-01-27T22:31:33.750205337Z The error was: expected /etc/letsencrypt/live/npm-44/cert.pem to be a symlink
npm  | 2023-01-27T22:31:33.750210387Z Skipping.
npm  | 2023-01-27T22:31:33.750215177Z 0 renew failure(s), 22 parse failure(s)
npm  | 2023-01-27T22:31:33.750220107Z
npm  | 2023-01-27T22:31:33.750224856Z     at ChildProcess.exithandler (node:child_process:402:12)
npm  | 2023-01-27T22:31:33.750229856Z     at ChildProcess.emit (node:events:513:28)
npm  | 2023-01-27T22:31:33.750234826Z     at maybeClose (node:internal/child_process:1100:16)
npm  | 2023-01-27T22:31:33.750239856Z     at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)
npm  | 2023-01-27T23:31:32.252935240Z [1/27/2023] [11:31:32 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
npm  | 2023-01-27T23:31:33.972358199Z [1/27/2023] [11:31:33 PM] [SSL      ] › ✖  error     Error: Command failed: certbot renew --non-interactive --quiet --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
npm  | 2023-01-27T23:31:33.972396275Z Renewal configuration file /etc/letsencrypt/renewal/npm-14.conf is broken.
npm  | 2023-01-27T23:31:33.972423779Z The error was: expected /etc/letsencrypt/live/npm-14/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972429591Z Skipping.
npm  | 2023-01-27T23:31:33.972434581Z Renewal configuration file /etc/letsencrypt/renewal/npm-16.conf is broken.
npm  | 2023-01-27T23:31:33.972439781Z The error was: expected /etc/letsencrypt/live/npm-16/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972444951Z Skipping.
npm  | 2023-01-27T23:31:33.972449861Z Renewal configuration file /etc/letsencrypt/renewal/npm-19.conf is broken.
npm  | 2023-01-27T23:31:33.972454931Z The error was: expected /etc/letsencrypt/live/npm-19/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972460001Z Skipping.
npm  | 2023-01-27T23:31:33.972464820Z Renewal configuration file /etc/letsencrypt/renewal/npm-2.conf is broken.
npm  | 2023-01-27T23:31:33.972470091Z The error was: expected /etc/letsencrypt/live/npm-2/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972475291Z Skipping.
npm  | 2023-01-27T23:31:33.972480181Z Renewal configuration file /etc/letsencrypt/renewal/npm-20.conf is broken.
npm  | 2023-01-27T23:31:33.972485301Z The error was: expected /etc/letsencrypt/live/npm-20/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972490381Z Skipping.
npm  | 2023-01-27T23:31:33.972495281Z Renewal configuration file /etc/letsencrypt/renewal/npm-21.conf is broken.
npm  | 2023-01-27T23:31:33.972500361Z The error was: expected /etc/letsencrypt/live/npm-21/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972505391Z Skipping.
npm  | 2023-01-27T23:31:33.972513016Z Renewal configuration file /etc/letsencrypt/renewal/npm-23.conf is broken.
npm  | 2023-01-27T23:31:33.972518236Z The error was: expected /etc/letsencrypt/live/npm-23/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972523306Z Skipping.
npm  | 2023-01-27T23:31:33.972528186Z Renewal configuration file /etc/letsencrypt/renewal/npm-25.conf is broken.
npm  | 2023-01-27T23:31:33.972533316Z The error was: expected /etc/letsencrypt/live/npm-25/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972538396Z Skipping.
npm  | 2023-01-27T23:31:33.972543206Z Renewal configuration file /etc/letsencrypt/renewal/npm-28.conf is broken.
npm  | 2023-01-27T23:31:33.972548326Z The error was: expected /etc/letsencrypt/live/npm-28/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972553436Z Skipping.
npm  | 2023-01-27T23:31:33.972558235Z Renewal configuration file /etc/letsencrypt/renewal/npm-29.conf is broken.
npm  | 2023-01-27T23:31:33.972563315Z The error was: expected /etc/letsencrypt/live/npm-29/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972568385Z Skipping.
npm  | 2023-01-27T23:31:33.972573205Z Renewal configuration file /etc/letsencrypt/renewal/npm-30.conf is broken.
npm  | 2023-01-27T23:31:33.972578335Z The error was: expected /etc/letsencrypt/live/npm-30/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972583425Z Skipping.
npm  | 2023-01-27T23:31:33.972589768Z Renewal configuration file /etc/letsencrypt/renewal/npm-31.conf is broken.
npm  | 2023-01-27T23:31:33.972601641Z The error was: expected /etc/letsencrypt/live/npm-31/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972606952Z Skipping.
npm  | 2023-01-27T23:31:33.972611761Z Renewal configuration file /etc/letsencrypt/renewal/npm-32.conf is broken.
npm  | 2023-01-27T23:31:33.972616821Z The error was: expected /etc/letsencrypt/live/npm-32/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972621861Z Skipping.
npm  | 2023-01-27T23:31:33.972626681Z Renewal configuration file /etc/letsencrypt/renewal/npm-33.conf is broken.
npm  | 2023-01-27T23:31:33.972631761Z The error was: expected /etc/letsencrypt/live/npm-33/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972636821Z Skipping.
npm  | 2023-01-27T23:31:33.972641700Z Renewal configuration file /etc/letsencrypt/renewal/npm-34.conf is broken.
npm  | 2023-01-27T23:31:33.972646851Z The error was: expected /etc/letsencrypt/live/npm-34/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972651951Z Skipping.
npm  | 2023-01-27T23:31:33.972657211Z Renewal configuration file /etc/letsencrypt/renewal/npm-35.conf is broken.
npm  | 2023-01-27T23:31:33.972662291Z The error was: expected /etc/letsencrypt/live/npm-35/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972667361Z Skipping.
npm  | 2023-01-27T23:31:33.972672211Z Renewal configuration file /etc/letsencrypt/renewal/npm-36.conf is broken.
npm  | 2023-01-27T23:31:33.972677301Z The error was: expected /etc/letsencrypt/live/npm-36/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972682621Z Skipping.
npm  | 2023-01-27T23:31:33.972687461Z Renewal configuration file /etc/letsencrypt/renewal/npm-39.conf is broken.
npm  | 2023-01-27T23:31:33.972692621Z The error was: expected /etc/letsencrypt/live/npm-39/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972697701Z Skipping.
npm  | 2023-01-27T23:31:33.972702501Z Renewal configuration file /etc/letsencrypt/renewal/npm-40.conf is broken.
npm  | 2023-01-27T23:31:33.972707571Z The error was: expected /etc/letsencrypt/live/npm-40/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972712651Z Skipping.
npm  | 2023-01-27T23:31:33.972717480Z Renewal configuration file /etc/letsencrypt/renewal/npm-42.conf is broken.
npm  | 2023-01-27T23:31:33.972722681Z The error was: expected /etc/letsencrypt/live/npm-42/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972727751Z Skipping.
npm  | 2023-01-27T23:31:33.972732600Z Renewal configuration file /etc/letsencrypt/renewal/npm-43.conf is broken.
npm  | 2023-01-27T23:31:33.972737740Z The error was: expected /etc/letsencrypt/live/npm-43/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972742851Z Skipping.
npm  | 2023-01-27T23:31:33.972747690Z Renewal configuration file /etc/letsencrypt/renewal/npm-44.conf is broken.
npm  | 2023-01-27T23:31:33.972752800Z The error was: expected /etc/letsencrypt/live/npm-44/cert.pem to be a symlink
npm  | 2023-01-27T23:31:33.972757920Z Skipping.
npm  | 2023-01-27T23:31:33.972763161Z 0 renew failure(s), 22 parse failure(s)
npm  | 2023-01-27T23:31:33.972768221Z
npm  | 2023-01-27T23:31:33.972778411Z     at ChildProcess.exithandler (node:child_process:402:12)
npm  | 2023-01-27T23:31:33.972783591Z     at ChildProcess.emit (node:events:513:28)
npm  | 2023-01-27T23:31:33.972788561Z     at maybeClose (node:internal/child_process:1100:16)
npm  | 2023-01-27T23:31:33.972793621Z     at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)
npm  | 2023-01-28T00:09:59.625386675Z [1/28/2023] [12:09:59 AM] [Nginx    ] › ℹ  info      Reloading Nginx
npm  | 2023-01-28T00:10:10.815170898Z [1/28/2023] [12:10:10 AM] [Nginx    ] › ℹ  info      Reloading Nginx
npm  | 2023-01-28T00:11:55.099793912Z [1/28/2023] [12:11:55 AM] [Nginx    ] › ℹ  info      Reloading Nginx

Same issue here - just had 10 renewal notices this morning - it had been working fine and now none have renewed. @jc21 or anyone else, any word on a fix for this? It's getting to be a fairly major issue and is quite frustrating to have to keep recreating all the certs every month!

In my case, this issue was solved by deleting the IPv6 address from the DNS record.

I had the same issue and solved it by adding a DNS CAA record for the HOST.MYDOMAIN.TLD and setting letsencrypt.org as an authorized certificate provider (I use EasyDNS).
What made me think of this was an email that letsencrypt had sent some time ago regarding this soon-to-come requirement from DNS providers.
Nginx Proxy Manager v2.7.1
Hope this helps others.

Sadly I don't think that's an option for my DNS provider. The thing is it used to work fine and the issue seems to be around https being enforced even for the LetsEncrypt check so I'm hoping it's sortable in the code...

I do not know if it helps, but I had the "Force SSL" option selected in npm, and it worked. I do not know either if all DNS providers are enforcing the CAA requirement. I wish you good luck.

Yep it seems intermittent - when it stopped working I found if I switch that off it seems to work again obtaining certs, but at present both servers have SSL certs far enough away it's not trying to renew them yet

"Force SSL" option   was the problem on my site.
Fixed it by changing the force ssl config file.
The force ssl file works with this settings:

set $url "${scheme}:${request_uri}";
if ($url ~ "^http:(?!/\.well-known/acme-challenge/(.*))") {
        return 301 https://$host$request_uri;
}

Get this fixe from this site: https://community.alarmiator.de/t/lets-encrypt-zertifikat-wird-von-nginx-proxy-manager-nicht-aktualisiert/380/3

"Force SSL" option   was the problem on my site.
Fixed it by changing the force ssl config file.
The force ssl file works with this settings:

set $url "${scheme}:${request_uri}";
if ($url ~ "^http:(?!/\.well-known/acme-challenge/(.*))") {
        return 301 https://$host$request_uri;
}

Get this fixe from this site: https://community.alarmiator.de/t/lets-encrypt-zertifikat-wird-von-nginx-proxy-manager-nicht-aktualisiert/380/3

This works for me. I was already thinking about an alternative for npm.
 ;)

"Force SSL" option was the problem on my site. Fixed it by changing the force ssl config file. The force ssl file works with this settings:

set $url "${scheme}:${request_uri}";
if ($url ~ "^http:(?!/\.well-known/acme-challenge/(.*))") {
        return 301 https://$host$request_uri;
}

Get this fixe from this site: https://community.alarmiator.de/t/lets-encrypt-zertifikat-wird-von-nginx-proxy-manager-nicht-aktualisiert/380/3

Yep - see the PR I did a few weeks ago, has been fine for me since then too.
https://github.com/NginxProxyManager/nginx-proxy-manager/pull/3121

Yep - for any not comfortable with making changes themselves, see the PR above I did that made those changes ;)

For me, the problem was different. I've executed the certbot directly in the nginxproxymanager container and the problem was more explicit:
ERROR:certbot._internal.renewal:Renewal configuration file /etc/letsencrypt/renewal/npm-3.conf is broken
ERROR:certbot._internal.renewal:The error was: expected /etc/letsencrypt/live/npm-3/cert.pem to be a symlink. Skipping.
So I've simply copied the files in ../../archive/npm-3 (actually it was not necessary because the files were already there with the name cert3.pem.
I've just removed the files and replaced them by symlinks:
cd /etc/letsencrypt/live/npm-3/
rm *.pem
ln -s ../../archive/npm-3/cert3.pem cert.pem
ln -s ../../archive/npm-3/chain3.pem chain.pem
ln -s ../../archive/npm-3/fullchain3.pem fullchain.pem
ln -s ../../archive/npm-3/privkey3.pem privkey.pem
and it works. I've renewed the certificates successfully from the user interface.
I hope it will help.

I use nginx proxy manager and now it simply does not update the certificates in any way. I would like to know what the problem is, where exactly do I see the error occurring 500 internal error, I want to know what internal error this is, what is the real error message, where can I find it? I cannot renew this certificate manually in some way, I need to renew the certificate and I do not know how to solve it, apparently there are millions of people looking for a solution to the problem and cannot solve it...., in my case both port 80 and 443 are being redirected. Normally I have some hosts running on 80 and others on 443 and others with an expired certificate and I need to renew some solution?, is the problem in letsencrypt or in nginx proxy manager?

I use nginx proxy manager and now it simply does not update the certificates in any way. I would like to know what the problem is, where exactly do I see the error occurring 500 internal error, I want to know what internal error this is, what is the real error message, where can I find it? I cannot renew this certificate manually in some way, I need to renew the certificate and I do not know how to solve it, apparently there are millions of people looking for a solution to the problem and cannot solve it...., in my case both port 80 and 443 are being redirected. Normally I have some hosts running on 80 and others on 443 and others with an expired certificate and I need to renew some solution?, is the problem in letsencrypt or in nginx proxy manager?

Hey, you can check the logs of the Docker container with "docker logs %container%" replace %container% with your npm-container-name i.e. npm-app-1.
Now you should see why it's failing to renew your certs.

In my case (using namecheap), I needed to re-whitelist my ip for api access (for the DNS challenge)


Feature/number

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 72.96%. Comparing base (2c1e6b1) to head (89c8fea).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #156   +/-   ##
========================================
  Coverage    72.96%   72.96%
========================================
  Files           10       10
  Lines          825      825
========================================
  Hits           602      602
  Misses         223      223

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Allow prefer config

Essentially just added a IsShadowPath() function alongside IsConfig() to allow generation/unmarshal to happen correctly.
Added simple bash script to copy ygnmi_test.go to ygnmi_preferconfig_test.go for testing.

This allows existing ygot code that prefers config paths to transition to using ygnmi.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

92 of 101 (91.09%)  changed or added relevant lines in 7 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.05%) to 82.305%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pathgen/pathgen.go
29
32
90.63%

pathgen/gnmigen.go
24
30
80.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.05%

Covered Lines:
2000

Relevant Lines:
2430

💛  - Coveralls


Update upgrade-offline.md

Proposed changes

Unreleased project version (optional)

Related issues (optional)

Thanks, @scjane :)

CC @joaofnfernandes I'm seeing a lot of instances of "login into" when it should simple be "log in to"


Pills in the Discord dark theme blend into the background

User/room pills are nearly invisible in the Discord Dark Theme. Is it possible to change them individually to be a bit lighter, so they stand out better?

I had the same comment. It doesn't look like Riot gives us any variable that would allow us to set the pill color.

What we're looking for is .mx_ReactionsRowButton.mx_ReactionsRowButton_selected in any of the *theme.css files in the /bundles/ folders.  background-color is the variable that needs to be changed, I manually set it to var(--accent-color) which looks like this:


[Bug]: Tools other than default do not count towards progress

Describe the Bug
Tools like copper pickaxe (or any other non default mining tools) do not seem to count towards progress of your missions
To Reproduce

Catch the bug In Action!
No response
Crash Report or Log
No response
OS
Ubuntu
Minecraft Version
1.19.2
ModLoader
Forge
Mod Version
1.19.2-1.3.0

From which mod is the copper pickaxe?

create stuff and additions but it also doesnt work withy tools from stalwart dungeons and maybe more as jsut going off user reports.

Great! I've identified and resolved the issue.
It'll be fixed in the upcoming update.
Thank you for helping ✨🙏


Rework typing in the repo

As was pointed in #162, the typing problems go quite deep and will likely require some refactoring.
The biggest issue is the fact that sync and async clients inherit from the same class, which causes issues in type system.
For instance, this code:
from typing import *

class Parent:
    def set(self) -> int:
        return 1

class Child(Parent):
    async def set(self) -> int:
        return 1

raises this mypy error:
main.py:8: error: Return type "Coroutine[Any, Any, int]" of "set" incompatible with return type "int" in supertype "Parent"  [override]

Attempting to have a union there won't help either. That is, this code
from typing import *

class Parent:
    def set(self) -> int | Coroutine[Any, Any, int]:
        return 1

class Child(Parent):
    async def set(self) -> int | Coroutine[Any, Any, int]:
        return 1

causes this error
main.py:8: error: Return type "Coroutine[Any, Any, int | Coroutine[Any, Any, int]]" of "set" incompatible with return type "int | Coroutine[Any, Any, int]" in supertype "Parent"  [override]

There should be a way to fix this without completely reworking the class hierarchy in the repo. This should be investigated.

hi sorry for the mess :)
as with the discussion we had in discord with graingert and fix error, this could be solved with python's generic types
tho it would need some work to fully adopt it
basically:
Async = Literal[True]
Sync = Literal[False]
IsAsynchronous = TypeVar("IsAsynchronous", Async, Sync)

class A(Generic[IsAsynchronous]):
    @overload
    def a(self: A[Sync]) -> int: ...

    @overload
    def a(self: A[Async]) -> Coroutine[int, Any, Any]: ...

    def a(self) -> Union[int, Coroutin[int, Any, Any]:
        # do stuff

but i have a feeling writing a separate async client would end up with smaller code base :p, who perhaps harder to maintain.
as a side note:
async def a() -> int:
    return 1

def b() -> Coroutine[int, Any, Any]:
    return a()

Hey,
Thanks for your input! I'm also now looking towards generics but with slightly different approach. I'll post updates in this issue.

Used Gemini to see if it can come up with a solution for this. It actually suggested this which I think is quite nice:
from typing import *
from abc import ABC, abstractmethod

S = TypeVar('S')

# Helper type to represent either a value or a coroutine that produces a value
MaybeAwaitable = Union[S, Awaitable[S]]

class Parent(ABC):
    @abstractmethod
    def set(self) -> MaybeAwaitable[int]:
        pass

    @abstractmethod
    def get_value(self) -> MaybeAwaitable[str]:
        pass

    # ... other methods with different return types ...

class SyncChild(Parent):
    def set(self) -> int:
        return 1

    def get_value(self) -> str:
        return "sync_value"

    # ... other synchronous methods ...

class AsyncChild(Parent):
    async def set(self) -> int:
        return 1

    async def get_value(self) -> str:
        return "async_value"

    # ... other asynchronous methods ...

This code keeps mypy happy

It actually resembles quite a bit what had already been in the code base, namely ResponceT is Union[Awaitable[Any], Any].
What I'd do is I'd make it less generic. Returning Any is not optimal.

there's also a package called unasync, which might be of interest?
from a glance it looks like it can ease up the work here


MNT: Re-rendered with conda-build 3.18.9, conda-smithy 3.4.2, and con…

…da-forge-pinning 2019.08.27

Checklist

[ ] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

license_file entry is missing, but is expected.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


⚠ ClamAV has degraded performance

In 983824d, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 86 ms

Resolved: ClamAV performance has improved in fe04bd7.


FAILURE:  Build failed with an exception.

Getting the following error when including the fingerprint-auth plugin.

/officeWork/Mac/ionic app tirals/test/platforms/android/src/com/cordova/plugin/android/fingerprintauth/FingerprintAuth.java:399: error: method does not override or implement a method from a supertype

    @Override
    ^

/officeWork/Mac/ionic app tirals/test/platforms/android/src/com/cordova/plugin/android/fingerprintauth/FingerprintAuth.java:402: error: cannot find symbol

        super.onRequestPermissionResult(requestCode, permissions, grantResults);
             ^

  symbol: method onRequestPermissionResult(int,String[],int[])Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

2 errors

FAILED

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':compileDebugJava'.

> Compilation failed; see the compiler error output for details.

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.15 secs

/officeWork/Mac/ionic app tirals/test/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                    ^
Error code 1 for command: /officeWork/Mac/ionic app tirals/test/platforms/android/gradlew with args: cdvBuildDebug,-b,/officeWork/Mac/ionic app tirals/test/platforms/android/build.gradle,-Dorg.gradle.daemon=true

Error: /officeWork/Mac/ionic app tirals/test/platforms/android/cordova/build: Command failed with exit code 1

ionic info gives the following details

Your system information:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.12
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.46
ios-deploy version: 1.7.0
ios-sim version: 4.1.1
OS: macOS Sierra
Node Version: v4.1.2
Xcode version: Xcode 7.3.1 Build version 7D1014

sudo cordova --version
6.4.0
also made sure that android SDK is updated
android update sdk --no-ui --all --filter "extra-android-m2repository"

Fixed it after updating android SDK and accepting licence.
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository.


add_middleware causes exceptions to not be raised/handled silently

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
import uvicorn
from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware

app = FastAPI()

@app.get("/info")
def info():
    # raises Exception as expected, the traceback is seen in console
    raise Exception

private_api = FastAPI()

@private_api.get("/info")
def info():
    # exception is handled silently, no traceback is seen in console
    raise Exception

app.mount("/private", private_api)

class Middleware(BaseHTTPMiddleware):

    async def dispatch(self, request, call_next):
        return await call_next(request)

app.add_middleware(Middleware)  # when this is removed, the exceptions are raised for all routes

if __name__ == '__main__':
    uvicorn.run(app, port=8000)

Description
When exceptions are raised on a subapp, the exceptions are not propagated all the way to see in console
In the example code
/info raises an exception and the full stacktrace is seen in console
/private/info does not raise the exception and only INFO:     <IP_ADDRESS>:56308 - "GET /info HTTP/1.1" 500 Internal Server Error is shown in console
Operating System
Windows
Operating System Details
No response
FastAPI Version
0.74.0
Python Version
3.8.10
Additional Context
uvicorn==0.17.6

Upgrading to 0.79.0 the issue goes away, not sure if this was fixed intentionally (I couldn't find a closed issue) or inadvertently in which case might still be an issue elsewhere

What's the behavior if you add the Middleware to both of your apps? 🤔

Upgrading to 0.79.0 the issue goes away, not sure if this was fixed intentionally (I couldn't find a closed issue) or inadvertently in which case might still be an issue elsewhere

It was solved on Starlette.

It was solved on Starlette.
Thanks @Kludex - was very confused!

Issue is back see my versions below, should I open an issue on starlette?
fastapi==0.88.0
starlette==0.23.0
uvicorn==0.20.0

You can open a discussion on starlette.

Opened discussion in starlette


Single quest support

Hi,
any plans to add a single quest support (for example gardening, probably mining, etc)?
Thanks for this nice repo

For reference, the startQuestWithData abi appears to be:
startQuestWithData(uint256[],address,uint8,(uint256,uint256,uint256,uint256,int256,int256,string,string,address,address,address,address))

or with params as best as I can figure:
startQuestWithData(
  uint256[] heroIds,
  address questId, // 0xe4154b6e5d240507f9699c730a496790a722df19 for gardening
  uint8, // ??? but seems to be 1, maybe version
  (
    uint256 poolId,
    uint256, // ??? always 0
    uint256, // ??? always 0
    uint256, // ??? always 0
    int256,  // ??? always 0
    int256,  // ??? always 0
    string,  // ??? always ""
    string,  // ??? always ""
    address, // ??? always 0x
    address, // ??? always 0x
    address, // ??? always 0x
    address  // ??? always 0x
  )
)

The pool IDs I've figured out are:
0 - JEWEL-ONE
3 - JEWEL-1ETH
6 - JEWEL-1USDC
7 - JEWEL-1BTC
8 - JEWEL-UST

what do you mean by that? there is an API for interacting with the quests

Gardening and miming now available


SFTP ListFiles - Renci.SshNet library needs to be updated to the newest version.

Current version of Renci.SshNet library needs to be updated to the newest version.

This task also needs reconstruction to be similar to the other SFTP tasks.


Implement WebAPI endpoints

API Documentation - View in Swagger
measurements

[x] GET /stations/{station_id}/measurements/{measurement_id}
Find a single measurement of a station.
[x] GET /stations/{station_id}/measurements/latest
Find the latest measurement of a station.
[x] GET /stations/{station_id}/measurements/first
Find the first measurement of a station.
[x] GET /stations/{station_id}/measurements
Find multiple measurements of a station in a given time range or relative to a measurement.
[ ] POST /stations/measurements
Add new measurements to server
Note: I didn't find in the API documentation how the api key will be sent to the server. noratanX let me know, that it will be in the api_key HTTP header.

pictures

[ ] GET /stations/{station_id}/pictures/{picture_id}
Find picture by id.
[ ] GET /stations/{station_id}/pictures/latest
Find last picture.
[ ] GET /stations/{station_id}/pictures
Find picture relative to other picture.
[ ] GET /stations/pictures
Add picture to server.

Note: In order to implement these endpoints I need to know what kind of image format can the Android front-end use. I suggest to transmit the images as base64 encoded strings in the requests' body. @szokolimatyas
stations

[x] GET /stations/{station_id}/api
Returns part of the API key for a station.
[ ] GET /stations/{station_id}/ping
Pings the weather station.
[x] GET /stations/pictures/storage
Returns information about the storage server for the pictures.
[x] GET /stations/measurements/storage
Returns information about the storage server for the measurements.
[x] PUT /stations/status/{status_code}
Update the status of the weather station.

user

[x] GET /user
Gets data about the logged in user.
[x] GET /user/login
Logs user into the system
[x] GET /user/logout
Logs out current logged in user.
[x] GET /user/stations
Returns an array of stations registered with the user.
[x] POST /user/stations/{station_name}
Add new stations to the user.
[x] PUT /user/stations/{station_id}
Generate new API key for a station.
[x] POST /user/register
Add new user.
[x] PUT /user/{username}
Update user data.
[ ] DELETE /user/{username}
Delete user.
Note: this will be one of the last endpoint I implement. I need to know what to delete to remove all the data created by a user.

Also I have been having problems with using prism on my local machine and reaching it from the android env. The mock server seems to be reachable though.

The content-type is an octet stream, and the content itself is bytes read straight from a jpeg image.
Some code:
            val bytes = file.readBytes()
            val body =
                bytes.toRequestBody("application/octet-stream".toMediaTypeOrNull(), 0, bytes.size)
            val res = picturesService.addPicture("application/octet-stream", body)

The Retrofit API:
    @POST("stations/pictures/")
    suspend fun addPicture(@Header("Content-Type") mime: String,
                           @Body body: RequestBody):
            Response<ApiResponseEntity>

Example request inspected:


[QUESTION}Data from the closure

Prerequisites

[x] Able to reproduce the behaviour outside of your code, the problem is isolated to Laravel Excel.
[x] Checked that your issue isn't already filed.
[x] Checked if no PR was submitted that fixes this problem.

Versions

PHP version: 7.2

Laravel version: 5.8
Nova version: 2.0
Package version: 1.1

Description
The
...Text::make('Estimate Revenue', function() { return $this->slips->price; })->sortable()...

below doesn't work with this plugin.
Error: message: "Trying to get property of non-object"
  public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            // I'm 100% sure slips and price is defined, it appears on nova tables
            Text::make('Estimate Revenue', function() { return $this->slips->price; })->sortable(),
...

Steps to Reproduce
Simply add a closure like the one above.
Expected behavior:
Just export.
Actual behavior:
Error: message: "Trying to get property of non-object"
Additional Information
Prove that $this->slips->price; is defined: https://i.imgur.com/FsOr1dH.png

Can you show us the full stack trace of "Trying to get property of non-object" so we can locate the issue.


How to infer images after trainig a  postprocessor?

Hello, I use pipelines/postprocessing/pairwise_postprocessing/postprocessor_train.yaml to train my model. Then how to infer images using this trained postprocessor model ? Can you provide some examples?

Need help ~

Hey, @PapaMadeleine2022 !
There is no stand-alone example yet, but I will prepare one for you soon.

@PapaMadeleine2022
I've added an example for you. It will be here in a few minutes, right after the new docs will be built.
If you are interested in customising your postprocessing, I can recommend you take a loot at this repo. It's a good example of customising OML's logic of postprocessing, in particular, it implements multi-query postprocessing in two ways: simple frequency-based heuristic and using a neural network.

@PapaMadeleine2022
I've added an example for you. It will be here in a few minutes, right after the new docs will be built.
If you are interested in customising your postprocessing, I can recommend you take a loot at this repo. It's a good example of customising OML's logic of postprocessing, in particular, it implements multi-query postprocessing in two ways: simple frequency-based heuristic and using a neural network.

Thanks very much~


Assorted updates

This PR will:

Normalize line endings via gitattributes file
Add a requirements section to README
Cache the last result as the current race (useful for random bots)
Add all in zone attack

you should import PlanZoneAttackAllIn to tactics/init.py

Done!

I agree that the repo should probably contain a gitattributes file to normalize line endings, but it makes seeing the changes quite difficult for this PR.
I had to copy-paste all the "deleted" and "added" rows to Kdiff3 to see which lines have actually changed.
I wonder what's the best approach here to have clean diffs and hopefully preserve git blame/annotate history.


[BUG] - '404- page not found' on doc/getting-started/install.md Where is the Cardano-node getting started documentation?

Internal/External
External   I am not a staff member
Area
Other   Any other topic (Delegation, Ranking, ...).
Summary
I'm trying to access the documentation at this address - https://github.com/input-output-hk/cardano-node/blob/master/doc/getting-started/install.md/
which is referenced here: https://plutuspbl.io/modules/102/1021
and here: https://www.youtube.com/watch?v=csqvbw3F_BU&list=PLNEK_Ejlx3x2ut-Pq-hi0NFVsgKB3EddR&index=1
Where is the Cardano-node getting started documentation?
Steps to reproduce
Steps to reproduce the behavior:
This is a simple 404 error in the documentation .  Follow the links above to see the error
Expected behavior
I expect to see the documentation referenced in the above links
System info (please complete the following information):
NA
Screenshots and attachments

Additional context
I'm not sure if this is the write place to bring this up

I found the documentation here: https://developers.cardano.org/docs/get-started/installing-cardano-node/
@Newman5> yep that's the correct one :+1:


Start some high level documentation

We have a few design patterns and things now
Whilst they're subject to change I think we would benefit by starting some high-level documentation

https://multi-user-domain.github.io/docs/01-overview :)


Oct release extension gallery update

Updating

[x] Import
[x] ML
[x] Schema Compare
[x] Kusto - will be updated by @gupta1
[x] SQL Assessment
[x] Database Projects
[x] Azure Arc
[x] azdata

FYI - I'll be updating the arc and azdata extensions as well. So if you could hold off merging this in and just use it as a single "release update PR" that we merge in once we release that'd be best I think

@Charles-Gagnon That's the plan, and that's why I added you to the review

renamed the PR to make it more clear :)

@abist FYI the datavirt update isn't needed - I had already updated it on the 1st when we pulled in the Prose fix

Ready to be merged @Charles-Gagnon @alanrenmsft @kburtram

go ahead! thanks

@alanrenmsft I can't that's why I tagged lol


Use underscores for flag keys

Fix issue where viper wasn't using underscores when mapping flags to config options.

/retest

/retest

/retest

/retest


[Endorser Protocol] Set expiry_time when submitting transaction to endorser

Don't set expiry_time when creating a new transaction (in the schema and cred def routes.py files) - rather set this parameter when the transaction is getting sent to the endorser for endorsement.

Hi @ianco, Do we have to set this parameter by taking input from the agent, or by getting system date and setting the expiry to one or two days more from the system date?

I suggest this is a new parameter for the api, and the caller would need to provide it


Youtube-dl BUG with MPV Playing at 60 fps in config.

Youtube-dl version 2019.03.18
Arch
mpv 0.29.1
When using the flag [fps<=?60] in ytdl-format=bestvideo[height<=?1080][fps<=?60]+bestaudio/best in your mpv config, videos will cease to play at 60fps and will go to 30 for some odd reason.
As you can see, it's playing at the highest quality, like i wanted, but 30 and not 60?
https://0x0.st/zZaw.txt
More info here, https://github.com/mpv-player/mpv/issues/6616
Thanks.

You are getting exactly what you request: bestvideo format with height under 1080 and fps under 60 that is format 136. If you want 60 fps you must specify 60 fps exactly not <=.

Well how do I specify it so it's 60?


Update sbt-scoverage to 1.9.1

Updates org.scoverage:sbt-scoverage from 1.9.0 to 1.9.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scoverage", artifactId = "sbt-scoverage" } ]

labels: sbt-plugin-update, semver-patch

Codecov Report

Merging #210 (a6bf95c) into master (2dabaa2) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #210   +/-   ##
=======================================
  Coverage   41.66%   41.66%
=======================================
  Files           1        1
  Lines          36       36
  Branches        1        1
=======================================
  Hits           15       15
  Misses         21       21

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2dabaa2...a6bf95c. Read the comment docs.


Fix securityLevel documentation

Instead of boolean values, only strict and loose should be
used.

👍

Pull Request Test Coverage Report for Build 855

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 53.22%

Totals

Change from base Build 854:
0.0%

Covered Lines:
2393

Relevant Lines:
4452

💛  - Coveralls


Forcing increasing progress on assets across retries

No longer necessary to be more transparent about the retry logic, moving to icebox


Adding update on assistive text.

Per customer request adding a note here referencing company branding. Per current product logic for assistive text; If there is customized text available for the tenant (which is not currently supported), we show the customized assistive text in the password change page. If there isn't customized text available for the tenant, we check if the password type for the user if on-perm or not -If the user's password is "on-perm" or "on-perm & on cloud", we don't show any assistive text. Else we show the assistive text.
At this time we are not supporting configuring assistive text however, it is in the roadmap. Several customers have requested this via support tickets and the feature is being tracked in a work item. Last customer requested it documented here. Resubmitting this after making edits.

@willbrim : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @ajburnle created another PR to replace the other one that was closed. I added the edits you recommended here.

If the update is approved, the PR review team will move this commit to the private repo and create an image file from a screenshot of the new referenced image. Repo admins stipulate in internally published quality criteria that images that are referenced from MD files must be added to the repository and not hosted elsewhere. Thanks, folks.

@willbrim I made an update of the text in the comment. Please update. Thanks!

thanks for the update I will update that now

@willbrim : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@ktoliver forgive my inexperience here, would it be easier for the image to be copied after review?

@ktoliver Kristine Toliver (Aquent LLC) Vendor forgive my inexperience here, would it be easier for the image to be copied after review?

Hi @willbrim Merging a link to an image that's hosted outside the repo is a blocking issue (I can send you a link to the PR quality criteria in the internal contributor guide); the PR can't be merged with the link-as-image reference.

@willbrim I can easily move the commit to the private repo and fix up the image; your association with the commit will remain intact.

I guess I could create a PR that has the image, and then merge it right after merging this one in this repo. But that's a "hack," and there's a set process in place for moving an update to the private repo...

@willbrim I'll tell you what--why don't you remove the link to the image in this PR and I'll create a PR of my own that has the image and the image reference. After author sign-off, I can merge them consecutively.

(A downside of creating a pull request through the edit function in an MD file is that you can't attach images to the pull request. You can submit images if you fork and clone the repo and work in GitBash, VS Code, etc.)

Creating a second PR would involve resolving a merge conflict. I've moved the commit to a new PR in the private repo, where @ajburnle can review before merging. I'll close this PR. The new PR is https://github.com/MicrosoftDocs/azure-docs-pr/pull/158757 (internal link). Thanks.


Add ownership getters + setters for Array-type coefficients

This PR adds GetOwnership() and SetOwnership() methods for VectorArrayCoefficient, MatrixArrayCoefficient, and MatrixArrayVectorCoefficient, as there is currently no straightforward way to take/give ownership of a coefficient to objects of these types after calling Set()

PR
Author
Editor
Reviewers
Assignment
Approval
Merge

#4469
@j-signorelli
@tzanio
@termi-official + @mlstowell
8/25/24
⌛due 9/8/24
⌛due 9/15/24

PR Checklist

[ ] Code builds.
[ ] Code passes make style.
[ ] Update CHANGELOG:

[ ] Is this a new feature users need to be aware of? New or updated example or miniapp?
[ ] Does it make sense to create a new section in the CHANGELOG to group with other related features?

[ ] Update INSTALL:

[ ] Had a new optional library been added? If so, what range of versions of this library are required? (Make sure the external library is compatible with our BSD license, e.g. it is not licensed under GPL!)
[ ] Have the version ranges for any required or optional libraries changed?
[ ] Does make or cmake have a new target?
[ ] Did the requirements or the installation process change? (rare)

[ ] Update continuous integration server configurations if necessary (e.g. with new version requirements for each of MFEM's dependencies)

[ ] .github
[ ] .appveyor.yml

[ ] Update .gitignore:

[ ] Check if make distclean; git status shows any files that were generated from the source by the project (not an IDE) but we don't want to track in the repository.
[ ] Add new patterns (just for the new files above) and re-run the above test.

[ ] New examples:

[ ] All sample runs at the top of the example source file work.
[ ] Update examples/makefile:

[ ] Add the example code to the appropriate SEQ_EXAMPLES and PAR_EXAMPLES variables.
[ ] Add any files generated by it to the clean target.
[ ] Add the example binary and any files generated by it to the top-level .gitignore file.

[ ] Update examples/CMakeLists.txt:

[ ] Add the example code to the ALL_EXE_SRCS variable.
[ ] Make sure THIS_TEST_OPTIONS is set correctly for the new example.

[ ] List the new example in doc/CodeDocumentation.dox.
[ ] If new examples directory (e.g.examples/pumi), list it in doc/CodeDocumentation.conf.in
[ ] Companion pull request for documentation in mfem/web repo:

[ ] Update or add example-specific documentation, see e.g. the src/examples.md.
[ ] Add the description, labels and screenshots in src/examples.md and src/img.
[ ] In examples.md, list the example under the appropriate categories, add new categories if necessary.
[ ] Add a short description of the example in the "Extensive Examples" section of features.md.

[ ] New miniapps:

[ ] All sample runs at the top of the miniapp source file work.
[ ] Update top-level makefile and makefile in corresponding miniapp directory.
[ ] Add the miniapp binary and any files generated by it to the top-level .gitignore file.
[ ] Update CMake build system:

[ ] Update the CMakeLists.txt file in the miniapps directory, if the new miniapp is in a new directory.
[ ] Add/update the CMakeLists.txt file in the new miniapp directory.
[ ] Consider adding a new test for the new miniapp.

[ ] List the new miniapp in doc/CodeDocumentation.dox
[ ] If new miniapps directory (e.g.miniapps/nurbs), add it to MINIAPP_SUBDIRS in the makefile.
[ ] If new miniapps directory (e.g.miniapps/nurbs), list it in doc/CodeDocumentation.conf.in
[ ] Companion pull request for documentation in mfem/web repo:

[ ] Update or add miniapp-specific documentation, see e.g. the src/meshing.md and src/electromagnetics.md files.
[ ] Add the description, labels and screenshots in src/examples.md and src/img.
[ ] The miniapps go at the end of the page, and are usually listed only under a specific "Application (PDE)" category.
[ ] Add a short description of the miniapp in the "Extensive Examples" section of features.md.

[ ] New capability:

[ ] All new public, protected, and private classes, methods, data members, and functions have full Doxygen-style documentation in source comments. Documentation should include descriptions of member data, function arguments and return values, template parameters, and prerequisites for calling new functions.
[ ] Pointer arguments and return values must specify whether ownership is being transferred or lent with the call.
[ ] Any new functions should include descriptions of their intended use e.g. for internal use only, user-facing, etc., along with references to example code whenever possible/appropriate.
[ ] Consider adding new sample runs in existing examples to highlight the new capability.
[ ] Consider saving cool simulation pictures with the new capability in the Confluence gallery (LLNL only) or submitting them, via pull request, to the gallery section of the mfem/web repo.
[ ] If this is a major new feature, consider mentioning it in the short summary inside README (rare).
[ ] List major new classes in doc/CodeDocumentation.dox (rare).

[ ] Update this checklist, if the new pull request affects it.
[ ] Run make unittest to make sure all unit tests pass.
[ ] Run the tests in tests/scripts.
[ ] (LLNL only) After merging:

[ ] Update internal tests to include the new features.

This PR is now under review (see the table in the PR description). To help with the review process, please do not force push to the branch.

Hi @termi-official,
Thanks for the feedback, good points. Here are my thoughts: beyond a use-case for my own codebase I'm writing with MFEM where I want to take ownership dynamically (I can elaborate on this if you think it'd be useful to know), I feel that it's better to give MFEM users more functionality / capability to manage the memory on their own if they choose to rather than limit the functionality under the premise that the users will be unable to do so.
Additionally but maybe more convincing is that the ownCoeff arrays are all private (as it seems most member variables of coefficients are set to be), so any derived classes of these types don't have the ability to know nor change ownership after the fact - this PR allows this functionality too.
Punchline is that, beyond wanting the added control over the memory for my own case, I think just in general allowing users to have more control over the memory of these objects and of derived types would be a nice feature.

Just want to ping @termi-official @mlstowell about this as a reminder -- curious to hear thoughts and continue the discussion on whether this is a worthwhile PR or not. Right now I have just manually copied VectorArrayCoefficient into my own code with this above implementation.
Thanks!

ping: @termi-official

Will come back to this next week!

Merged in next for testing...