Impossible de faire fonctionner Discourse à nouveau

Bonjour :

Je fais fonctionner Discourse depuis plusieurs mois sans aucun problème.
J’ai dû réinitialiser l’hôte et je ne parviens plus à faire fonctionner Discourse.

/var/discourse# ./launcher rebuild app

Vérification que le lanceur est à jour

Récupération de l'origine

Le lanceur est à jour

cat: 80:80: Aucun fichier ou dossier de ce type

cat: 443:443: Aucun fichier ou dossier de ce type

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

/usr/bin/docker : format de référence invalide : le nom du dépôt doit être en minuscules.

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

cat: cids/app_bootstrap.cid: Aucun fichier ou dossier de ce type

"docker rm" nécessite au moins 1 argument.

Consultez 'docker rm --help'.

Utilisation : docker rm [OPTIONS] CONTAINER [CONTAINER...]

Supprime un ou plusieurs conteneurs

rm: impossible de supprimer 'cids/app_bootstrap.cid': Aucun fichier ou dossier de ce type

** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.

./discourse-doctor peut aider à diagnostiquer le problème.

Les commandes “run” et “bootstrap” font la même chose :frowning:

Le docteur indique :

./discourse-doctor 
DISCOURSE DOCTOR dim 16 févr. 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


Fichier containers/app.yml trouvé

==================== PARAMÈTRES YML ====================
awk: option non valide : --field-separator=:
DISCOURSE_HOSTNAME=
awk: option non valide : --field-separator=:
SMTP_ADDRESS=
awk: option non valide : --field-separator=:
DEVELOPER_EMAILS=
awk: option non valide : --field-separator=:
SMTP_PASSWORD=
awk: option non valide : --field-separator=:
SMTP_PORT=
awk: option non valide : --field-separator=:
SMTP_USER_NAME=
awk: option non valide : --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=

==================== INFORMATIONS DOCKER ====================
VERSION DOCKER : Docker version 18.06.3-ce, build d7080c1

PROCESSUS DOCKER (docker ps -a)

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

==================== PROBLÈME GRAVE !!!! ====================
L'application n'est pas en cours d'exécution !
Tentative de reconstruction
==================== JOURNAL DE RECONSTRUCTION ====================
Vérification que le lanceur est à jour
Récupération de l'origine
Le lanceur est à jour
cat: 80:80: Aucun fichier ou dossier de ce type
cat: 443:443: Aucun fichier ou dossier de ce type
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker : format de référence invalide : le nom du dépôt doit être en minuscules.
Consultez '/usr/bin/docker run --help'.
cat: cids/app_bootstrap.cid: Aucun fichier ou dossier de ce type
"docker rm" nécessite au moins 1 argument.
Consultez 'docker rm --help'.

Utilisation : docker rm [OPTIONS] CONTAINER [CONTAINER...]

Supprime un ou plusieurs conteneurs
rm: impossible de supprimer 'cids/app_bootstrap.cid': Aucun fichier ou dossier de ce type
** ÉCHEC DU BOOTSTRAP ** Veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.
./discourse-doctor peut aider à diagnostiquer le problème.
==================== FIN DU JOURNAL DE RECONSTRUCTION ====================
Échec de la reconstruction de l'application.

Vérification de votre nom de domaine . . .

Connexion au port 443 réussie.
Vous devriez probablement supprimer tous les plugins non standard et reconstruire.
Tentative de redémarrage du conteneur existant . . . 

cat: 80:80: Aucun fichier ou dossier de ce type
cat: 443:443: Aucun fichier ou dossier de ce type
+ /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 : format de référence invalide : le nom du dépôt doit être en minuscules.
Consultez '/usr/bin/docker run --help'.
Échec du redémarrage du conteneur.


==================== PLUGINS ====================
          - 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

AVERTISSEMENT :
Vous semblez avoir des plugins non officiels.
Si vous rencontrez des problèmes, vous devriez les désactiver et essayer de reconstruire à nouveau.

Consultez https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb pour la liste officielle.

========================================
Version de Discourse à : NON TROUVÉE
Version de Discourse à localhost : NON TROUVÉE


==================== INFORMATIONS SUR LA MÉMOIRE ====================
RAM (Mo): 2009

             total       utilisé      libre     partagé   tampons     cache
Mémoire:      1962       1819        142         45         86        586
-/+ tampons/cache:       1146        815
Swap:         2047        190       1857

==================== VÉRIFICATION DE L'ESPACE DISQUE ====================
---------- Espace disque du système d'exploitation ----------
Système de fichiers      Taille  Utilisé  Disponible  %Monté sur
/dev/sda1        20G  9.1G  9.7G  49% /

