L'app Defaultish non ricompila

Ehi, ho configurato Discourse di default su una macchina Linux usando questa guida. È andato tutto super fluido e il sito è partito perfettamente.

Ho deciso di permettere agli utenti di connettersi tramite Facebook, quindi ho seguito le istruzioni di Facebook collegate dalla guida sopra (non posso linkarle di nuovo perché sembra che i nuovi utenti possano pubblicare solo 2 link). Alla fine non ha funzionato, ma il sito era ancora attivo e funzionante (non ricordo l’errore che ho ottenuto quando ho provato ad accedere tramite Facebook).

Mentre leggevo la documentazione di Facebook, ho visto qualcosa sul fatto che fosse necessario abilitare HTTPS, quindi ho iniziato a seguire questa documentazione. Tutto è andato bene fino a ./launcher rebuild app, dove ho ricevuto un errore di postgres. Questo mi ha sorpreso, perché non avevo modificato la configurazione di postgres (per quanto ne sappia). Il primo errore è qui sotto:

INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Non ho fermato il servizio postgres, ma ho provato a eseguire service start postgres e mi ha detto che non era installato. Quindi presumo che sia installato automaticamente in un modo diverso da quello a cui sono abituato. Avete idee su cosa avrei potuto sbagliare? Grazie

Il mio container/app.yml:

templates:
  - "templates/web.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  db_shared_buffers: "128MB"

env:
  LANG: en_US.UTF-8
  LETSENCRYPT_ACCOUNT_EMAIL: 'myotheremail@gmail.com'
  UNICORN_WORKERS: 2

  DISCOURSE_HOSTNAME: mysite.com

  DISCOURSE_DEVELOPER_EMAILS: 'myemail@gmail.com'

  DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: myemail@gmail.com
  DISCOURSE_SMTP_PASSWORD: "myPa$$word"

  ## L'indirizzo CDN http o https per questa istanza di Discourse (configurato per il recupero)
  ## vedere https://meta.discourse.org/t/14857 per i dettagli
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

run:
  - exec: echo "Inizio dei comandi personalizzati"
  - exec: echo "Fine dei comandi personalizzati"

Se stavi seguendo la guida ufficiale, HTTPS dovrebbe essere stato configurato automaticamente. Nota in cima alla guida a cui hai fatto riferimento:

Sì, è corretto. E sono quelle le istruzioni che ho seguito. Ho iniziato con la guida per la connessione tramite login di Facebook, ma dubito che sia quello il problema. Ho seguito la guida che hai pubblicato, sono passato a HTTPS e ora sto riscontrando i problemi elencati sopra.

Ok, ricapitoliamo per un momento.

Queste due guide sono tutto ciò di cui hai bisogno:

Questa invece non devi seguirla, poiché HTTPS è abilitato di default:

Se possibile, ti consiglio di ricominciare da capo e poi segnalare eventuali errori che ricevi durante il tentativo di accesso con Facebook.

Ok, beh, quando ho finito la prima guida, il sito era online, ma non era HTTPS. Ho dato per scontato che non lo sarebbe stato finché non l’avessi abilitato. Rileggerò le istruzioni, forse non ho capito qualcosa, e poi farò rapporto.

Ok, ho rimesso in piedi l’app, ma non vedo in queste istruzioni nessun passaggio che possa configurare il sito in HTTPS, dato che l’unico riferimento a un certificato è il metodo Let’s Encrypt in fondo. Cosa mi sto perdendo? Puoi indicarmi esattamente dove, in quelle istruzioni, viene configurato l’HTTPS?

È tutto gestito in background. Quando inserisci la tua email nell’ultimo passaggio di configurazione:

Scommetto che ho premuto INVIO per saltare senza nemmeno accorgermene. Se fosse così, sarebbe meglio semplicemente rieseguire la configurazione o seguire le istruzioni di Let’s Encrypt? Tieni presente che ho già un po’ di contenuto sul sito e non voglio che venga cancellato. (Grazie ancora per il tuo aiuto)

Esegui di nuovo discourse-setup e fornisci un indirizzo per Let’s Encrypt.

Che funzionalità fantastica. Mi sento davvero sciocco per averla persa la prima volta. Grazie a entrambi e al team per averla implementata.

C’è qualche modo di cambiare le parole che ti avrebbe fatto capire prima?

Penso di sì. Ho molta esperienza nella gestione dei server, ma non sono stato molto attivo da quando è uscito Let’s Encrypt, quindi ho dato per scontato che ci fosse una sezione nella documentazione su come ottenere un certificato, se fosse qualcosa che funzionasse subito. Dato che non c’era, ho pensato che dovessi farlo in un passaggio separato. In quella pagina non c’è nulla che menzioni Let’s Encrypt, tranne l’output del comando ./disource-setup. Forse si potrebbe aggiungere, sotto la sezione Modifica la configurazione di Discourse (prima del comando), una nota che dice: se vuoi HTTPS, dovrai inserire qualcosa nel campo Let’s Encrypt. Sapevo di cercare in quella pagina per HTTPS, ma non ho trovato corrispondenze con la stringa “https” (quando ho usato Ctrl+F), quindi ho assunto che non fosse presente. Ho cercato “https” e “cert”, e dato che non li ho trovati, ho pensato che fosse qualcosa di separato.

E onestamente, se lavorassi più frequentemente sull’hosting di siti web, probabilmente avrei visto Let’s Encrypt e avrei capito subito di cosa si trattava. Forse sarebbe utile includere una sezione “Cosa ti serve” che menzioni anche un’email associata a Let’s Encrypt?

Non voglio che questo suoni come un’offesa: la documentazione è ottima, ed è stato un errore umano (il mio errore umano) a causare il mio problema.

Va bene. Quali parole?

Non riesco a capire se non hai visto il resto della mia risposta, ma forse inserirò direttamente una PR con le correzioni che ritengo utili. Comunque, sarebbe davvero utile menzionare semplicemente che la documentazione gestisce i certificati.

Ah, sì! Quindi la documentazione sull’installazione cloud non lo rende chiaro? Ha senso.

Controllerò il linguaggio in discourse-setup per vedere se è necessario chiarire meglio cos’è Let’s Encrypt. È vero che non dovrebbe dare per scontato che l’utente lo sappia.

Grazie