Ciao @pfaffman, la modifica al post originale ha un + errato nella riga to:, che interrompe l’espressione regolare. Dovrebbe essere rimosso.
Separately, the following paragraph needs to be edited as it no longer makes sense:
Ci sono due pattern che devono essere sostituiti, uno che termina con --keylength e un altro che termina con --fullchainpath (nel file effettivo, il tuo dominio originale precede ciascuno di questi switch). Inserisci il tuo (sotto)dominio (e qualsiasi dominio aggiuntivo preceduto da -d ) e quindi aggiungi quanto segue alla sezione hooks del tuo app.yml (verso la fine del file):
Suggerisco:
Usa domain1 e domain2 in questo post per generare il codice di cui avrai bisogno. domain1 è il tuo dominio originale e domain2 è il dominio aggiuntivo che vuoi aggiungere. Aggiungi il blocco after_ssl: risultante alla sezione hooks del tuo app.yml ed esegui un launcher rebuild app.
Questa è una modifica al modo in cui Discourse gestisce LetsEncrypt o una modifica a LetsEncrypt stesso?
Ho un server che è attualmente interessato da questo problema. Per ora, la mia soluzione è commentare quella parte di app.yml, ma ritengo che in futuro avremo bisogno di un modo per aggiungere questi certificati aggiuntivi alla configurazione.
Discourse ha spostato quello in un altro file. Al momento è in lavorazione. Cercherò di dare un’occhiata nei prossimi giorni per vedere cosa è necessario per rendere possibile il supporto di più sottodomini.
Errno::ENOENT: Nessun file o directory di questo tipo @ rb_sysopen - /usr/local/bin/letsencrypt
Posizione del fallimento: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
Sostituzione fallita con i parametri {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz/”, “to”=>“-d spokes.nz -d www.spokes.nz”}
Bootstrap fallito con codice di uscita 1
** BOOTSTRAP FALLITO ** scorri verso l’alto e cerca messaggi di errore precedenti, potrebbero essercene più di uno.
Sto ipotizzando, ma mi chiedo se l’errore che stai riscontrando possa essere correlato a uno spazio mancante prima della barra finale e delle virgolette finali nelle rispettive righe della stanza suggerita nel tuo file app.yml?
Inferisco dal messaggio di errore che le tue rispettive righe siano (verbatim)
from: /-d spokes.nz/
to: “-d spokes.nz -d www.spokes.nz”
Lo dico perché, nel mio caso, le righe sono
from: /-d nzarchitecture.net.nz /
to: "-d nzarchitecture.net.nz -d www.nzarchitecture.net.nz "
E con gli spazi appena prima della fine di ogni riga, come mostrato, ora posso ricompilare Discourse senza generare quell’errore. (se guardi attentamente vedrai che la stanza aggiornata di @pfaffman postata all’inizio di questo thread mostrava quegli spazi extra).
Non ho alcun file nella directory usr/local/bin/ (come notato nel tuo messaggio di errore), il che mi ha fatto sospettare che la mancanza di quel file letsencrypt non sia ciò che scatena l’errore.
Detto questo, per me, mentre Discourse funziona bene sul suo URL nzarchitecture.net.nz, sfortunatamente ottengo ancora un errore di certificato se digito www.nzarchitecture.net.nz in un browser - se ciò sia dovuto alla mancanza di quel file, non lo so.
Sto solo prendendo nota che sto attualmente tentando di integrare questo nelle variabili d’ambiente per gestirlo direttamente in discourse_docker, qualcosa come un elenco separato da virgole di alias di hostname. Sembra un caso d’uso abbastanza comune da gestire direttamente.
Renderà più facile la configurazione per questo caso, così nessuno dovrà apportare modifiche ai propri app.ymls
Il mio piano attuale è con DISCOURSE_HOSTNAMEwww.domain.com
Consenti variabili d’ambiente come: DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com estrarrebbe il certificato, valido per tutti gli hostname.
(Mentre ci sono, anche i rinnovi automatici di Let’s Encrypt non sembrano funzionare correttamente, quindi li sto sistemando anche quelli)
Me lo sono perso! Ho fatto come hai suggerito, ma ancora fallimento del bootstrap:
FAILED
Errno::ENOENT: Nessun file o directory di questo tipo @ rb_sysopen - /usr/local/bin/letsencrypt
Posizione del fallimento: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
replace fallito con i parametri {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz /”, “to”=>"-d spokes.nz -d www.spokes.nz "}
bootstrap fallito con codice di uscita 1
** FAILED TO BOOTSTRAP ** si prega di scorrere verso l’alto e cercare messaggi di errore precedenti, potrebbero essercene più di uno.
Probabilmente non è il problema principale, ma nel mio tentativo di risolvere, ho anche aggiornato la versione di Docker in esecuzione su Digital Ocean da 20.0.4 (credo) a 28.3.3 - forse questo ha aiutato, almeno con questo errore. Se non altro, ha eliminato gli avvisi di “deprecato” di Docker che ricevevo all’inizio del processo di ricostruzione.
Ciao a tutti, solo per aggiornarvi, i domini multipli sono ora uniti - nell’ultima versione di discourse_docker, è ora possibile includere i template ssl e letsencrypt e impostare le variabili d’ambiente del tipo DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com per configurare hostname alternativi.
Il tuo sito richiederà inoltre gli hostname configurati con la richiesta del certificato senza ulteriori modifiche alla configurazione.
[quote=“featheredtoast, post:172, topic:56685”]ora puoi includere i template ssl e letsencrypt e impostare le variabili d’ambiente del tipo DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com per impostare hostname alternativi.
[/quote]
Perdonate la mia ignoranza, ma è modificabile tramite un’impostazione del sito o è necessario modificare qualcosa in app.yml?
Se la prima, non sono riuscito a trovarla dopo l’aggiornamento all’ultima versione, e se la seconda, cosa dovrebbe essere modificato specificamente in app.yml?
Dovresti includere solo domini aggiuntivi che desideri che le persone possano collegare e che vengano reindirizzate al nome host effettivo del tuo sito.
Sarebbe ancora meglio se ci fosse un modo intelligente per Discourse di scrivere gli alias forniti dall’amministratore direttamente in app.yml al prossimo aggiornamento, o di lasciare le informazioni dove un’istruzione di app.yml possa leggerle.