Upgrade doesn't work when installed with subfolder

AI-generated summary

Upgrade Issue with Subfolder Installation

User wglass reported an issue with upgrading Discourse when installed in a subfolder. The upgrade link would redirect to the wrong URL, and manual navigation to the upgrade page would result in a blank list with two 404 errors. wglass provided their app.yml configuration, which included custom commands and rewriting rules.

codinghorror suggested that the issue may not have been noticed before because hosted customers don’t use this page. As a temporary solution, codinghorror recommended using the SSH method to update the site, which wglass confirmed worked.

The issue has since been fixed, as reported by neil, with a commit to the docker_manager repository: https://github.com/discourse/docker_manager/commit/58ed07e241cf3049de89522365927ee646ada25f.

I’ve installed my copy of Discourse in a subfolder, per instructions here:

I went to upgrade today to version 1.4. When I click “admin” / “upgrade”, I go to the wrong URL. When I manually go to /subfolder/admin/upgrade I see the menu but no list of upgrades. Looking under the hood there are two 404’s

GET /session/csrf
GET /admin/docker/repos

Suggestions?

2 Mi Piace

My question is: how has nobody noticed this before?

One thing to note – I have two subfolders not one. If it’s helpful, here’s the run section of my app.yml.

run:
  - exec: echo "Beginning of custom commands"

  - exec:
        cd: $home
        cmd:
          - mkdir -p public/ep/support
          - cd public/ep/support && ln -s ../../uploads && ln -s ../../backups
          - rm public/uploads
          - rm public/backups
  - replace:
       global: true
       filename: /etc/nginx/conf.d/discourse.conf
       from: proxy_pass http://discourse;
       to: |
          rewrite ^/(.*)$ /ep/support/$1 break;
          proxy_pass http://discourse;
  - replace:
       filename: /etc/nginx/conf.d/discourse.conf
       from: etag off;
       to: |
          etag off;
          location /ep/support {
             rewrite ^/ep/support/?(.*)$ /$1;
          }
  - replace:
         filename: /etc/nginx/conf.d/discourse.conf
         from: $proxy_add_x_forwarded_for
         to: $http_fastly_client_ip
         global: true

It is possible we did not notice because our hosted customers don’t use this page.

We should look into this @neil in the meantime, use the SSH method to update your site. SSH in and do the three commands:

cd /var/discourse
git pull
./launcher rebuild app
3 Mi Piace

Thanks. The SSH method worked.

3 Mi Piace

This bug was fixed.

https://github.com/discourse/docker_manager/commit/58ed07e241cf3049de89522365927ee646ada25f

3 Mi Piace