Impossibile ricostruire a causa del fallito aggiornamento di postgres 12

Ciao,

Sono bloccato con quanto segue. Eseguendo il comando ./discourse-setup, ricevo il seguente errore:

Non sono sicuro di capire il messaggio: il mio sito web è attivo e funzionante all’indirizzo https://cp2077.eu/ con SSL.

Ecco il mio file app.yml:

## questo è il template del contenitore Docker Discourse all-in-one, standalone
##
## 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 NEGLI SPAZI 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/sshd.template.yml"
  - "templates/web.ratelimited.template.yml"
## De-commenta queste due righe se desideri aggiungere Lets Encrypt (https)
##  - "templates/web.ssl.template.yml"
##  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"
## quali porte TCP/IP deve esporre questo contenitore?
## Se desideri 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:
# - "2045:80"   # http
# - "1443: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: "1024MB"

  ## 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 concorrenti 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 semplice indirizzo IP.
  DISCOURSE_HOSTNAME: cp2077.eu

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

  ## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
  ## alla prima registrazione, ad esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'myemail@yandex.com'

  ## 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: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ******
  DISCOURSE_SMTP_PASSWORD: ******
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, predefinito true)

  ## Se hai aggiunto il template Lets Encrypt, de-commenta qui sotto per ottenere un certificato SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: myemail@yandex.com

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

## Il contenitore Docker è stateless; 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

## 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, de-commenta e modifica:
  ## Dopo aver ricevuto la prima email di registrazione, ricommenta la riga. Deve essere eseguita solo una volta.
  ## - exec: rails r "SiteSetting.notification_email='beatlicious@yandex.com'"
  - exec: echo "Fine dei comandi personalizzati"

Quando eseguo il comando ./launcher rebuild app, ricevo il seguente errore:

