Serve Discourse from a subfolder (path prefix) instead of a subdomain

its works for me too

After following the above-mentioned steps to use discourse in a subfolder, now am getting a new error posted below :

Refused to apply style from '<URL>' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Because of this error, the CSS files of the discourse are not loading and the page is blank. Can someone please help me with this?

Hi, my forum is installed on community.example.com now i want it to move on example.com/community (forum is already ruining) now i have added the env section and run section to yml , can someone answer my queries

  1. What will i add in $http_your_original_ip_header ?
  2. The old domain is community.example.com in DISCOURSE_HOSTNAME: do i have to change it ?
  3. What will be "proxy_pass http://discourse; " section in run
1 Like

Nothing, that should be copied as written.

That should also be copied as written

Yes, it should now be example.com

4 Likes

After many rebuild it is working fine now , just small issue SSL is not working , Not using any ssl template how to get SSL working

1 Like

Did you set the LETSENCRYPT_ACCOUNT_EMAIL?

Also, if you have rebuilt more than five (?) times, you’ve got the rate limit and won’t be able to get a certificate for that domain name for a week.

2 Likes

My experience:

force https -> checked

I also had to proxy the /assets to subfolder/assets else it would throw 404 for *.js.map

… and of course $http_your_original_ip_header is supposed to be $proxy_add_x_forwarded_for by default.

2 Likes

Hello,

Have someone tried to undo the subfolder configuration for a running Discourse instance?

I have configured an instance to use this configuration, for a subfolder like /forum, and it was working. But finally, we decided to use the subdomain option, so I tried to undo all the changes, this is, removing the DISCOURSE_RELATIVE_URL_ROOT variable and the run section, and typing the default one:

run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

And when the application is rebuilt, the following screen is shown when you try to access to the URL (without the /forum):

And if I try to go to the /forum, the following screen is rendered:

So I don’t know what other changes are needed in order to get it working again.

Regards,
Miguel.

1 Like

What I would have done is backup and restore to a new server. That would have left your existing server working until you’d been able to test the new one. And since it’s on a new subdomain, it would have been much easier to do it that way. But that doesn’t help you.

Did you do this step in reverse?

I think you’ll need to do

  RAILS_ENV=production bundle exec script/discourse remap '/forum/uploads' '/uploads' 

but that doesn’t explain the “Oops” error. The place to look are the logs in

 /var/discourse/shared/standalone/logs/var-log/nginx/

and

 /var/discourse/shared/standalone/logs/rails/production.log

I typed both of those, so you might need to adjust things if I got it wrong.

Happy to help here as much as possible, but if this counts as an emergency that you have a budget for, you can contact me directly.

3 Likes

how to make social logins work , i mean now what will be authorized callback uri

DISCOURSE_HOSTNAME: example.com
DISCOURSE_RELATIVE_URL_ROOT: /forum

will it be example.com or forum.example.com or example.com/forum( google and fb not accepting this url)

1 Like

According to Configuring Facebook login for Discourse

The callback url is https://discourse.example.com/auth/facebook/callback for a subfolder it would be https://discourse.example.com/forum/auth/facebook/callback

2 Likes

App went okay but then failed https://example.com/community/auth/failure?message=no_authorization_code&origin=https%3A%2F%2Fexample.com%2Fcommunity%2F&strategy=facebook#=

Sorry, there was an error authorizing your account. Please try again.

I am pretty sure that means that you have the subfolder part all done correctly and now you need to fix up the Facebook part, which is considerably more difficult.

1 Like

Thank you so much for your response @pfaffman, I really appreciate it.

Digging deeper into this, I’ve tried to revert all the changes in /etc/nginx/conf.d/discourse.conf inside the container, entering into it with /var/discourse/launcher enter app.
After reverting the discourse.conf file I did a rebuild, using /var/discourse/launcher rebuild app.
I’ve tried to access to the website, without /forum but the same "Oops " error appear (the first image I attached in my previous comment).