==================== INFORMATIONS SUR LE DISQUE ====================

Disque /dev/sdb: 50 Gio, 53687091200 octets, 104857600 secteurs
Unités: secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique): 512 octets / 512 octets
Taille E/S (minimale/optimale): 512 octets / 512 octets
Disque /dev/sda: 20 Gio, 21474836480 octets, 41943040 secteurs
Unités: secteurs de 1 * 512 = 512 octets
Taille du secteur (logique/physique): 512 octets / 512 octets
Taille E/S (minimale/optimale): 512 octets / 512 octets
Type d'étiquette de disque: dos
Identifiant de disque: 0x7f0953e7

Périphérique     Boot Start      End  Secteurs Taille Id Type
/dev/sda1  *     2048 41941883 41939836  20G 83 Linux

==================== FIN DES INFORMATIONS SUR LE DISQUE ====================

==================== TEST DE COURRIEL ====================
Pour un test robuste, obtenez une adresse sur http://www.mail-tester.com/
Ou envoyez simplement un message de test à vous-même.
Adresse e-mail pour le test de messagerie ? ('n' pour ignorer) []: XXXXXXXXXXXX
Envoi du courriel à XXXXXXXXXXXX . . . 
Erreur: Aucun conteneur trouvé : app

Remplacement: SMTP_PASSWORD
Remplacement: LETSENCRYPT_ACCOUNT_EMAIL
Remplacement: DEVELOPER_EMAILS
Remplacement: DISCOURSE_DB_PASSWORD
Remplacement: Envoi du courriel à

==================== TERMINÉ ! ====================

Vous pouvez examiner la sortie de ce script avec 
LESS=-Ri less /tmp/discourse-debug.txt

MAIS D'ABORD, assurez-vous de connaître les trois premières commandes ci-dessous !!!

Commandes à connaître lors de l'affichage du fichier avec la commande ci-dessus (appelée 'less') : 
q              -- quitter
/erreur<ENTRÉE>  -- rechercher le mot 'erreur'
n              -- rechercher la prochaine occurrence
g              -- aller au début du fichier
f              -- avancer d'une page
b              -- reculer d'une page
G              -- aller à la fin du fichier

Assurez-vous que les paramètres mis en évidence par Doctor sont correctement remplis et ne sont pas vides.

Par exemple : DISCOURSE_HOSTNAME: mydomain.com (notez que le séparateur doit être : et non =)

Vous pouvez vérifier la syntaxe avec un validateur YML en ligne : http://www.yamllint.com/

Ce fichier n’a pas été modifié du tout… il est identique à ce qu’il était lorsque tout fonctionait :frowning:
J’ai vérifié ligne par ligne, aucune erreur…

Voici le contenu :

## Ceci est le modèle de conteneur Docker Discourse autonome tout-en-un
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT EN ÉDITANT !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACE OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
#expose:#
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définir db_shared_buffers à un maximum de 25% de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "256MB"

  ## peut améliorer les performances de tri, mais ajoute l'utilisation de la mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : tests-passed)
  #version: tests-passed

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

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
  ## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 4

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
  DISCOURSE_HOSTNAME: 'XXXXXXXXXXXX'

  ## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
  ## nom d'hôte (option -h) que spécifié ci-dessus (par défaut "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO : Liste d'e-mails séparés par des virgules qui seront administrateurs et développeurs
  ## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXXXXXXXXXXX'

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
  # ATTENTION, le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  DISCOURSE_SMTP_ADDRESS: XXXXXXXXXXXX
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: XXXXXXXXXXXX
  DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optionnel, par défaut true)

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  LETSENCRYPT_ACCOUNT_EMAIL: XXXXXXXXXXXX

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour récupérer)
  ## consultez https://meta.discourse.org/t/14857 pour plus de détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Les plugins vont ici
## consultez https://meta.discourse.org/t/19157 pour plus de détails
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

## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail 'From' pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"

Essayez de supprimer les caractères ' dans le nom d’hôte et les adresses e-mail des développeurs

'XXXXXXXXXXXX'

Pourquoi commenter la commande ?

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

Cela explique la sortie d’erreur :

cat: 80:80: Aucun fichier ou dossier de ce type
cat: 443:443: Aucun fichier ou dossier de ce type

Mais j’ai besoin que ces lignes soient là !

Lis ce que j’ai dit. Tu as ajouté un #.

Doit être :

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

Je n’ai pas rendu les choses si simples, car quelqu’un doit se demander comment de telles erreurs peuvent survenir si cela est vrai ?