Annonce du Discourse Doctor

Following the example from Discourse-doctor 👩‍⚕️, I’ve created discourse-doctor, now included in discourse_docker. If you run ./discourse-doctor, you’ll see something like:

DISCOURSE DOCTOR Tue Jul 24 08:50:32 UTC 2018
OS: Linux twonames 4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 08:53:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


Found containers/app.yml

==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=twonames.ltcmp.net
SMTP_ADDRESS=mail.domain.com
DEVELOPER_EMAILS=REDACTED 
SMTP_PASSWORD=REDACTED 
SMTP_PORT=587
SMTP_USER_NAME=postmaster@cakeme.ltcmp.net
LETSENCRYPT_ACCOUNT_EMAIL=REDACTED 

==================== DOCKER INFO ====================
DOCKER VERSION: Docker version 18.05.0-ce, build f150324

DOCKER PROCESSES (docker ps -a)

CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
c75f29870c3b        local_discourse/app           "/sbin/boot"             5 days ago          Up 5 days                 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
adc8de3e5156        discourse/base:2.0.20180613   "/bin/bash -c 'cd /p…"   5 days ago          Exited (137) 5 days ago                                              quirky_zhukovsky


Discourse container app is running


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git

No non-official plugins detected.

See https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb for the official list.

========================================
Discourse version at twonames.ltcmp.net: Discourse 2.1.0.beta2 
Discourse version at localhost: Discourse 2.1.0.beta2 


==================== MEMORY INFORMATION ====================
OS: Linux
RAM (MB): 1016

              total        used        free      shared  buff/cache   available
Mem:            992         577          69          28         345         184
Swap:          2047         301        1746

==================== DISK SPACE CHECK ====================
---------- OS Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   12G   13G  48% /

---------- Container Disk Space ----------
Filesystem      Size  Used Avail Use% Mounted on
overlay          25G   12G   13G  48% /
/dev/vda1        25G   12G   13G  48% /shared
/dev/vda1        25G   12G   13G  48% /var/log

==================== DISK INFORMATION ====================
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 603625F3-7AE2-40CB-B05E-0BD7EA2D57E4

Device      Start      End  Sectors  Size Type
/dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
/dev/vda14   2048    10239     8192    4M BIOS boot
/dev/vda15  10240   227327   217088  106M Microsoft basic data

Partition table entries are not in disk order.

==================== END DISK INFORMATION ====================

==================== MAIL TEST ====================
For a robust test, get an address from http://www.mail-tester.com/
Mail test skipped.

==================== DONE! ====================
The output of this program may be available at http://twonames.ltcmp.net/YzUwYjE5MzlmN2EyZTAz.txt
You should inspect that file carefully before sharing the URL.

You can examine the output of this script with 
LESS=-Ri less /tmp/discourse-debug.txt

BUT FIRST, make sure that you know the first three commands below!!!

Commands to know when viewing the file with the above command (called 'less'): 
q              -- quit
/error<ENTER>  -- search for the word 'error'
n              -- search for the next occurrence
g              -- go to the beginning of the file
f              -- go forward a page
b              -- go back a page
G              -- go to the end of the file

If the container isn’t running, discourse-doctor will attempt a rebuild and add the output of the build to the log file, which, if the container cranks up enough to have nginx, will be accessible via a URL, saving folks the trouble of uploading to something like pastebin. Passwords and email addresses are redacted by the script. Domain names are left intact, as there is rarely reason to hide your site given that it’s on the Internet already.

Right now, you have to know that discourse-doctor exists, but in the next few days, I’ll submit a PR to have launcher and discourse-setup recommend it.

Next Steps

  • have launcher recommend discourse-doctor
  • have discourse-setup recommend discourse-doctor
  • make the mail test rake task do some actual testing rather than just sending , like . . .
    – test connectivity to the port
    – does password work
    – SPF, DKIM, dmarc
    – tell them they can’t use gmail (should also add this to discourse-setup )
    – tell them what email address is in the from: line
  • have launcher disallow mixed case domain names
  • if rebuild rails, re-start old container – this is both trivial and huge, as I think few people know that if the rebulid fails you can just restart the container.
  • (tentative) do some kind of yml linting. It looks like launcher does some kind of yaml parsing in host_run . But part of me says “You break it. You bought it.”
  • consider handling files other than app.yml
  • have the doctor comment out plugins not from discourse github organization

If you have comments or suggestions, please let me know!

36 « J'aime »

Je viens de l’exécuter sur une machine où le site était arrêté. Je m’attendais à ce qu’une série simple de vérifications soit effectuée et rapportée, mais je ne m’attendais pas à une reconstruction avec téléchargements et au redémarrage du site. :grinning: Heureusement, j’utilise cette machine uniquement pour apprendre pour le moment, donc aucun dommage. Peut-être faudrait-il poser une question à l’utilisateur pour savoir s’il souhaite une action aussi significative avant de continuer.

