Installazione non funzionante!

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?

1 Mi Piace

L’installazione con un solo clic non è supportata.

Si prega di utilizzare il processo di installazione ufficiale, notevolmente semplice.

In caso di problemi, puoi segnalarli qui per ottenere assistenza.

6 Mi Piace

@merefield Appena creato un nuovo droplet e avviato l’installazione come descritto nella guida ufficiale. Sto ancora riscontrando esattamente lo stesso problema.

discourse-doctor si blocca

e non viene servito nulla sul mio dominio.

È una installazione completamente nuova con la procedura ufficiale. Non riesco a capire cosa possa star succedendo. Qualche indizio?

1 Mi Piace

@merefield Nei log dell’applicazione ./launcher logs app vedo:

nginx: [emerg] impossibile caricare il certificato "/shared/ssl/mydomainname.de.cer": PEM_read_bio_X509_AUX() fallito (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

però non sono sicuro di cosa significhi

1 Mi Piace

Quindi vedo che sta cercando di guardare in /shared/ssl, ma in realtà l’SSL si trova in shared/standalone/ssl. Come posso risolvere questo problema?

1 Mi Piace

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.

4 Mi Piace

@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 :metal:

2 Mi Piace

@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?

1 Mi Piace

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.

1 Mi Piace

@pfaffman Sto utilizzando Digital Ocean. Ho aggiunto cheat.example.com come record A, ma non viene accettato come dominio durante la configurazione.

(ATTENZIONE: La porta 443 del computer non risulta accessibile)

Ho seguito le istruzioni e ho ricostruito, ma continua a comparire “Il sito non è raggiungibile”. :thinking:

Per il resto della configurazione, ho semplicemente aggiunto

  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d cheat.example.com"

all’interno di hooks: nel mio file app.yml.

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. :slightly_smiling_face:


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).

3 Mi Piace

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.

1 Mi Piace

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).

:+1:

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.

2 Mi Piace

@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"
 
1 Mi Piace

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!

3 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.