Je lutte pour établir une intégration entre Ghost et Discourse.
Discourse est en version : 2.8.0.beta1, Docker sur Ubuntu - sans nginx
J’utilise Traefik sur un système autonome derrière un routeur IP unique - dans un réseau domestique NAT. Traefik permet le routage HTTP/HTTPS.
Traefik est configuré avec un fichier traefik_dynamic.toml plutôt qu’avec des labels Docker. Il n’y a pas de réseau Docker partagé. (Si quelqu’un s’intéresse à la configuration de Traefik, n’hésitez pas à me contacter - cela fonctionne très bien comme proxy inverse).
Ghost est également à sa dernière version (4.6.4) et tourne sur un hôte séparé (les deux hôtes sont des machines virtuelles Ubuntu - VERSION=“20.04.2 LTS (Focal Fossa)”, exécutées sur Proxmox).
J’ai suivi les différentes pages tutoriels disponibles sur le site de documentation de Ghost et sur le forum de Discourse.
Les outils de développement web de Firefox indiquent que la page renvoie le code source suivant :
<div class="comment container small">
<div class="discourse-comments"></div>
<script type="text/javascript">
if (window.location.pathname.indexOf('/p/') < 0) {
DiscourseEmbed = { discourseUrl: 'https://discourse.mydomain/', discourseEmbedUrl: 'https://ghost.mydomain/testing-new-stuff/' };
(function() {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
}
</script>
</div>
Mais aucun commentaire réel n’est affiché. Je peux voir que mon hôte Discourse renvoie bien embed.js, mais rien n’apparaît sur la page. (Désolé, je ne suis pas développeur web).
Il semble donc que le script s’exécute mais ne renvoie rien.
C’est une nouvelle installation de Discourse, encore en mode « roulettes » (mode bootstrap). Il y a donc très peu de sujets pour l’instant.
Le fichier app.yml est joint ci-dessous.
Les paramètres de l’hôte intégré semblent corrects : j’utilise un utilisateur administrateur de Discourse pour la création de sujets, et la liste blanche des chemins est actuellement vide (" ").
J’ai créé une catégorie « testing » et je l’ai ajoutée à « Publier dans la catégorie ».
J’ai également ajouté DISCOURSE_ENABLE_CORS: true dans app.yml, car cela pourrait aider. J’ai ajouté le proxy ainsi que http://ghost.mydomain et http://ghost.mydomain dans les origines CORS.
Quelqu’un pourrait-il me conseiller sur la manière de déboguer ce problème ?
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"
## 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:
- "8081: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: "2048MB"
## 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:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
DISCOURSE_ENABLE_CORS: true
## Combien de requêtes web simultanées sont prises en charge ? Cela 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: 2
## TODO : Le nom de domaine auquel cette instance Discourse répondra
## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
DISCOURSE_HOSTNAME: mydiscoursehost.mydomain
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (option -h) que celui 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: 'myemailaddress@mydomain'
## TODO : Le serveur 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: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@mydomain
DISCOURSE_SMTP_PASSWORD: "mypostmasterpassword7"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optionnel, par défaut true)
DISCOURSE_SMTP_DOMAIN: mydomain
DISCOURSE_NOTIFICATION_EMAIL: noreply@mydomain
## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
# LETSENCRYPT_ACCOUNT_EMAIL: notused
## 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
## La clé d'adresse IP Maxmind pour la recherche d'adresses IP
## voir https://meta.discourse.org/t/-/137387/23 pour plus de détails
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## 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
## 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 « De » 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"