Installation ne fonctionne pas !

J’essaie d’effectuer une installation propre avec l’application en un clic de Digital Ocean.

C’est la troisième fois que je la crée depuis le début et je rencontre le même problème.

En vérifiant le DNS, je vois que mon domaine pointe vers l’adresse IP du droplet, mais Discourse ne s’affiche pas sur mon domaine.

J’ai lancé discourse-doctor et il se bloque/ reste suspendu avant d’afficher les informations « domaine servi / non servi ».

Y a-t-il eu une mise à jour qui aurait pu introduire ce comportement ?

1 « J'aime »

L’installation en un clic n’est pas prise en charge.

Veuillez utiliser le processus d’installation officiel, remarquablement simple.

Ensuite, si vous rencontrez des problèmes avec cela, vous pouvez les signaler ici et obtenir de l’aide.

6 « J'aime »

@merefield Je viens de créer un nouveau droplet et d’exécuter l’installation comme décrit dans la procédure officielle. Je rencontre toujours exactement le même problème.

discourse-doctor se fige

et rien n’est servi sur mon domaine.

C’est une installation entièrement neuve avec la procédure officielle. Je n’arrive pas à comprendre ce qui se passe ici. Des indices ?

1 « J'aime »

@merefield Dans les logs de l’application ./launcher logs app, je vois :

nginx: [emerg] impossible de charger le certificat "/shared/ssl/mydomainname.de.cer" : PEM_read_bio_X509_AUX() a échoué (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Je ne suis pas sûr de ce que cela signifie, cependant.

1 « J'aime »

Donc je vois qu’il essaie de regarder dans /shared/ssl, mais en réalité le SSL se trouve dans shared/standalone/ssl. Comment devrais-je corriger cela ?

1 « J'aime »

Le problème vient généralement du fait que vous n’avez pas configuré correctement le DNS ou que les changements n’ont pas encore été propagés. Si vous partagez votre URL, quelqu’un pourra vérifier.

Je consulte souvent https://dnschecker.org/#A/example.com pour cela.

Cependant, si vous avez essayé plusieurs fois, vous avez probablement épuisé le nombre de tentatives autorisées par Let’s Encrypt pour vous délivrer un certificat. Je parierais à 90 % que c’est votre problème actuel. Vous pouvez « tricher » en suivant Set up Let’s Encrypt with multiple domains / redirects - #53, mais cela nécessite une configuration plus complexe et vous n’auriez pas pu réaliser la configuration simple. Votre meilleure option est probablement d’attendre quelques jours et de réessayer.

Ce n’est pas le problème. /shared/ssl est le chemin à l’intérieur du conteneur, tandis que shared/standalone/ssl est le chemin à l’extérieur du conteneur.

4 « J'aime »

@pfaffman Ouais, ça a l’air légitime ! Je n’arrive toujours pas à le créer, mais je peux le faire sur un autre domaine. Puisque la recherche DNS montre que je suis connecté au bon serveur et tout, je suppose que c’est bien ce que tu as décrit. J’attendrai encore quelques jours et je réessaierai.
Merci :metal:

2 « J'aime »

@pfaffman Peux-tu m’aider à tricher ? J’ai regardé comment le configurer avec plusieurs domaines, mais je ne suis pas sûr de ce que tu voulais dire. Veux-tu dire utiliser le hook after_ssl d’une certaine manière ?

1 « J'aime »

Il vous suffit d’ajouter tout autre domaine. Ainsi, si votre forum est forum.example.com, vous ajouterez un enregistrement DNS pour cheat.example.com pointant vers votre serveur et l’ajouterez comme décrit là-bas. Puisqu’il s’agirait d’une demande de certificat différente, cela vous permettrait de la soumettre.

1 « J'aime »

@pfaffman J’utilise Digital Ocean. J’ai ajouté cheat.example.com en tant qu’enregistrement A, mais il n’est pas accepté comme domaine lors de la configuration.

(ATTENTION : Le port 443 de l’ordinateur ne semble pas accessible)

J’ai suivi les instructions et reconstruit, mais le message « Le site est inaccessible » persiste. :thinking:

Pour le reste de la configuration, j’ai simplement ajouté :

  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d cheat.example.com"

à l’intérieur de hooks: dans mon fichier app.yml.

Ou alors, il peut ajouter un domaine ou un sous-domaine en utilisant cette méthode. C’est un moyen facile de contourner la limite une fois celle-ci atteinte. Mais pour éviter d’atteindre les limites de taux, il est toujours préférable d’utiliser l’environnement de test avec l’option --dryrun. (Notez que Let’s Encrypt est en train d’envisager de renommer --dryrun en quelque chose de plus facile à reconnaître pour les non-anglophones, comme --test ou --testrun. Cela ne devrait probablement pas arriver avant janvier 2021 ou plus tard. Ils travaillent également sur une réécriture complète de leurs guides. :slightly_smiling_face:


La méthode recommandée pour ajouter un nouveau domaine à un certificat existant consiste effectivement à réutiliser la ligne de commande originale, à ajouter le nouveau domaine avec un autre drapeau -d, et à ajouter --expand pour indiquer à certbot de ne pas créer une nouvelle lignée (ce qui entraînerait un nouveau sous-répertoire dans /etc/letsencrypt/live).

3 « J'aime »

Le problème ici, c’est que vous ne savez pas qu’il s’agit d’un test jusqu’à ce qu’il soit trop tard. De plus, même pour moi, il n’est pas clair comment configurer Discourse pour récupérer ces certificats en mode test.

C’est exactement ce que j’essayais de communiquer.

1 « J'aime »

C’est l’une des raisons pour lesquelles ils (chez Let’s Encrypt) réécrivent leurs guides… pour les rendre plus clairs. Une fois que vous êtes configuré pour obtenir un certificat de test (fictif) en utilisant l’environnement de test, vous pouvez exécuter Certbot en mode production et obtenir votre autorité de certification (CA). Ensuite, Discourse peut être installé et il devrait récupérer la nouvelle CA (étendue).

:+1:

Ce n’est pas ça. Le problème, c’est que trouver comment ajouter un bloc à un fichier app.yml pour activer cette option — aussi évidente que cela puisse paraître — est environ 3 fois (voire 10 fois) plus difficile que d’installer Discourse. Il faut modifier app.yml, ajouter une chose compliquée et s’assurer que tous les espaces sont exactement au bon endroit ? Attendez simplement une semaine ou choisissez un nouveau nom.

2 « J'aime »

@pfaffman J’ai choisi un nouveau nom comme décrit. Un problème était que cheat.example.com devrait être un enregistrement CNAME au lieu d’un enregistrement A.

Cela ne fonctionne toujours pas, cependant. Je vais lui laisser un peu plus de temps.

EDIT : Pour référence, voici mon fichier app.yml :


templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.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"

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

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définissez 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 augmente 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
  # DISCOURSE_RELATIVE_URL_ROOT: /forum
  ## 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: cheat.example.com

  ## 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 définis comme administrateurs et développeurs
  ## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'emails@emails.com'

  ## 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: smtpout.secureserver.net
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: some@email.com
  DISCOURSE_SMTP_PASSWORD: "apassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (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: me@example.com

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour récupérer)
  ## voir 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
## voir 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
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d cheat.example.com --expand"
 
1 « J'aime »

Finalement, une semaine s’est écoulée et j’ai pu réutiliser mon domaine. J’ai probablement fait une erreur dans la configuration pour le faire fonctionner avec le sous-domaine, car après avoir consulté Let’s Encrypt, je suis presque certain que c’est la solution.

Encore merci à @pfaffman et @JimPas pour votre aide et vos réponses instructives !

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.