Not able to bootstrap fresh web or data container

My site was working fine until I found some peculiarities some days back, like I was not able to view any user’s profile page, including my own.
Then I decided to update from web interface, and found that it didn’t complete successfully.

Then decided to rebuild the container. Which failed with incomprehensible error msgs at my level.
Then I decided to take a fresh ‘web_only.yml’ and build upon it, after supplying it my particular domain and email details into it (but without any plugins that were working on my site till today). But it too failed.

Checked that even ‘rebuilding’ the data container also didn’t finish successfully.

What should I do?
Kindly do help. My site is down.

I’ve tried without any plugins also.

Have you done a

  git pull

If you do a rebuild it does that automatically, but if you bootstrap it skips that step.

1 Like

I successfully did git pull.
Also tried: bootstrap/rebuild and some other commands.
Also tried fresh yml.

Disk doctor logs attached here.
discourse-debug.txt (71.8 KB)

Note: IS this error msg on server level of any problem: Partition table entries are not in disk order.

What could’ve gone wrong.

Pls point me in one or two directions.

From your log

Failed to update Alternative Logos
about.json contains invalid values: Maximum discourse version is invalid
/var/www/discourse/app/models/remote_theme.rb:169:in `update_from_remote'

You need to remove or disable the Alternative Logos theme component. Enter your container via ./launcher enter app, then enter the Rails console via rails c, and then do Theme.all, note the id for the Alternative Logos component, and then do:

t = Theme.find(ID)
t.enabled = false
t.save
1 Like

Unless I missed something above, you might also be able to do a

 ./launcher start app

And then remove the theme component from the web interface and then rebuild.

@pmusaraj, would it be possible to just update that theme component without the stuff that breaks it, essentially just making it empty (maybe notifying the admin somehow?)

2 Likes

Thanks a lot a lot a lot. I really was desperate and was trying to create a whole new instance, and then install a new discourse installation from the same web_only.yml. But couldn’t complete this process yesterday.

But now, I’ll try both solutions and report back.

:pray: :pray:

It doesn’t start. Gives the following error:

>root@e2-2vcpu-8gb-mumbai-ubun2004:/var/discourse# ./launcher start web_only

+ /usr/bin/docker run --shm-size=512m --link data:data -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=3 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET= -e DISCOURSE_DB_HOST=data -e DISCOURSE_DB_PORT= -e DISCOURSE_MAXMIND_LICENSE_KEY=redacted
DISCOURSE_HOSTNAME=bathindahelper.com -e DISCOURSE_DEVELOPER_EMAILS=bathindahelper@gmail.com -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e 
DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=postmaster@mail.bathindahelper.com -e DISCOURSE_SMTP_PASSWORD= redacted LETSENCRYPT_ACCOUNT_EMAIL=bathindahelper@gmail.com -e DISCOURSE_DB_PASSWORD=SOME_SECRET -e 
DISCOURSE_REDIS_HOST=data -h e2-2vcpu-8gb-mumbai-ubun2004-web-only -e DOCKER_HOST_IP=172.17.0.1 
--name web_only -t -v /var/discourse/shared/web_only:/shared -v /var/discourse/shared/web_only/log/var-log:/var/log 
--mac-address 02:b0:88:07:bb:12 
local_discourse/web_only /sbin/boot
Unable to find image 'local_discourse/web_only:latest' locally
docker: Error response from daemon: pull access denied for local_discourse/web_only, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

I’m not able to rebuild a new container or start the existing. I’ll try to start a whole new setup now, and report back.

When I tried to startup a whole new installation of discourse (on the same vps, with same, already existing, folder hierarchy), it said it couldn’t map/resolve BathindaHelper.com to the ip of my instance. But when I pinged ‘BathindaHelper.com’ from the same vps, it did reach/resolved to correct ip/ip of the same server on which I was trying to install the installation. SShot is given below:

In the meantime, I’m trying to find why, instead of successful ping, my instance’s ip is not able to be reached from the internet on that domain name.

I should also perhaps mention, just for info, that when my site started giving some update errors, and was behaving erratically, then I had tried, unsuccessfully, to run my website in Safe Mode.

Try using lower case only for the host name. (But I’m still confused why you had trouble to start.)

I used lowercase only. It was only in my reply here that I used upper/lower.
As you can see that I only used lower case in my domain name and all other while trying to setup.

Now I’m struck at the error msg shown in the screen shot. Nor old container is starting, nor new one is being created.

Sorry. I couldn’t read your image on my phone.

The message that you posted is as clear and helpful as I know how to be.

Have you tried searching for “open ports YOUR CLOUD PROVIDER”?

1 Like

I didn’t change any settings on VPS when all this started to happen. Even 1-2 other websites on the same GCP Compute Instance are still working ok. So it means that ports must be open, don’t it? (Still I’d look the search item you suggested).

Other websites on the same instance? Do you have some reverse proxy in front? If so, you can’t use discourse-setup.

image

Yes. I do have reverse proxy. I’m horribly sorry that I didn’t happen to mention the same (I assumed, wrongly, somehow, that it was clear that I was using outer nginx from ‘web_only’ word).

# IMPORTANT: SET A SECRET PASSWORD in Postgres for the Discourse User
# TODO: change SOME_SECRET in this template

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

## Following line was brought for/from outer nginx.  
  - "templates/web.socketed.template.yml"

## Uncomment these two lines if you wish to add Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details

expose:
#  - "80:80"   # http
#  - "443:443" # https

# Use 'links' key to link containers together, aka use Docker --link flag.
links:
  - link:
      name: data
      alias: data

# any extra arguments for Docker?
# docker_args:

params:
  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  #UNICORN_WORKERS: 3

  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: 'discourse.example.com'

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## 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: 'me@example.com,you@example.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: smtp.example.com
  #DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: user@example.com
  DISCOURSE_SMTP_PASSWORD: pa$$word
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com    # (required by some providers)
  #DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com    # (address to send notifications from)

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## TODO: configure connectivity to the databases
  DISCOURSE_DB_SOCKET: ''
  #DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: SOME_SECRET
  DISCOURSE_DB_HOST: data
  DISCOURSE_REDIS_HOST: data

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

volumes:
  - volume:
      host: /var/discourse/shared/web-only
      guest: /shared
  - volume:
      host: /var/discourse/shared/web-only/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.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 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"
  - exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'

Ah. I see. No, to me, the reasons to have two containers are not related to whether you have an external reverse proxy.

Your original problem is explained by Failed to Bootstrap, due to discourse-alt-logo theme component. This topic might have a firx if you still have your original yml file. Can’t delete deprecated theme component from CLI - failed to bootstrap.

I’m not quite sure how to fix it, but the above might help.

1 Like

As you said on the other topic, it means:
I can’t remove theme component because I can’t (re)build/start the web_only container.
And I can’t create new setup (because of reverse proxy).

Does that mean, there is only one option left for me, that I’ve to create a single container new setup first, remove the culprit theme component, and then convert to two container setup?
Would that be ok? Or there is some shorter way also?

(I’m amazed at the time and energy, let ‘skill’ be aside, you possess to help this world of discoursians!!!)

That’s the way that someone said worked. I think it’s possible to enter your data container and issue sql that will remove the bad theme component. If you know how to do that, then it’s easier. :wink:

If you don’t want to do those things and want to some the problem with money you can pm me.

3 Likes

Thank you very much.
But a friend in my neighborhood, in India, solved my problem (almost on goodwill basis).
I think he built the site in single container, then converted them into double (after disabling the culprit theme components). Or may be edited the data container directly and nabbed the culprits red-handed.

Site is online now.

Heartiest thanks for your guiding msgs. Without @pfaffman (and some others, whom I may or may not know), meta site won’t be as it is now.

2 Likes