Déployer Discourse sans Docker

Quelques détails sur mes solutions :

  1. Configuration Nginx :
    Derrière un proxy inverse (haproxy), vous devez copier le fichier /var/discourse/config/nginx-config-sample.conf vers /etc/nginx/sites-enabled/discourse.conf ou une cible similaire, puis remplacer listen <votreportdeproxyinverse> (si nécessaire), et le _ de server_name par votre nom d’hôte (sousdomaine.example.com). Rien d’autre ne doit être modifié.
  2. Pages non affichées (message « Oups ») et enregistrement d’administrateur par e-mail non fonctionnel :
    Magick était la cause du non-affichage des pages après les pages d’enregistrement d’administrateur au premier démarrage. J’ai suivi le fichier indiqué dans le journal : /var/www/discourse/lib/letter_avatar.rb:112 à la ligne 112, il y avait deux commandes magick qui en effet ne répondaient pas. convert répondait, j’ai donc remplacé magick à cette ligne par convert. Après ces corrections, une autre erreur a été enregistrée. En essayant la même procédure avec la commande donnée du fichier, la commande magick ne fonctionnait pas, et convert échouait. NB : magick --version était 7.x et convert --version donnait 6.x. La cause était que j’avais d’abord installé imagemagick avec apt, puis magick 7 à partir des sources. Il y avait des conflits et magick a indiqué que la commande convert était obsolète. J’ai donc relancé mon script avec uniquement magick 7. Cela a immédiatement résolu le problème et j’ai pu voir les nouvelles pages attendues depuis des jours, et l’e-mail fonctionnait aussi ! Magick est vraiment magique.
  3. Le problème du contenu mixte demeure, mais le site Web fonctionne bien.
    NB : dans puma.rb, la ligne bind ENV.fetch("PUMA_BIND", "tcp://#{ENV['PUMA_BIND_ALL'] ? '' : '127.0.0.1:'}3000") doit être comme ceci (correction du premier post.)
  4. EDIT « 3. », concernant la redirection https pour discourse : Je ne sais pas pourquoi exactement, mais mes navigateurs n’affichent plus d’avertissements de « contenu mixte » (peut-être en raison de la mise à jour du cache), donc tout va bien maintenant. Il me suffit de terminer mon script.
3 « J'aime »

Fonctionne bien !!!
ImageMagick v7 résout le problème Ooops !
D’après mes tests, cela fonctionne parfaitement.
Je vais tester le reste des fonctionnalités et je vous tiens au courant dès que possible.

1 « J'aime »

Ce que j’ai fait pour tester, c’est définir la variable d’environnement PUMA_BIND lors de l’exécution de puma.

Concernant ImageMagick, pour une raison quelconque, Discourse échoue à exécuter une conversion d’image sur l’interface web, lorsque je télécharge une grande image, il refuse gentiment de la convertir… Je suis toujours en train de déboguer le problème.

Des progrès dans le débogage ? De mon côté, je travaille sur magick.
Sur certaines images d’environ 50 Ko, une fenêtre contextuelle s’affiche dans le navigateur :
timeout -k 40.0 20 magick gif:/tmp/RackMultipart20250927-23598-xrrp6e.gif -auto-orient -background white -interlace none -flatten -debug all -quality 90 jpg:/tmp/image20250927-23598-9ujq3d.jpg et aucune image n’est chargée.
Si la taille est plus grande, pas de fenêtre contextuelle mais la roue de chargement tourne indéfiniment sans résultat. Aucune erreur n’est enregistrée dans /var/www/discourse/log.

Même problème pour moi :joy::sob:

La seule façon dont j’ai pu le faire fonctionner a été d’utiliser imagemagick du dépôt brew.

MAIS cela échoue lorsque l’image dépasse 3 Mo… peut-être que j’ai configuré une politique très restrictive.

Essayez !!!

Je teste l’installation de docker mais je pense que c’est assez stupide de déployer nginx, unicorn, redis, postgresql et le reste dans UN SEUL conteneur… cela n’a aucun sens. Et il n’y a aucune documentation d’infrastructure pour les gros déploiements… J’ai travaillé dans l’informatique pendant plus de 20 ans et je ne vois que des problèmes à venir à l’avenir en utilisant une telle infrastructure.

Sans parler de « docker The Space Eater » (comme Dormammu) :rofl::rofl:

Ce problème a disparu avec la solution suivante décrite à la fin :

