Discourse non si avvia

Recentemente ho tentato di distribuire Discourse, ma ho incontrato un problema che ne impedisce l’avvio.

L’errore è il seguente:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development' failed with return #<Process::Status: pid 1193 exit 15>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "cmd" => ["echo \"gem 'mysql2'\" >> Gemfile", "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmariadb-dev", "su discourse -c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs $(($(nproc) - 1)) --without test development'"]}
bootstrap failed with exit code 15
** FAILED TO BOOTSTRAP ** scorri verso l'alto e cerca i messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.
7a849a20b51e8b8ff94c6ac3727c393aeb899e9b48b7d2313931232ceb9e6411

Il file di configurazione è il seguente:

## questo è il template del container Docker Discourse standalone "all-in-one"
##
## Dopo aver apportato modifiche a questo file, DEVI eseguire il rebuild
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE DURANTE LA MODIFICA!
## I FILE YAML SONO MOLTO, MOLTO SENSIBILI A ERRORI NELLO SPAZIAMENTO 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/import/mysql-dep.template.yml"
  #- "templates/web.ratelimited.template.yml"
  ## Rimuovi il commento da 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 container?
## Se desideri che Discourse condivida una porta con un altro server web come Apache o nginx,
## consulta https://meta.discourse.org/t/17247 per i dettagli
expose:
  - "8000:80" # http
  #- "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.chinese"

  ## Imposta db_shared_buffers al massimo al 25% della memoria totale.
  ## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascrivere
  #db_shared_buffers: "256MB"

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

  ## Quale revisione di Git deve utilizzare questo container? (predefinito: latest)
  #version: latest

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: 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 sovrascrivere
  #UNICORN_WORKERS: 3

  ## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
  ## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
  DISCOURSE_HOSTNAME: "forum.akarinliu.com"

  ## Rimuovi il commento se desideri 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 diventeranno amministratori e sviluppatori
  ## all'iscrizione iniziale, ad esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: "forum.akarinliu.com"

  ## TODO: Configura il server di posta
  ##       (utilizzato per la validazione di nuovi account, notifiche, digest, ecc.)
  ## obbligatorio: hostname del server SMTP utilizzato per inviare posta
  DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com
  ## rimuovi il commento per impostare la porta su un valore diverso dal predefinito (25)
  DISCOURSE_SMTP_PORT: 587
  ## NOME_UTENTE / PASSWORD obbligatori se il provider SMTP richiede l'autenticazione
  ## ATTENZIONE: un '#' nella password SMTP può essere interpretato erroneamente; assicurati che sia racchiuso tra virgolette, ad esempio:
  ##   DISCOURSE_SMTP_PASSWORD: "#pass#ord"
  DISCOURSE_SMTP_USER_NAME: noreply@akarinliu.com
  DISCOURSE_SMTP_PASSWORD: "***"
  ## rimuovi il commento per abilitare il TLS implicito al momento della connessione, probabilmente necessario per utilizzare la porta 465
  #DISCOURSE_SMTP_FORCE_TLS: true
  ## rimuovi il commento per impostare il dominio HELO/EHLO, impostalo solo se richiesto dal provider
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com
  ## l'indirizzo da cui vengono inviate le notifiche
  #DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com
  ## rimuovi il commento per modificare la verifica del certificato del server
  #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # peer|none
  ## rimuovi il commento per sovrascrivere il metodo di autenticazione
  #DISCOURSE_SMTP_AUTHENTICATION: plain # plain|login|cram_md5
  # Flag opzionale per saltare la configurazione della posta
  #DISCOURSE_SKIP_EMAIL_SETUP: "1" # (opzionale), rimuovi il commento per saltare la convalida della configurazione della posta

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

  ## L'ID account e la chiave di licenza Maxmind geolocation per le ricerche di indirizzi IP
  ## consulta https://meta.discourse.org/t/-/173941 per i dettagli
  DISCOURSE_MAXMIND_ACCOUNT_ID: 1111
  DISCOURSE_MAXMIND_LICENSE_KEY: '***'

## Il container Docker è stateless; tutti i dati sono archiviati in /shared
volumes:
  - volume:
      host: ./shared
      guest: /shared
  - volume:
      host: ./log/var-log
      guest: /var/log

## I plugin vanno qui
## consulta 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 compilazione
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se desideri impostare l'indirizzo email 'From' per la tua prima registrazione, rimuovi il commento e modifica:
  ## Dopo aver ricevuto la prima email di iscrizione, rimetti il commento alla riga. Deve essere eseguito solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine dei comandi personalizzati"

Fai così e condividici il risultato :slight_smile:

Sì, per favore incolla almeno 100 righe.

Se il tuo server si trova in Cina, è molto probabile che si tratti di un problema di rete. Dai tuoi log sembra che il processo si sia bloccato durante il download del pacchetto gem; stai tranquillo, mi succede lo stesso. In questi giorni non riesco a procedere con la refattorizzazione a causa di vari problemi di rete.

Potrebbe essere dovuto al fatto che in Cina è in corso l’esame di ammissione all’università (Gaokao), periodo in cui il blocco della rete è particolarmente severo. Ti consiglio di riprovare dopo questo periodo o di utilizzare un proxy.