Sto cercando di eseguire un’installazione pulita con l’app a un clic di DigitalOcean.
È la terza volta che la ricreo da zero e riscontro lo stesso problema.
Verificando il DNS, vedo che il mio dominio punta all’IP del droplet, ma Discourse non viene visualizzato sul mio dominio.
Ho eseguito discourse-doctor e si blocca/si sospende prima di mostrare le informazioni su “dominio servito/non servito”.
È stato rilasciato un aggiornamento che potrebbe aver introdotto questo comportamento?
@merefield Appena creato un nuovo droplet e avviato l’installazione come descritto nella guida ufficiale. Sto ancora riscontrando esattamente lo stesso problema.
Il problema è solitamente che non hai configurato correttamente il DNS o che le modifiche non si sono ancora propagate. Se condividi il tuo URL, qualcuno potrebbe verificare.
Spesso uso https://dnschecker.org/#A/example.com per controllare.
Tuttavia, se hai già provato più volte, è probabile che tu abbia esaurito il numero di tentativi consentiti da Let’s Encrypt per ricevere un certificato. Secondo me, questo è il tuo problema attuale. Ne sono circa il 90% sicuro. Puoi “barare” seguendo questa guida: Set up Let’s Encrypt with multiple domains / redirects - #53, ma si tratta di una configurazione più complessa e non avresti potuto risolvere quella semplice. La soluzione migliore è probabilmente aspettare qualche giorno e riprovare.
Non è il problema. /shared/ssl è il percorso all’interno del container, mentre shared/standalone/ssl è il percorso all’esterno del container.
@pfaffman Sì, sembra legittimo! Tuttavia, non riesco ancora a crearlo, ma posso farlo su un altro dominio. Dato che la ricerca DNS mostra che sono connesso al server corretto e così via, suppongo che il problema sia quello che hai descritto. Aspetterò ancora qualche giorno e riproverò.
Grazie
@pfaffman Puoi aiutarmi con il cheating? Ho dato un’occhiata alla configurazione con più domini, ma non sono sicuro di cosa intendessi. Vuoi dire usando in qualche modo l’hook after_ssl?
Dovresti semplicemente aggiungere qualsiasi altro dominio. Quindi, se il tuo forum è forum.example.com, dovresti aggiungere un record DNS per cheat.example.com che punta al tuo server e aggiungerlo come descritto lì. Dato che si tratterebbe di una richiesta di certificato diversa, ti permetterebbe di richiederlo.
Oppure può aggiungere un dominio o un sottodominio usando questo. Un modo semplice per aggirare il problema quando si è raggiunto il limite di richieste. Ma per evitare di raggiungere i limiti di velocità, è sempre meglio utilizzare l’ambiente di test --dryrun. (Nota che Let’s Encrypt sta valutando la possibilità di rinominare --dryrun in qualcosa di più facile da riconoscere per i non anglofoni, come --test o --testrun. Molto probabilmente ciò non avverrà prima di gennaio 2021 o successivamente. Stanno anche lavorando a una riscrittura completa delle loro guide.
Il metodo consigliato per aggiungere un nuovo dominio a un certificato esistente è infatti riutilizzare il comando originale, aggiungere il nuovo dominio con un’altra opzione -d e aggiungere --expand per indicare a certbot di non creare una nuova lineage (che comporterebbe una nuova sottodirectory in /etc/letsencrypt/live).
Il problema qui è che non sai che si tratta di un test fino a quando non è troppo tardi. Inoltre, non è chiaro nemmeno per me come configurare Discourse per recuperare quei certificati in modalità test.
È esattamente ciò che stavo cercando di comunicare.
Questa è una delle ragioni per cui loro (presso Let’s Encrypt) stanno riscrivendo le loro guide… per renderle più chiare. Una volta configurato per ottenere un certificato di prova (finto) utilizzando l’ambiente di test, si può eseguire Certbot in modalità produzione e ottenere la propria CA. Dopo di ciò, Discourse può essere installato e dovrebbe recuperare la nuova CA (ampliata).
Non è questo. Il punto è che capire come aggiungere una sezione a un app.yml per inserire quell’opzione—per quanto possa sembrare ovvia—è circa 3 volte (o forse 10 volte) più difficile rispetto all’installazione di Discourse. Dovresti modificare app.yml, aggiungere una cosa complicata e assicurarti che tutti gli spazi siano perfettamente allineati? Meglio aspettare una settimana o scegliere un nuovo nome.
@pfaffman Ho scelto un nuovo nome come descritto. Un problema era che cheat.example.com dovrebbe essere un record CNAME invece di un record A.
Tuttavia, non funziona ancora. Gli darò un po’ più di tempo.
MODIFICA: Per riferimento, ecco il mio app.yml:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Decommenta queste due righe se desideri aggiungere Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Imposta db_shared_buffers a un massimo del 25% della memoria totale.
## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
db_shared_buffers: "256MB"
## può migliorare le prestazioni di ordinamento, ma aumenta l'utilizzo della memoria per connessione
#db_work_mem: "40MB"
## Quale revisione Git dovrebbe utilizzare questo container? (predefinito: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
# DISCOURSE_RELATIVE_URL_ROOT: /forum
## Quante richieste web contemporanee sono supportate? Dipende dalla memoria e dai core della CPU.
## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
UNICORN_WORKERS: 4
## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
## Obbligatorio. Discourse non funzionerà con un indirizzo IP nudo.
DISCOURSE_HOSTNAME: cheat.example.com
## Decommenta se vuoi che il container venga avviato con lo stesso
## nome host (opzione -h) specificato sopra (predefinito "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Elenco di email separate da virgola che verranno rese amministratori e sviluppatori
## al primo esempio di registrazione 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'
## TODO: Il server di posta SMTP utilizzato per validare nuovi account e inviare notifiche
## Indirizzo SMTP, nome utente e password sono obbligatori
## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
DISCOURSE_SMTP_ADDRESS: smtpout.secureserver.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: some@email.com
DISCOURSE_SMTP_PASSWORD: "apassword"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, predefinito true)
## Se hai aggiunto il template Lets Encrypt, decommenta qui sotto per ottenere un certificato SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## L'indirizzo CDN http o https per questa istanza di Discourse (configurato per il recupero)
## vedi https://meta.discourse.org/t/14857 per i dettagli
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Il container Docker è senza stato; tutti i dati sono archiviati in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d cheat.example.com --expand"
Alla fine è passata una settimana e ho potuto utilizzare di nuovo il mio dominio. Probabilmente avevo commesso un errore nella configurazione per farlo funzionare con il sottodominio, perché sono quasi certo che, leggendo anche su Let’s Encrypt, questa sia la soluzione.
Grazie ancora a @pfaffman e a @JimPas per l’aiuto e per le risposte informative!