Also, I’ve tried to execute (inside the container):

RAILS_ENV=production bundle exec script/discourse remap '/forum/uploads' '/uploads' 

inside the container, but another error has appeared (I think is the same that @ahmed_khan1 has highlighted):

bundler: failed to load command: script/discourse (script/discourse)
Traceback (most recent call last):
	73: from /usr/local/bin/bundle:25:in `<main>'
	72: from /usr/local/bin/bundle:25:in `load'
	71: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:36:in `<top (required)>'
	70: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
	69: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:48:in `block in <top (required)>'
	68: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:25:in `start'
	67: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	66: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:31:in `dispatch'
	65: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	64: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	63: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	62: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:484:in `exec'
	61: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:23:in `run'
	60: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `kernel_load'
	59: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `load'
	58: from script/discourse:290:in `<top (required)>'
	57: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
	56: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
	55: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
	54: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
	53: from script/discourse:37:in `remap'
	52: from script/discourse:270:in `load_rails'
	51: from script/discourse:270:in `require'
	50: from /var/www/discourse/config/environment.rb:7:in `<top (required)>'
	49: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/railtie.rb:207:in `method_missing'
	48: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/railtie.rb:207:in `public_send'
	47: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/application.rb:391:in `initialize!'
	46: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:60:in `run_initializers'
	45: from /usr/local/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	44: from /usr/local/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	43: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	42: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `call'
	41: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each'
	40: from /usr/local/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	39: from /usr/local/lib/ruby/2.7.0/tsort.rb:415:in `each_strongly_connected_component_from'
	38: from /usr/local/lib/ruby/2.7.0/tsort.rb:415:in `call'
	37: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:50:in `tsort_each_child'
	36: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:50:in `each'
	35: from /usr/local/lib/ruby/2.7.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
	34: from /usr/local/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	33: from /usr/local/lib/ruby/2.7.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
	32: from /usr/local/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	31: from /usr/local/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	30: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	29: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:32:in `run'
	28: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:32:in `instance_exec'
	27: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:633:in `block in <class:Engine>'
	26: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:633:in `each'
	25: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:634:in `block (2 levels) in <class:Engine>'
	24: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:680:in `load_config_initializer'
	23: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:205:in `instrument'
	22: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:681:in `block in load_config_initializer'
	21: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:326:in `load'
	20: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	19: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:326:in `block in load'
	18: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
	17: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
	16: from /var/www/discourse/config/initializers/004-message_bus.rb:122:in `<main>'
	15: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/model_schema.rb:380:in `table_exists?'
	14: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:283:in `connection'
	13: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:327:in `retrieve_connection'
	12: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1128:in `retrieve_connection'
	11: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:428:in `connection'
	10: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:588:in `checkout'
	 9: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:866:in `acquire_connection'
	 8: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:905:in `try_to_checkout_new_connection'
	 7: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:926:in `checkout_new_connection'
	 6: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `new_connection'
	 5: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `public_send'
	 4: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
	 3: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:78:in `new_client'
	 2: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `connect'
	 1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `new'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize': connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "discourse" (PG::ConnectionBad)
	71: from /usr/local/bin/bundle:25:in `<main>'
	70: from /usr/local/bin/bundle:25:in `load'
	69: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:36:in `<top (required)>'
	68: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
	67: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/exe/bundle:48:in `block in <top (required)>'
	66: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:25:in `start'
	65: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	64: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:31:in `dispatch'
	63: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	62: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	61: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	60: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli.rb:484:in `exec'
	59: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:23:in `run'
	58: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `kernel_load'
	57: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.4/lib/bundler/cli/exec.rb:58:in `load'
	56: from script/discourse:290:in `<top (required)>'
	55: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
	54: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
	53: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
	52: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
	51: from script/discourse:37:in `remap'
	50: from script/discourse:270:in `load_rails'
	49: from script/discourse:270:in `require'
	48: from /var/www/discourse/config/environment.rb:7:in `<top (required)>'
	47: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/railtie.rb:207:in `method_missing'
	46: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/railtie.rb:207:in `public_send'
	45: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/application.rb:391:in `initialize!'
	44: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:60:in `run_initializers'
	43: from /usr/local/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
	42: from /usr/local/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
	41: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
	40: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `call'
	39: from /usr/local/lib/ruby/2.7.0/tsort.rb:347:in `each'
	38: from /usr/local/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
	37: from /usr/local/lib/ruby/2.7.0/tsort.rb:415:in `each_strongly_connected_component_from'
	36: from /usr/local/lib/ruby/2.7.0/tsort.rb:415:in `call'
	35: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:50:in `tsort_each_child'
	34: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:50:in `each'
	33: from /usr/local/lib/ruby/2.7.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
	32: from /usr/local/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
	31: from /usr/local/lib/ruby/2.7.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
	30: from /usr/local/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	29: from /usr/local/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
	28: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	27: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:32:in `run'
	26: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/initializable.rb:32:in `instance_exec'
	25: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:633:in `block in <class:Engine>'
	24: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:633:in `each'
	23: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:634:in `block (2 levels) in <class:Engine>'
	22: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:680:in `load_config_initializer'
	21: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:205:in `instrument'
	20: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.4.1/lib/rails/engine.rb:681:in `block in load_config_initializer'
	19: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:326:in `load'
	18: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:299:in `load_dependency'
	17: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:326:in `block in load'
	16: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
	15: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
	14: from /var/www/discourse/config/initializers/004-message_bus.rb:122:in `<main>'
	13: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/model_schema.rb:380:in `table_exists?'
	12: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:283:in `connection'
	11: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:327:in `retrieve_connection'
	10: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1128:in `retrieve_connection'
	 9: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:428:in `connection'
	 8: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:588:in `checkout'
	 7: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:866:in `acquire_connection'
	 6: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:905:in `try_to_checkout_new_connection'
	 5: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:926:in `checkout_new_connection'
	 4: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `new_connection'
	 3: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:882:in `public_send'
	 2: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
	 1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:77:in `new_client'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in `rescue in new_client': connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "discourse" (ActiveRecord::NoDatabaseError)

