Bonjour,
Nous disposons d’un forum Discourse pour la communauté Scala destiné aux utilisateurs, qui fonctionnait parfaitement depuis plusieurs années :
La semaine dernière, j’ai effectué une mise à niveau vers la dernière version en utilisant « ./launcher rebuild app ». Depuis lors, nous rencontrons très fréquemment l’erreur « Oops - Error 500 ». Elle apparaît lorsque le site a déjà été visité. Dans une fenêtre de navigation privée, tout fonctionne correctement. Ainsi, vider les données du site dans le navigateur résout le problème pendant un certain temps, mais le problème réapparaît ensuite.
J’ai essayé de mettre à jour Discourse deux fois depuis le tableau de bord, puis de le reconstruire à nouveau en utilisant « ./launcher rebuild app », mais le problème persiste.
Dans log/rails/production.log, je ne vois que :
Started GET "/" for 127.0.0.1 at 2026-09-03 09:57:56 +0000
Processing by ListController#latest as HTML
Rendered layout layouts/application.html.erb (Duration: 391.6ms | GC: 229.5ms)
Completed 500 Internal Server Error in 474ms (Views: 392.5ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 236.0ms)
Avez-vous une idée de ce qui ne va pas et de ce que je pourrais faire pour résoudre le problème ?
Merci beaucoup !
Fabien
En creusant davantage, la suppression du cookie _t fait disparaître l’« erreur 500 », mais celle-ci réapparaît après la connexion, environ une heure plus tard.
v2026.9.0 n’a pas encore été publié — faites-vous référence à la version de développement / la dernière version ?
Je n’ai pas défini de version spécifique, donc je suppose que par défaut, il s’agit de la dernière version (selon "tests-passed" is now "latest" ).
Sur le tableau de bord, c’est la version que j’obtiens en bas de page.
Dans /logs, pouvez-vous trouver l’erreur 500 et partager l’erreur ainsi que sa pile d’appels (backtrace) ?
Je n’ai que ça dans les journaux (production.log), rien d’autre :
Started GET "/" for 127.0.0.1 at 2026-09-07 08:05:50 +0000
Processing by ListController#latest as HTML
Rendered layout layouts/application.html.erb (Duration: 164.0ms | GC: 13.5ms)
Completed 500 Internal Server Error in 248ms (Views: 164.7ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 15.9ms)
Je n’ai pas trouvé de moyen d’ajouter plus de débogage.
Au fait, j’ai aussi essayé d’utiliser /safe-mode, mais cela ne change rien…
Elle est sur la route /logs, sauf si celle-ci échoue également.
Désolé, je regardais les journaux du conteneur.
Voici ceux-ci :
Message (18 copies signalées)
PG::InvalidTextRepresentation (ERROR: invalid input syntax for type inet: "unix:"
LINE 7: client_ip = 'unix:',
^
)
lib/mini_sql_multisite_connection.rb:109:in 'MiniSqlMultisiteConnection#run'
app/models/user_auth_token.rb:244:in 'UserAuthToken#rotate!'
lib/auth/default_current_user_provider.rb:260:in 'Auth::DefaultCurrentUserProvider#refresh_session'
lib/current_user.rb:52:in 'CurrentUser#refresh_session'
app/controllers/application_controller.rb:91:in 'ApplicationController#perform_refresh_session'
app/controllers/application_controller.rb:444:in 'block in ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:444:in 'ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:1126:in 'ApplicationController#ensure_dont_cache_page'
lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call'
lib/middleware/crawler_hooks.rb:13:in 'Middleware::CrawlerHooks#call'
lib/content_security_policy/middleware.rb:12:in 'ContentSecurityPolicy::Middleware#call'
lib/middleware/anonymous_cache.rb:431:in 'Middleware::AnonymousCache#call'
lib/middleware/csp_script_nonce_injector.rb:13:in 'Middleware::CspScriptNonceInjector#call'
lib/middleware/track_view_session_id_injector.rb:12:in 'Middleware::TrackViewSessionIdInjector#call'
config/initializers/008-rack-cors.rb:14:in 'Discourse::Cors#call'
lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call'
config/initializers/100-quiet_logger.rb:20:in 'DiscourseRackQuietAssetsLogger#call'
config/initializers/100-silence_logger.rb:29:in 'SilenceLogger#call'
lib/middleware/enforce_hostname.rb:23:in 'Middleware::EnforceHostname#call'
lib/middleware/request_tracker.rb:381:in 'Middleware::RequestTracker#call'
lib/middleware/overload_protections.rb:18:in 'Middleware::OverloadProtections#call'
lib/middleware/processing_request.rb:14:in 'Middleware::ProcessingRequest#call'
Backtrace
rack-mini-profiler (4.0.1) lib/patches/db/pg/alias_method.rb:112:in 'PG::Connection#exec'
rack-mini-profiler (4.0.1) lib/patches/db/pg/alias_method.rb:112:in 'PG::Connection#async_exec'
mini_sql (1.6.0) lib/mini_sql/postgres/connection.rb:217:in 'MiniSql::Postgres::Connection#run'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:38:in 'block in MiniSql::ActiveRecordPostgres::Connection#run'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:34:in 'block in MiniSql::ActiveRecordPostgres::Connection#with_lock'
activesupport (8.0.5.1) lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:34:in 'MiniSql::ActiveRecordPostgres::Connection#with_lock'
mini_sql (1.6.0) lib/mini_sql/active_record_postgres/connection.rb:38:in 'MiniSql::ActiveRecordPostgres::Connection#run'
lib/mini_sql_multisite_connection.rb:109:in 'MiniSqlMultisiteConnection#run'
mini_sql (1.6.0) lib/mini_sql/postgres/connection.rb:196:in 'MiniSql::Postgres::Connection#exec'
app/models/user_auth_token.rb:244:in 'UserAuthToken#rotate!'
lib/auth/default_current_user_provider.rb:260:in 'Auth::DefaultCurrentUserProvider#refresh_session'
lib/current_user.rb:52:in 'CurrentUser#refresh_session'
app/controllers/application_controller.rb:91:in 'ApplicationController#perform_refresh_session'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:361:in 'block in ActiveSupport::Callbacks::CallTemplate::MethodCall#make_lambda'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:207:in 'ActiveSupport::Callbacks::Filters::After#call'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:563:in 'block in ActiveSupport::Callbacks::CallbackSequence#invoke_after'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:563:in 'Array#each'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:563:in 'ActiveSupport::Callbacks::CallbackSequence#invoke_after'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:134:in 'block in ActiveSupport::Callbacks#run_callbacks'
app/controllers/application_controller.rb:444:in 'block in ApplicationController#with_resolved_locale'
i18n (1.15.2) lib/i18n.rb:383:in 'I18n::Base#with_locale'
app/controllers/application_controller.rb:444:in 'ApplicationController#with_resolved_locale'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks'
app/controllers/application_controller.rb:1126:in 'ApplicationController#ensure_dont_cache_page'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:140:in 'ActiveSupport::Callbacks#run_callbacks'
actionpack (8.0.5.1) lib/abstract_controller/callbacks.rb:260:in 'AbstractController::Callbacks#process_action'
actionpack (8.0.5.1) lib/action_controller/metal/rescue.rb:27:in 'ActionController::Rescue#process_action'
actionpack (8.0.5.1) lib/action_controller/metal/instrumentation.rb:76:in 'block in ActionController::Instrumentation#process_action'
activesupport (8.0.5.1) lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'
activesupport (8.0.5.1) lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
activesupport (8.0.5.1) lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'
actionpack (8.0.5.1) lib/action_controller/metal/instrumentation.rb:75:in 'ActionController::Instrumentation#process_action'
actionpack (8.0.5.1) lib/action_controller/metal/params_wrapper.rb:259:in 'ActionController::ParamsWrapper#process_action'
activerecord (8.0.5.1) lib/active_record/railties/controller_runtime.rb:39:in 'ActiveRecord::Railties::ControllerRuntime#process_action'
actionpack (8.0.5.1) lib/abstract_controller/base.rb:152:in 'AbstractController::Base#process'
actionview (8.0.5.1) lib/action_view/rendering.rb:40:in 'ActionView::Rendering#process'
rack-mini-profiler (4.0.1) lib/mini_profiler/profiling_methods.rb:116:in 'block in ActionController::Base#profile_method'
actionpack (8.0.5.1) lib/action_controller/metal.rb:252:in 'ActionController::Metal#dispatch'
actionpack (8.0.5.1) lib/action_controller/metal.rb:335:in 'ActionController::Metal.dispatch'
actionpack (8.0.5.1) lib/action_dispatch/routing/route_set.rb:67:in 'ActionDispatch::Routing::RouteSet::Dispatcher#dispatch'
actionpack (8.0.5.1) lib/action_dispatch/routing/route_set.rb:50:in 'ActionDispatch::Routing::RouteSet::Dispatcher#serve'
actionpack (8.0.5.1) lib/action_dispatch/routing/mapper.rb:32:in 'block in class:Constraints'
actionpack (8.0.5.1) lib/action_dispatch/routing/mapper.rb:62:in 'ActionDispatch::Routing::Mapper::Constraints#serve'
actionpack (8.0.5.1) lib/action_dispatch/journey/router.rb:53:in 'block in ActionDispatch::Journey::Router#serve'
actionpack (8.0.5.1) lib/action_dispatch/journey/router.rb:133:in 'block in ActionDispatch::Journey::Router#find_routes'
actionpack (8.0.5.1) lib/action_dispatch/journey/router.rb:126:in 'Array#each'
actionpack (8.0.5.1) lib/action_dispatch/journey/router.rb:126:in 'ActionDispatch::Journey::Router#find_routes'
actionpack (8.0.5.1) lib/action_dispatch/journey/router.rb:34:in 'ActionDispatch::Journey::Router#serve'
actionpack (8.0.5.1) lib/action_dispatch/routing/route_set.rb:908:in 'ActionDispatch::Routing::RouteSet#call'
lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call'
lib/middleware/crawler_hooks.rb:13:in 'Middleware::CrawlerHooks#call'
rack (2.2.24) lib/rack/tempfile_reaper.rb:15:in 'Rack::TempfileReaper#call'
rack (2.2.24) lib/rack/conditional_get.rb:27:in 'Rack::ConditionalGet#call'
rack (2.2.24) lib/rack/head.rb:12:in 'Rack::Head#call'
actionpack (8.0.5.1) lib/action_dispatch/http/permissions_policy.rb:38:in 'ActionDispatch::PermissionsPolicy::Middleware#call'
lib/content_security_policy/middleware.rb:12:in 'ContentSecurityPolicy::Middleware#call'
lib/middleware/anonymous_cache.rb:431:in 'Middleware::AnonymousCache#call'
lib/middleware/csp_script_nonce_injector.rb:13:in 'Middleware::CspScriptNonceInjector#call'
lib/middleware/track_view_session_id_injector.rb:12:in 'Middleware::TrackViewSessionIdInjector#call'
config/initializers/008-rack-cors.rb:14:in 'Discourse::Cors#call'
rack (2.2.24) lib/rack/session/abstract/id.rb:266:in 'Rack::Session::Abstract::Persisted#context'
rack (2.2.24) lib/rack/session/abstract/id.rb:260:in 'Rack::Session::Abstract::Persisted#call'
actionpack (8.0.5.1) lib/action_dispatch/middleware/cookies.rb:706:in 'ActionDispatch::Cookies#call'
actionpack (8.0.5.1) lib/action_dispatch/middleware/callbacks.rb:31:in 'block in ActionDispatch::Callbacks#call'
activesupport (8.0.5.1) lib/active_support/callbacks.rb:100:in 'ActiveSupport::Callbacks#run_callbacks'
actionpack (8.0.5.1) lib/action_dispatch/middleware/callbacks.rb:30:in 'ActionDispatch::Callbacks#call'
actionpack (8.0.5.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in 'ActionDispatch::DebugExceptions#call'
actionpack (8.0.5.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in 'ActionDispatch::ShowExceptions#call'
logster (2.21.0) lib/logster/middleware/reporter.rb:40:in 'Logster::Middleware::Reporter#call'
lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call'
railties (8.0.5.1) lib/rails/rack/logger.rb:41:in 'Rails::Rack::Logger#call_app'
railties (8.0.5.1) lib/rails/rack/logger.rb:29:in 'Rails::Rack::Logger#call'
config/initializers/100-quiet_logger.rb:20:in 'DiscourseRackQuietAssetsLogger#call'
config/initializers/100-silence_logger.rb:29:in 'SilenceLogger#call'
actionpack (8.0.5.1) lib
et
Message (209 copies signalées)
Exception de tâche : ERROR: invalid input syntax for type inet: "unix:"
LINE 2: SET ip_address = 'unix:'
^
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in 'PG::Connection#exec'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in 'PG::Connection#async_exec'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:217:in 'MiniSql::Postgres::Connection#run'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in 'block in MiniSql::ActiveRecordPostgres::Connection#run'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in 'block in MiniSql::ActiveRecordPostgres::Connection#with_lock'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.5.1/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in 'MiniSql::ActiveRecordPostgres::Connection#with_lock'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in 'MiniSql::ActiveRecordPostgres::Connection#run'
/var/www/discourse/lib/mini_sql_multisite_connection.rb:109:in 'MiniSqlMultisiteConnection#run'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:196:in 'MiniSql::Postgres::Connection#exec'
/var/www/discourse/app/models/user.rb:1142:in 'User.update_ip_address!'
/var/www/discourse/lib/auth/default_current_user_provider.rb:235:in 'block in Auth::DefaultCurrentUserProvider#current_user'
/var/www/discourse/lib/scheduler/defer.rb:135:in 'block in Scheduler::Deferrable#do_work'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-9.0.0/lib/rails_multisite/connection_management/null_instance.rb:54:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-9.0.0/lib/rails_multisite/connection_management.rb:23:in 'RailsMultisite::ConnectionManagement.with_connection'
/var/www/discourse/lib/scheduler/defer.rb:130:in 'Scheduler::Deferrable#do_work'
/var/www/discourse/lib/scheduler/defer.rb:116:in 'block (2 levels) in Scheduler::Deferrable#start_thread'
Utilisez-vous un type de proxy ? Pouvez-vous décrire l’architecture ?
Il semble que vous tentiez de passer la chaîne “unix:” dans le champ ip_address …
Il pourrait s’agir d’une mauvaise configuration en amont de Discourse.
Un problème similaire a été signalé et résolu ici, en lien avec Caddy :
@Falco @satonotdead
J’ai réussi à le corriger. J’ai attendu un bon moment pour m’assurer que c’était vraiment réparé, et cela semble le cas.
La configuration
Discourse s’exécute dans Docker et expose nginx sur un socket Unix (/var/discourse/shared/standalone/nginx.http.sock). Caddy est placé devant en tant que proxy inverse et transmet l’IP réelle du client via l’en-tête X-Real-IP.
Deux éléments ont dû être modifiés : la configuration nginx à l’intérieur du conteneur et la manière dont je lan…
Merci beaucoup pour l’aide !
J’ai exactement cette configuration :
Dans ce post, je vais vous montrer exactement comment exécuter Discourse derrière un proxy inverse Nginx. Tout en utilisant toujours les méthodes d’installation prises en charge.
Exigences :
Nom de domaine valide.
Certificat SSL valide.
Entrées DNS valides pointant vers le nom de domaine.
Serveur d’e-mails valide et fonctionnel ou fournisseur SMTP.
Proxy inverse Nginx fonctionnel et capacité à atteindre l’instance et à créer le certificat SSL pour une utilisation ultérieure.
VM ou conteneur L…
… sauf qu’il manquait la ligne « proxy_set_header X-Real-IP $remote_addr; ».
Donc, je suppose que cela pourrait y être lié.
Ça semble fonctionner correctement maintenant. Je vais faire d’autres tests et je ferai un retour demain pour voir si cela résout le problème.
Merci !