Restore on stable: fail on mini_racer 0.1.3

I have a backup that I need to restore on a fresh discourse instance but for some reason it’s a discourse 1.6.0 (postgresql 9.3) backup (actually I’m not sure what the version was, the version tag is 20160405172827). And the original instance doesn’t exist anymore), so I am trying to restore it on a fresh one.

  • If I go for the tests-passed branch (currently 1.7.0 beta), the restore fails: some tables are missing. This is unsurprising (but maybe there is some workaround here that I’m missing).
  • If I go for the stable branch (or actually any older revision) … the bootstrap fails trying to install mini_racer 0.1.3 (missing v8.h).

Developing a bit on the last failure, here is the full output of launcher bootstrap app:

And here is my app.yml:

##
## After making changes to this file, you MUST rebuild for any changes
## to take effect in your live Discourse instance:
##
## /var/discourse/launcher rebuild app
##
## Make sure to obey YAML syntax! You can use this site to help check:
## http://www.yamllint.com/

## this is the all-in-one, standalone Discourse Docker container template

# You may add rate limiting by uncommenting the web.ratelimited template.
# Out of the box it allows 12 reqs a second per ip, and 100 per minute per ip
# This is configurable by amending the params in this file

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"

## which TCP/IP ports should this container expose?
expose:
  - "8002:80"   # fwd host port 80   to container port 80 (http)

params:
  db_default_text_search_config: "pg_catalog.french"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ##
  ## On 1GB installs set to 128MB (to leave room for other processes)
  ## on a 4GB instance you may raise to 1GB
  db_shared_buffers: "256MB"
  #
  ## Set higher on large instances it defaults to 10MB, for a 3GB install 40MB is a good default
  ## this improves sorting performance, but adds memory usage per-connection
  db_work_mem: "40MB"
  #
  ## Which Git revision should this container use? (default: tests-passed)
  version: stable

env:
  LANG: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: fr

  ## TODO: How many concurrent web requests are supported?
  ## With 2GB we recommend 3-4 workers, with 1GB only 2
  UNICORN_WORKERS: 4

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'redacted'

  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: 'redacted'

  ## TODO: The mailserver this Discourse instance will use
  DISCOURSE_SMTP_ADDRESS: redacted
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: redacted
  DISCOURSE_SMTP_PASSWORD: redacted
  DISCOURSE_SMTP_ENABLE_START_TLS: true

  ## The CDN address for this Discourse instance (configured to pull)
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## These containers are stateless, all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/app
      guest: /shared
  - volume:
      host: /var/discourse/shared/app/log/var-log
      guest: /var/log

## The docker manager plugin allows you to one-click upgrade Discourse
## http://discourse.example.com/admin/docker
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/cpradio/discourse-plugin-checklist.git
          - git clone https://github.com/discourse/discourse-tagging.git
          #- git clone https://github.com/scossar/discourse-header-links.git



## Remember, this is YAML syntax - you can only have one block with a name
run:
  - exec: echo "Beginning of custom commands"

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

  ## If you want to configure password login for root, uncomment and change:
  ## Use only one of the following lines:
  #- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
  #- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root

  ## If you want to authorized additional users, uncomment and change:
  #- exec: ssh-import-id username
  #- exec: ssh-import-id anotherusername

  - exec: echo "End of custom commands"

I read through some other topics with some related problems (postresql 9.3 template, …) but I couldn’t get anything to work. Any hint?

I read here that newer discourse versions should be able to cope with old backups and restore them but I can’t get anything more than that (on tests-passed):

[2016-10-30 05:01:31] 'some_user' has started the restore!
[2016-10-30 05:01:31] Marking restore as running...
[2016-10-30 05:01:31] Restore process was cancelled!
[2016-10-30 05:01:31] Trying to rollback...
[2016-10-30 05:01:31] There was no need to rollback
[2016-10-30 05:01:31] Notifying 'blabla' of the end of the restore...

Okay, so finally I managed to restore my backup on a tests-passed instance with the command line (I did stop/restart to clean up everything after the restore) but now I can’t login anymore. Actually, I don’t get any error message, I type my credentials and land in the same unidentified state. Looking at the logs, the only thing I see is:

Processing by StaticController#enter as HTML
  Parameters: {"username"=>"user_name", "password"=>"[FILTERED]", "redirect"=>"https://url.com/"}
Redirected to http://url.com/
Completed 302 Found in 5ms (ActiveRecord: 0.0ms)

How is SSL? The old site had? The new have?

The old had an SSL and the new also has SSL (not managed by discourse, it’s let’s encrypt on my front-end nginx). As a side note I temporarily changed the host name (to get it up and running while no one sees it), but this shouldn’t be the issue since I remaped the host and every broken image links are now fixed.

Can you paste the location block on the outside nginx?

Here it is (yeah I should have gone for socketed setup but I ran into trouble a while ago):

    location / {
        proxy_pass http://127.0.0.1:8002;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Actually thanks for the hint, looking there solved my problem! I added:

proxy_set_header        X-Forwarded-Proto $scheme;

As a side note I still couldn’t build a container based on the stable branch… It my be worth to look at.

1 Like

I am using the stable branch. And I can not rebuild container any more due to mini_racer.

And I can not bootstrap a new container with stable branch any more due to mini_racer.

Actually, my problem turned out to be more or less unrelated to the mini_racer bug, as I got my problem solved, maybe the discussion about mini racer should move to this topic.

Note to moderators: I can’t mark my last post as being a solution, it constantly toggles off.

1 Like

Try again. It should work now :wink:

4 Likes

This topic was automatically closed after 2778 days. New replies are no longer allowed.