So I’m not sure what more I can do :confused:

1 Like

How to edit nginx/discourse.conf

I assume any changes to discourse.conf inside the container get reverted by doing a rebuild anyway.

To keep changes you must some-how add them to your container configuration - e.g. web_only.yml:

# […]
## Remember, this is YAML syntax - you can only have one block with a name
run:
  - exec: echo "Beginning of custom commands"
# […]
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: $proxy_add_x_forwarded_for
      to: $http_x_real_ip
      global: true
# […]

How to debug a sub-folder Discourse install

In a Discourse sub-folder install a call to Discourse goes like this:
example.org/forum[External proxy for example.org]/path-to-discourse/discourse/shared/web-only/nginx.http.sock[Nginx in Discourse web-container]

So if there is an error, we must first locate it:

  • External proxy
  • Nginx in Discourse container
  • Discourse itself

External proxy

  • Call it in a browser and check result.
  • Check error logs of external proxy.

Nginx in Discourse container

  1. SSH into your webserver.
  2. Directly connect to socket via curl.
  3. Debug curl output and logs of Nginx in Discourse

Important: use http url – and not https.

curl -I --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock http://www.example.org/forum/

If this works, try a real call like:

curl --unix-socket /path-to-discourse/discourse/shared/web-only/nginx.http.sock \
-H "user-agent: Chrome/88.0.4324.182" \
-H "Accept-Encoding: gzip" \
http://www.example.org/forum/t/test-thread/12345 --output test-encoded.html.gz
3 Likes

He @pfaffman and @rrit,

