Non riesco a far funzionare di nuovo Discourse

Ciao:
Sto utilizzando Discourse da alcuni mesi senza problemi.
Ho dovuto resettare l’host e ora non riesco più a far funzionare Discourse.

/var/discourse# ./launcher rebuild app

Assicurazione che il launcher sia aggiornato

Recupero di origin

Il launcher è aggiornato

cat: 80:80: File o directory non esistente

cat: 443:443: File o directory non esistente

cd /pups && git pull && /pups/bin/pups --stdin

/usr/bin/docker: formato di riferimento non valido: il nome del repository deve essere in minuscolo.

Vedere '/usr/bin/docker run --help'.

cat: cids/app_bootstrap.cid: File o directory non esistente

"docker rm" richiede almeno 1 argomento.

Vedere 'docker rm --help'.

Utilizzo: docker rm [OPZIONI] CONTENITORE [CONTENITORE...]

Rimuove uno o più contenitori

rm: impossibile rimuovere 'cids/app_bootstrap.cid': File o directory non esistente

** FALLIMENTO DEL BOOTSTRAP ** Si prega di scorrere verso l'alto e cercare messaggi di errore precedenti; potrebbero essercene più di uno.

./discourse-doctor può aiutare a diagnosticare il problema.

I comandi “run” e “bootstrap” fanno la stessa cosa :frowning:

Doctor dice:

./discourse-doctor 
DISCOURSE DOCTOR Dom Feb 16 11:59:15 CET 2020
OS: Linux XXXXXXXXXXXX 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux


Trovato containers/app.yml

==================== IMPOSTAZIONI YML ====================
awk: opzione non valida: --field-separator=:
DISCOURSE_HOSTNAME=
awk: opzione non valida: --field-separator=:
SMTP_ADDRESS=
awk: opzione non valida: --field-separator=:
DEVELOPER_EMAILS=
awk: opzione non valida: --field-separator=:
SMTP_PASSWORD=
awk: opzione non valida: --field-separator=:
SMTP_PORT=
awk: opzione non valida: --field-separator=:
SMTP_USER_NAME=
awk: opzione non valida: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=

==================== INFORMAZIONI DOCKER ====================
VERSIONE DOCKER: Docker versione 18.06.3-ce, build d7080c1

PROCESSI DOCKER (docker ps -a)

ID CONTENITORE        IMMAGINE              COMANDO             CREAZIONE             STATO               PORTE               NOMI

==================== PROBLEMA GRAVE!!!! ====================
app non in esecuzione!
Tentativo di ricostruzione
==================== LOG RICOSTRUZIONE ====================
Assicurazione che il launcher sia aggiornato
Recupero di origin
Il launcher è aggiornato
cat: 80:80: File o directory non esistente
cat: 443:443: File o directory non esistente
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker: formato di riferimento non valido: il nome del repository deve essere in minuscolo.
Vedere '/usr/bin/docker run --help'.
cat: cids/app_bootstrap.cid: File o directory non esistente
"docker rm" richiede almeno 1 argomento.
Vedere 'docker rm --help'.

Utilizzo:  docker rm [OPZIONI] CONTENITORE [CONTENITORE...]

Rimuove uno o più contenitori
rm: impossibile rimuovere 'cids/app_bootstrap.cid': File o directory non esistente
** FALLIMENTO DEL BOOTSTRAP ** Si prega di scorrere verso l'alto e cercare messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.
==================== FINE LOG RICOSTRUZIONE ====================
Ricostruzione dell'app fallita.

Controllo del nome di dominio . . .

Connessione a 443 riuscita.
Dovresti probabilmente rimuovere eventuali plugin non standard e ricostruire.
Tentativo di riavvio del contenitore esistente . . . 

cat: 80:80: File o directory non esistente
cat: 443:443: File o directory non esistente
+ /usr/bin/docker run --shm-size=512m -d --restart=always '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=XXXXXXXXXXXX -e DISCOURSE_DEVELOPER_EMAILS=XXXXXXXXXXXX -e DISCOURSE_SMTP_ADDRESS=XXXXXXXXXXXX -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=XXXXXXXXXXXX -e DISCOURSE_SMTP_PASSWORD=XXXXXXXXXXXX -e DISCOURSE_SMTP_ENABLE_START_TLS=false -e LETSENCRYPT_ACCOUNT_EMAIL=XXXXXXXXXXXX '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -h vps659319-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:62:5b:d4:b7:80 local_discourse/app /sbin/boot
/usr/bin/docker: formato di riferimento non valido: il nome del repository deve essere in minuscolo.
Vedere '/usr/bin/docker run --help'.
Riavvio del contenitore fallito.


==================== PLUGIN ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

ATTENZIONE:
Sembra che tu abbia plugin non ufficiali.
Se stai riscontrando problemi, dovresti disabilitarli e provare a ricostruire di nuovo.

Vedere https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb per l'elenco ufficiale.

========================================
Versione di Discourse su : NON TROVATA
Versione di Discourse su localhost: NON TROVATA


==================== INFORMAZIONI SULLA MEMORIA ====================
RAM (MB): 2009

             total       used       free     shared    buffers     cached
