Tenemos un sitio de wordpress en aws ec2 que se configuró para renovar automáticamente su certificado SSL a través de Let's Encrypt.
La renovación automática se detuvo recientemente y el certificado caducó desde entonces.
Intenté ejecutar docker exec {container_id} /app/force_renew pero recibí este error:
El servidor ACME devolvió un error: urn:acme:error:serverInternal :: El servidor experimentó un error interno :: ACMEv1 está en desuso y ya no puede obtener certificados desde este extremo. Utilice el punto final ACMEv2, es posible que deba actualizar su software de cliente ACME para hacerlo. Visite https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/27 para obtener más información.
Supuse que la jrcs/letsencrypt-nginx-proxy-companion se actualizó para manejar este cambio requerido en el cliente ACME, y que extraer la imagen y reiniciar el contenedor con la nueva imagen arreglaría la renovación automática.
Si esa es una suposición correcta, ¿cómo puedo extraer la última jrcs/letsencrypt-nginx-proxy-companion y reiniciar el contenedor sin alterar los volúmenes adjuntos a los servicios de wordpress o db ?
Si es una suposición incorrecta, ¿cómo soluciono la renovación automática del certificado?
version: '3.1' services: nginx-proxy: container_name: nginx-proxy image: jwilder/nginx-proxy:latest restart: always ports: - 80:80 - 443:443 volumes: - conf:/etc/nginx/conf.d - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html - dhparam:/etc/nginx/dhparam - certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro nginx-proxy-companion: image: jrcs/letsencrypt-nginx-proxy-companion:latest restart: always volumes: - conf:/etc/nginx/conf.d - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html - dhparam:/etc/nginx/dhparam - certs:/etc/nginx/certs:rw - /var/run/docker.sock:/var/run/docker.sock:ro depends_on: - nginx-proxy environment: DEFAULT_EMAIL: dev@mysite.com NGINX_PROXY_CONTAINER: nginx-proxy wordpress: image: wordpress restart: always environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: myuser WORDPRESS_DB_PASSWORD: mypass WORDPRESS_DB_NAME: mydb VIRTUAL_HOST: mysite.com LETSENCRYPT_HOST: mysite.com volumes: - ./wp-content:/var/www/html/wp-content db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: mydb MYSQL_USER: myuser MYSQL_PASSWORD: mypass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - ./mysql-data:/var/lib/mysql command: mysqld --sql-mode="" volumes: conf: vhost: html: dhparam: certs:Lo que sugeriría es hacer girar un nuevo conjunto de contenedores en un servidor diferente y copiar el contenido de los volúmenes actuales.
La actualización del contenedor nginx-proxy-companion no debería afectar al que tiene wordpress, pero debe asegurarse de que todo sea compatible.
Una vez que tenga todas las versiones nuevas en el nuevo servidor y verifique que funcionan como se espera, puede conservarlo y abandonar el anterior, o actualizar la imagen para el complemento en el servidor anterior.
PD: espero que la contraseña en el yaml pegado no sea la que está en producción
El documento tiene la opción de proporcionar URL, establecer la variable env como se sugiere.
La variable de entorno ACME_CA_URI se utiliza para establecer el punto final de la API de ACME desde el que se solicitarán los certificados del contenedor (el valor predeterminado es https://acme-v02.api.letsencrypt.org/directory ).