Sto arrivando a un punto di disperazione, perché provare a far risolvere questo problema al Bot di Discourse o a Claude sembra impossibile. Non riesco davvero a spiegare il problema, perché non sono così informato, e credo che sia proprio questo a farmi più male.
Proverò a spiegare cosa è successo, dal mio punto di vista.
Quando stavo passando da un singolo contenitore a due contenitori, il file in samples/ usava web-only e, per errore, l’ho lasciato così invece di usare web_only.
Poi, a causa di questo (credo), le mie immagini non venivano caricate, perché una “cosa” si aspettava che puntasse a web_only, ma era impostata su web-only. Ho apportato alcune modifiche e le immagini sono state riparate. Il problema ora sono i certificati LetsEncrypt.
Ho chiesto al bot di aiutarmi a risolverlo; mi ha detto di aspettare il giorno successivo, perché il problema era il limite di frequenza (rate-limit) dei certificati. Il problema avrebbe dovuto risolversi. Non è successo. Poi l’ho chiesto di nuovo, poi ho chiesto a Claude, poi di nuovo a Claude… e da una settimana siamo in questo “aspetta fino a domani alle X ore e si risolverà”. Non si risolve mai, entrambi dicono “oh, mi dispiace, non avrei dovuto dare per scontato che si sarebbe risolto, proviamo questo invece, perché ora si risolverà davvero”. Non succede mai.
Il sito web stesso è attivo e funzionante, ma sento che ogni volta che voglio ricostruire, succederà qualcosa, e onestamente non voglio fare affidamento su cerotti tutto il tempo.
Claude mi ha detto di aggiungere qualcosa agli hook in web_only.yml, ma dato che nulla di simile è menzionato nelle istruzioni fornite qui sul forum, mi aspettavo una soluzione diversa, come… risolvere il problema reale.
Qualcuno può per favore aiutarmi a capire qual è il problema e dove le cose si rompono? Lo apprezzerei davvero, perché a questo punto è esaurente. Non il lavoro, ma il non capire cosa sta succedendo e perché “aspetta fino a domani” non sembra mai risolvere nulla.
Grazie!
Ho chiesto a Claude di spiegare qual sembra essere il problema, forse aiuta? Ecco cosa ha detto:
Titolo: Setup a due contenitori: cartella certificati ECC mancante dopo la separazione, loop --force che colpisce il limite di frequenza ad ogni avvio
Setup: Due contenitori (data + web_only), migrati da standalone. Template: web, ratelimited, ssl, letsencrypt, cloudflare. Nome host alltiago.com, nessun alias.
Sintomo: Ad ogni avvio di web_only viene raggiunto il limite di frequenza di Let’s Encrypt e nginx non riesce a servire, restituendo errori di connessione finché le righe ECC non vengono rimosse manualmente da /etc/nginx/conf.d/outlets/server/20-https.conf.
Cosa ho trovato:
/shared/letsencrypt/alltiago.com_ecc/ non esiste nel mio install. /shared/letsencrypt/alltiago.com/ (RSA) esiste e funziona bene, rinnovandosi normalmente.
In web.letsencrypt.ssl.template.yml:
cert_exists() {
[[ "$(cd ${LETSENCRYPT_DIR}/${DISCOURSE_HOSTNAME}$1 && openssl verify -CAfile <(openssl x509 -in ca.cer) fullchain.cer | grep "OK")" ]]
}
issue_cert "ec-256"
if ! cert_exists "_ecc"; then
issue_cert "ec-256" "--force"
fi
Poiché la directory è mancante, cert_exists "_ecc" fallisce ad ogni avvio, quindi --force viene eseguito e richiede un nuovo certificato ECC a prescindere da ciò che è su disco. Questo avviene tramite l’hook after_ssl che applica una patch a /etc/runit/1.d/install-ssl, quindi si esegue ad ogni avvio del contenitore, non solo durante il bootstrap.
Risultato: 429 too many certificates (5) already issued for this exact set of identifiers in the last 168h. Poi --installcert viene eseguito comunque contro la directory vuota e scrive un /shared/ssl/alltiago.com_ecc.cer inutilizzabile. nginx è configurato con entrambi i certificati, non riesce a caricare quello ECC e non servirà nulla.
Confermato funzionante: La validazione ACME HTTP-01 ha successo (testato tramite staging, certificato ECC emesso senza problemi contro letsencrypt_test, struttura della directory corretta creata). Il certificato RSA è stato rinnovato con successo oggi. Quindi questo non è un problema di DNS, firewall o validazione.
Domande:
- C’è un modo supportato per ricreare
alltiago.com_ecc/senza aspettare che scada il limite di frequenza? cert_existsche restituisce falso dovrebbe davvero attivare--forcepiuttosto che una normale emissione?--forcebypassa il controllo del “certificato valido esistente” e garantisce l’esaurimento del limite di frequenza quando la directory è assente.- C’è un modo documentato per eseguire solo RSA?
Due note fattuali affinché il thread non prenda una direzione sbagliata: la data di ripartenza è passata dal 27 agosto al 29 agosto perché il rinnovo RSA di oggi ha consumato uno slot nella finestra mobile di 168 ore. E la ragione per cui nessun altro riporta questo problema è che in un’installazione normale entrambe le directory vengono create al primo avvio e la branch --force non viene mai eseguita.