Debug 1 : bundle db:create affiche, également dans les logs au premier démarrage :


OID 21096 inconnu : impossible de reconnaître le type de ‘embeddings’. Il sera traité comme String.
worker pngquant : pngquant introuvable ; veuillez fournir le binaire approprié ou désactiver ce worker (argument --no-pngquant ou :pngquant => false via les options)
worker oxipng : oxipng introuvable ; veuillez fournir le binaire approprié ou désactiver ce worker (argument --no-oxipng ou :oxipng => false via les options)
worker jhead : jhead introuvable, jpegtran introuvable ; veuillez fournir le binaire approprié ou désactiver ce worker (argument --no-jhead ou :jhead => false via les options)
worker jpegoptim : jpegoptim introuvable ; veuillez fournir le binaire approprié ou désactiver ce worker (argument --no-jpegoptim ou :jpegoptim => false via les options)

Debug 2 : Une commande magick avec des fichiers affiche :

aucun délégué de décodage pour ce format d’image

Ce dernier problème est mentionné ici.

La solution est ici (installe magick avec les plugins de formats) :

t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" && \
rm "$t"

Après cela, ma taille de téléchargement peut atteindre 518 Ko. Pas au-dessus. Ceci est uniquement pour les images. Tous les autres documents, audio, vidéo téléchargés fonctionnent.

Solution temporaire pour le problème restant :
J’ai regardé dans les paramètres d’administration, discourse.conf, nginx/sites-enables/discourse.conf, dans le dossier git. Finalement, dans AdminPanel/Parameters/Files, j’ai désactivé “Composer media optimization image enabled”, puis tout fonctionne bien. Je peux télécharger n’importe quelle image.

Oui, IMEI est presque la même solution que d’utiliser brew, mais je suis sûr que cela ne prendra pas environ 2 Go de disque :rofl::rofl::sob::sob::sob::face_with_symbols_on_mouth::face_with_symbols_on_mouth::face_with_symbols_on_mouth:

Je vais vérifier votre solution pour la taille maximale des fichiers lors des téléchargements.

Je cherche également une solution pour envoyer des e-mails “gratuitement” (je suis à un stade précoce et je ne veux pas contracter mailtrap/mailgun/etc…)

Pourquoi n’installez-vous pas un serveur de messagerie ? J’ai le mien et j’ai scripté l’installation. Dites-moi si vous êtes intéressé.

Bien sûr ! Envoyez-moi les instructions ou le dépôt Git par DM ! :grinning_face_with_smiling_eyes:

J’ai arrêté d’utiliser des serveurs de messagerie auto-hébergés il y a de nombreuses années…

Lorsque vous exécutez rake assets:precompile, il est indiqué No such file or directory - brotli, installez-le simplement avec un gestionnaire de paquets.

2 « J'aime »

J’ai constaté que cela génère cette erreur :

bundler : échec du chargement de la commande : puma (/home/mry/.rbenv/versions/3.4.6/bin/puma)
/home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cluster.rb:472:in `Puma::Cluster#run': undefined method `wait_readable' for nil (NoMethodError)

            if read.wait_readable([0, @next_check - Time.now].max)
                   ^^^^^^^^^^^^^^
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/launcher.rb:202:in `Puma::Launcher#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/lib/puma/cli.rb:73:in `Puma::CLI#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/puma-7.0.4/bin/puma:10:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in `Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/puma:25:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `Kernel.load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `Bundler::CLI::Exec#kernel_load'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `Bundler::CLI::Exec#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `Bundler::CLI#exec'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `Bundler::Thor::Command#run'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `Bundler::Thor::Invocation#invoke_command'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `Bundler::Thor.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `Bundler::CLI.dispatch'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `Bundler::Thor::Base::ClassMethods#start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `Bundler::CLI.start'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:28:in `block in <top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in `Bundler.with_friendly_errors'
        from /home/mry/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/exe/bundle:20:in `<top (required)>'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in `Kernel#load'
        from /home/mry/.rbenv/versions/3.4.6/bin/bundle:25:in `<main>'

Puis Puma redémarre tout seul. Que dois-je faire pour éviter cela ?

Modifié : Cela semble être un problème appartenant à Puma depuis Ruby 3.4.0. Résolu en désactivant YJIT.

Utilisez ensuite la version 3.3.7. C’est la version que j’utilise.

Je suis trop paresseux pour retélécharger les gems, je désactive simplement YJIT en continuant à utiliser 3.4.6.