Le Doctor suppose que vous souhaitez que votre site soit en ligne. :wink:

La plupart des vérifications qu’il effectue ne peuvent être réalisées que sur une installation fonctionnelle.

3 « J'aime »

Alors je suppose que j’ai besoin de Discourse Autopsy.

9 « J'aime »

Cela a-t-il déjà été ajouté @pfaffman ?

J’essaie de déboguer le dysfonctionnement d’Amazon SES et voici la sortie de discourse-doctor :

==================== TEST DES E-MAILS ====================
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 ? ('n' pour sauter) [rich@xxx.xxx] :
Envoi de l'e-mail Ă  rich@xxx.xxx...
indicateur abrégé inconnu : 'w' dans -w
Voir 'docker exec --help'.

Remplacement : SMTP_PASSWORD
Remplacement : LETSENCRYPT_ACCOUNT_EMAIL
Remplacement : DEVELOPER_EMAILS
Remplacement : DISCOURSE_DB_PASSWORD
Remplacement : Envoi de l'e-mail Ă 

==================== TERMINÉ ! ====================
Souhaitez-vous publier une version accessible publiquement de ce fichier ? (O/n)O
indicateur abrégé inconnu : 'w' dans -w
Voir 'docker exec --help'.
La sortie de ce programme peut ĂŞtre disponible Ă  l'adresse http://example.com/NTQyYTg2YzVjYzg1NTYx.txt
Vous devriez inspecter attentivement ce fichier avant de partager l'URL.

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
/error<ENTREE> -- rechercher le mot 'error'
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

Aucun e-mail n’arrive.

Et je ne sais pas pourquoi…

La version publique du fichier n’est soit pas créée, soit inaccessible, car je reçois simplement une erreur « non trouvée » lorsque je visite l’URL.

Il semble que le mode de fonctionnement de l’ancien lien public soit cassé. Il n’est presque jamais utilisé. Il devrait être supprimé.

Le test SMTP vérifie la connectivité, mais ne réalise pas de vérifications DNS.

Cette erreur de docker exec suggère qu’il y a un problème de ce côté.

Je vais voir pour ajouter une note concernant l’adresse d’envoi. C’est encore un problème fréquent. Discourse envoie depuis le sous-domaine du forum, alors que le serveur de messagerie attend souvent le domaine de premier niveau (apex).

Pour votre problème d’e-mail, avez-vous consulté Dépannage des e-mails sur une nouvelle installation de Discourse ?

2 « J'aime »

Comme aucune information de diagnostic n’est fournie dans la console, j’espérais que le fichier .txt me donnerait quelques détails.

Je note également que l’URL du fichier txt utilise le protocole http et non https (ce qui ne change d’ailleurs rien ici).

Hmm. Peut-être que cette erreur Docker signifie qu’elle ne lance plus du tout le test SMTP.

Vous devriez consulter le guide de dépannage et exécuter la tâche Rake qui teste SMTP.

C’est noté, merci pour vos réponses.

1 « J'aime »

Après avoir exécuté le script ./discourse-doctor, j’ai répondu Oui à « Souhaitez-vous rendre cette fichier accessible publiquement ? » et je constate maintenant que les identifiants de messagerie (nom d’utilisateur, mot de passe) sont exposés.

Où et comment puis-je supprimer définitivement les journaux et fichiers générés par ./discourse-doctor ?

Hmm. Désolé pour ça. Je suppose que quelque chose a dû changer, ce qui empêche clean_up_log_file() de fonctionner correctement, même si je ne sais pas pourquoi.

Est-ce que l’URL pour partager le fichier fonctionne même ? Je suis presque certain qu’elle ne fonctionnait pas lors de ma dernière vérification.

Vous pouvez exécuter rm /var/discourse/shared/standalone/public/*.txt. Ou bien regardez dans ce répertoire pour trouver le nom exact du fichier et le supprimer.

1 « J'aime »

J’ai essayé de trouver le nom exact du fichier (le nom extrait de l’URL) dans le répertoire racine. J’ai supprimé deux fichiers, mais l’URL affichait toujours toutes les informations du journal. Finalement, j’ai décidé d’arrêter la machine virtuelle. En tout cas, c’était une expérience importante pour moi : « Soyez vraiment prudent lorsque vous manipulez des identifiants »

:wink:

2 « J'aime »

Oui, j’ai la même erreur Docker et aucun email.

Il n’est plus sous ../public/. Trouvé sous var/discourse/shared/standalone/log/var-log/*.txt

S’il change à l’avenir :
find -type f -name *.txt