fatal: not a git repository (or any of the parent directories): .git
Stopping old container
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-11T01:41:07.468750 #1]  INFO -- : Loading --stdin
I, [2020-07-11T01:41:07.482322 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T01:41:07.556578 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2020-07-11T01:41:07.557419 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T01:41:07.562170 #1]  INFO -- :
I, [2020-07-11T01:41:07.562833 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T01:41:07.568449 #1]  INFO -- :
I, [2020-07-11T01:41:07.569233 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T01:41:07.576449 #1]  INFO -- :
I, [2020-07-11T01:41:07.577398 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T01:41:07.582904 #1]  INFO -- :
I, [2020-07-11T01:41:07.583623 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T01:41:07.592257 #1]  INFO -- :
I, [2020-07-11T01:41:07.593134 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/11 01:41:07 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-11T01:41:07.602436 #1]  INFO -- :
I, [2020-07-11T01:41:07.602977 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T01:41:07.608907 #1]  INFO -- :
I, [2020-07-11T01:41:07.609638 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T01:41:07.619803 #1]  INFO -- :
I, [2020-07-11T01:41:07.622598 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T01:41:07.629638 #1]  INFO -- :
I, [2020-07-11T01:41:07.630522 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T01:41:07.639523 #1]  INFO -- :
I, [2020-07-11T01:41:07.651076 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T01:41:07.660620 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T01:41:07.668238 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T01:41:07.679949 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T01:41:07.680746 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: cannot access '/var/lib/postgresql/10/main': No such file or directory
I, [2020-07-11T01:41:07.685326 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main failed with return #<Process::Status: pid 42 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
d639e83f5451b5039efb2333f3eca1166d34ff6dc582ee29a0734a4274080fa2
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
atlas@sknet:~/www/cp2077$

Qualcuno può consigliarmi come installare e configurare Discourse? Ho seguito la guida e sono bloccato qui. Grazie.

Hai seguito l’installazione standard ufficiale di Discourse?

Non vedo come quel sito possa provenire dal file app.yml che hai incluso.

Ti consiglio di creare un nuovo droplet e seguire nuovamente le istruzioni.

Ho seguito la guida, sì. Come hai notato, ho detto che dopo aver eseguito il comando ricevo degli errori. Cosa intendi con “non capisco come il sito possa essere derivato dall’app.yml”? È lo stesso nome di dominio dell’host. Puoi chiarire meglio?

Ciò significa che hai problemi DNS. Il tuo dominio punta a un altro indirizzo IP.

Potresti confermare che questo sia l’indirizzo IP corretto?

Sì, è l’IP del mio sito web. Ho controllato il mio DNS, tutto è configurato correttamente; altrimenti non vedresti che il sito è attivo.

Se fai il ping del mio sito web, vedrai lo stesso indirizzo IP.

Potrebbe esserci un problema con la tua configurazione nginx (o di altro tipo)? :roll_eyes:

Funzionava prima? Con la porta esposta?

Di seguito la mia configurazione nginx:

server {

    listen 80;
    listen [::]:80;
    server_name www.cp2077.eu;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.cp2077.eu;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;
    return 301 https://cp2077.eu$request_uri;
}

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name cp2077.eu;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/cp2077.eu/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cp2077.eu/privkey.pem;

    include /etc/nginx/snippets/ssl.conf;

    http2_idle_timeout 5m; # aumentato da 3m, valore predefinito

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;

    }


}

A dire il vero, non ho idea di cosa possa esserci di sbagliato. Il sito è attivo e funzionante ed è connesso alla porta 443.

Non importa cosa cambio, non appena eseguo il comando ./launcher rebuild app, viene generato un errore:

$  ./launcher rebuild app
fatal: non è un repository git (o nessuna delle directory genitrici): .git
Arresto del contenitore precedente
+ /usr/bin/docker stop -t 60 app
app
(<unknown>): chiave non trovata mentre si analizzava una mappatura di blocco alla riga 10 colonna 1 -e LANG=en_US.UTF-8
Errore di sintassi YAML. Si prega di verificare i file di configurazione in containers/*.yml.
$ ./launcher rebuild app
fatal: repository git non trovato (o in nessuna delle directory superiori): .git
Arresto del contenitore precedente
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Già aggiornato all'ultima versione.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : Caricamento di --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : Generazione delle impostazioni locali (potrebbe richiedere del tempo)...
Generazione completata.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres già in esecuzione, arresto del contenitore ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): File o directory non esistente
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: impossibile accedere a '/var/lib/postgresql/10/main': File o directory non esistente
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


FALLITO
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main fallito con codice di ritorno #<Process::Status: pid 42 exit 1>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
Esecuzione fallita con i parametri {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** BOOTSTRAP FALLITO ** scorri verso l'alto e cerca messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.

Nel tuo file yml c’è un errore di formattazione.

Ho già incollato qui il file yml, non vedo errori di formattazione, li vedi tu?

Sì, l’indentazione è errata lì.

Il file app.yml proviene dai template e non ho mai modificato le righe che mi stai suggerendo, quindi non capisco come possa essere errato se è ciò che è stato fornito da voi.

Ok, comunque, hai i prossimi passi da seguire, quindi ti consiglio di attenerci :wink:

Penso che l’errore segnalato da Discourse setup sia legittimo a causa del reverse proxy.

Vedo che hai già apportato delle modifiche all’app.yml, quindi perché non eseguire semplicemente ./launcher rebuild app?

L’ho incollato qui molte volte, ma lo farò di nuovo. Ecco cosa ottengo quando eseguo quel comando:

$ ./launcher rebuild app
fatal: non è un repository git (o nessuna delle directory genitrici): .git
Arresto del contenitore precedente
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Già aggiornato.
I, [2020-07-11T17:12:58.113241 #1]  INFO -- : Caricamento --stdin
I, [2020-07-11T17:12:58.134955 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-11T17:12:58.173307 #1]  INFO -- : Generazione delle localizzazioni (questo potrebbe richiedere del tempo)...
Generazione completata.

I, [2020-07-11T17:12:58.174132 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-11T17:12:58.178306 #1]  INFO -- :
I, [2020-07-11T17:12:58.178561 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-11T17:12:58.181917 #1]  INFO -- :
I, [2020-07-11T17:12:58.182391 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-11T17:12:58.185755 #1]  INFO -- :
I, [2020-07-11T17:12:58.186224 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-11T17:12:58.189632 #1]  INFO -- :
I, [2020-07-11T17:12:58.190021 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-11T17:12:58.192947 #1]  INFO -- :
I, [2020-07-11T17:12:58.193285 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres già in esecuzione, arresta il contenitore ; exit 1
2020/07/11 17:12:58 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): File o directory non esistente
I, [2020-07-11T17:12:58.199237 #1]  INFO -- :
I, [2020-07-11T17:12:58.199649 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-11T17:12:58.203817 #1]  INFO -- :
I, [2020-07-11T17:12:58.204106 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-11T17:12:58.208244 #1]  INFO -- :
I, [2020-07-11T17:12:58.208674 #1]  INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.213559 #1]  INFO -- :
I, [2020-07-11T17:12:58.215200 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-11T17:12:58.220491 #1]  INFO -- :
I, [2020-07-11T17:12:58.228222 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.234341 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-11T17:12:58.240097 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.245972 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-11T17:12:58.246504 #1]  INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: impossibile accedere a '/var/lib/postgresql/10/main': File o directory non esistente
I, [2020-07-11T17:12:58.249988 #1]  INFO -- :


FALLITO
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main fallito con return #<Process::Status: pid 42 exit 1>
Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'
esecuzione fallita con i parametri {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
cf48a849a885246d6bf9b1b444e679ff6c71dd2fa3b298d42fa2cc67694fc9b5
** FALLITO L'AVVIO ** scorri verso l'alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.

Perché stai usando un proxy per il tuo sito Discourse invece di utilizzare un sottodominio?

Non sono sicuro di aver capito. Voglio che il mio forum Discourse sia sul mio dominio principale, non come sottodominio.

Se questa è la tua prima installazione, dovresti davvero configurarla e farla funzionare seguendo la guida ufficiale prima di modificare la configurazione. È ampiamente documentato altrove qui su meta che la sottocartella non offre vantaggi ed è considerata un argomento avanzato che può causare problemi in qualsiasi momento con gli aggiornamenti.

No, questa non è la mia prima installazione. In realtà è la mia seconda installazione su un altro dominio. Qualche mese fa ho installato Discourse su un altro dominio seguendo la stessa guida. Oggi sto ripetendo la procedura e mi sono bloccato con i problemi sopra menzionati. Non ho fatto nulla di speciale; stavo seguendo la guida esattamente come era prima.