Mem:          1962       1819        142         45         86        586
-/+ buffers/cache:       1146        815
Swap:         2047        190       1857

==================== CONTROLLO SPAZIO SU DISCO ====================
---------- Spazio su disco OS ----------
Filesystem      Dimensione  Utilizzato  Disponibile  Uso%  Montato su
/dev/sda1        20G  9.1G  9.7G  49% /

==================== INFORMAZIONI SUL DISCO ====================

Disco /dev/sdb: 50 GiB, 53687091200 byte, 104857600 settori
Unità: settori da 1 * 512 = 512 byte
Dimensione settore (logica/fisica): 512 byte / 512 byte
Dimensione I/O (minima/ottimale): 512 byte / 512 byte
Disco /dev/sda: 20 GiB, 21474836480 byte, 41943040 settori
Unità: settori da 1 * 512 = 512 byte
Dimensione settore (logica/fisica): 512 byte / 512 byte
Dimensione I/O (minima/ottimale): 512 byte / 512 byte
Tipo etichetta disco: dos
Identificatore disco: 0x7f0953e7

Dispositivo     Boot Start      End  Sectors Dimensione Id Tipo
/dev/sda1  *     2048 41941883 41939836  20G 83 Linux

==================== FINE INFORMAZIONI SUL DISCO ====================

==================== TEST MAIL ====================
Per un test affidabile, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di prova a te stesso.
Indirizzo email per il test mail? ('n' per saltare) []: XXXXXXXXXXXX
Invio di mail a XXXXXXXXXXXX . . . 
Errore: Nessun contenitore: app

Sostituzione: SMTP_PASSWORD
Sostituzione: LETSENCRYPT_ACCOUNT_EMAIL
Sostituzione: DEVELOPER_EMAILS
Sostituzione: DISCOURSE_DB_PASSWORD
Sostituzione: Invio di mail a

==================== FINE! ====================

Puoi esaminare l'output di questo script con 
LESS=-Ri less /tmp/discourse-debug.txt

MA PRIMA, assicurati di conoscere i primi tre comandi qui sotto!!!

Comandi da conoscere quando si visualizza il file con il comando sopra (chiamato 'less'): 
q              -- esci
/errore<ENTER>  -- cerca la parola 'errore'
n              -- cerca la prossima occorrenza
g              -- vai all'inizio del file
f              -- vai avanti di una pagina
b              -- torna indietro di una pagina
G              -- vai alla fine del file

Assicurati che le impostazioni evidenziate da Doctor siano compilate correttamente e non vuote.

Ad esempio: DISCOURSE_HOSTNAME: mydomain.com (nota: il separatore deve essere : e non =)

Puoi verificare la sintassi con un validatore YML online: http://www.yamllint.com/

quello file non è stato modificato per niente… è identico a quando funzionava tutto :frowning:
Ho controllato riga per riga, nessun errore…

Ecco qui:

## questo è il template del contenitore Docker Discourse "all-in-one" e autonomo
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE DURANTE LA MODIFICA!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI NELLO SPAZIATURA O NELL'ALLINEAMENTO!
## visita http://www.yamllint.com/ per convalidare questo file quando necessario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Scommenta queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## quali porte TCP/IP deve esporre questo contenitore?
## Se vuoi che Discourse condivida una porta con un altro server web come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
#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 dal bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
  db_shared_buffers: "256MB"

  ## può migliorare le prestazioni di ordinamento, ma aumenta l'uso di memoria per connessione
  #db_work_mem: "40MB"

  ## Quale revisione Git dovrebbe utilizzare questo contenitore? (predefinito: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Quante richieste web simultanee sono supportate? Dipende dalla memoria e dai core della CPU.
  ## verrà impostato automaticamente dal 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: 'XXXXXXXXXXXX'

  ## Scommenta se desideri che il contenitore venga avviato con lo stesso
  ## nome di host (opzione -h) specificato sopra (predefinito "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
  ## all'iscrizione iniziale, esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXXXXXXXXXXX'

  ## TODO: Il server 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: XXXXXXXXXXXX
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: XXXXXXXXXXXX
  DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (opzionale, predefinito true)

  ## Se hai aggiunto il template Lets Encrypt, scommenta qui sotto per ottenere un certificato SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: XXXXXXXXXXXX

  ## 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 contenitore 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
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

## Qualsiasi comando personalizzato da eseguire dopo la costruzione
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se desideri impostare l'indirizzo email 'From' per la tua prima registrazione, scommenta e modifica:
  ## Dopo aver ricevuto la prima email di iscrizione, ricommenta la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine dei comandi personalizzati"

Prova eliminando i caratteri ' nell’hostname e negli indirizzi email degli sviluppatori

'XXXXXXXXXXXX'

Perché commentare il comando?

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

Spiega l’output dell’errore:

cat: 80:80: File o directory non esistente
cat: 443:443: File o directory non esistente

Ma ho bisogno che quelle righe siano lì!

Leggi quello che ho detto. Hai aggiunto un #.

Should be:

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

Non l’ho reso così semplice perché qualcuno deve riflettere su come possano verificarsi errori del genere se è vero.