I have some more insights about the problem. In the Discourse log, as @pfaffman said:

the error thrown is:

Started GET "/" for XX.XX.XX.XX at 2022-02-07 10:51:02 +0000
Processing by ListController#latest as HTML
  Rendered list/list.erb within layouts/application (Duration: 12.4ms | Allocations: 4137)
  Rendered layout layouts/application.html.erb (Duration: 23.6ms | Allocations: 8794)
Completed 500 Internal Server Error in 343ms (ActiveRecord: 0.0ms | Allocations: 62982)
ActionView::Template::Error (undefined method `[]' for nil:NilClass)
lib/svg_sprite/svg_sprite.rb:501:in `block in custom_icons'
lib/svg_sprite/svg_sprite.rb:500:in `each'
lib/svg_sprite/svg_sprite.rb:500:in `custom_icons'
lib/svg_sprite/svg_sprite.rb:275:in `block in all_icons'
lib/distributed_cache.rb:25:in `defer_get_set'
lib/svg_sprite/svg_sprite.rb:516:in `get_set_cache'
lib/svg_sprite/svg_sprite.rb:268:in `all_icons'
lib/svg_sprite/svg_sprite.rb:337:in `bundle'
lib/svg_sprite/svg_sprite.rb:285:in `block in version'
lib/distributed_cache.rb:25:in `defer_get_set'
lib/svg_sprite/svg_sprite.rb:516:in `get_set_cache'
lib/svg_sprite/svg_sprite.rb:284:in `version'
lib/svg_sprite/svg_sprite.rb:290:in `path'
app/helpers/application_helper.rb:586:in `client_side_setup_data'
app/views/layouts/application.html.erb:61
lib/topic_list_responder.rb:13:in `block (2 levels) in respond_with_list'
lib/topic_list_responder.rb:9:in `respond_with_list'
app/controllers/list_controller.rb:103:in `block (2 levels) in <class:ListController>'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
ActionController::RoutingError (No route matches [GET] "/service-worker-cce5f3834b22e40a87291d786315f7def48e1456ba24fe116a16d5a38af4012a.js")
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
ActionController::RoutingError (No route matches [GET] "/service-worker-cce5f3834b22e40a87291d786315f7def48e1456ba24fe116a16d5a38af4012a.js")
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
Job exception: uninitialized constant DiscourseAlgolia::UserIndexer::SETTINGS
Did you mean?  String

Is this ringing a bell for you?

Btw, @rrit I’ve tried to search the nginx.http.sock file, in the folder you suggested and also in the whole project, but I didn’t found, so I was not able to try what you said :confused:

Regards,
Miguel.

1 Like

At this one I can’t really tell what you’ve done or what you’re trying to do.

I guess you don’t have a backup of your last working database and yml file?

I think what I would do is try to get back to your last setup, take a backup and then start over on a test site.

1 Like

Sorry, I was referencing to a setup like this:

Container config web_only.yml:

templates:
# […]
  - "templates/web.socketed.template.yml"
# […]
#expose:
#  - "80:80"   # http
#  - "443:443" # https

External nginx-site.conf:

server {
    listen 443 ssl default_server;
# […]
    location ~ ^/forum {
        proxy_pass http://unix:/path-to-discourse/discourse/shared/web-only/nginx.http.sock:;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Accept-Encoding $http_accept_encoding;
    }
# […]
}
2 Likes

Thanks for the response @pfaffman. To be honest, I don’t have a backup because it was a test instance. So it’s not a big deal and I was able to start a new instance with the subdomain approach.
But I’m still curious about the error I said when the command:

RAILS_ENV=production bundle exec script/discourse remap '/forum/uploads' '/uploads'

is executed.
Would you have any insight about the error?

1 Like

So you want to be able to switch back and forth between a subfolder and not subfolder installation? I don’t recommend it. And mostly nobody thinks that a subfolder installation is a good idea.

2 Likes