Unable to rebuild discourse

AI-generated summary

User amsaal is unable to rebuild Discourse using ./launcher rebuild app, encountering errors including “fatal: No such ref: HEAD” and “docker: invalid reference format”. Overgrow suggests checking the launcher repo status with git status. amsaal initially reports no commits and untracked files, indicating a possible repo corruption. Ed_S notes the repo should show a clean working tree on the main branch, suspecting the .git folder may have been altered or lost. amsaal denies modifying anything and asks for a fix. Ed_S checks the .git/config file, confirming it’s correctly pointing to the Discourse Docker repo but advises against manual edits. amsaal shows the config is correct but git status now reveals modified files and an upstream branch issue — contradicting the earlier report. Ed_S finds this inconsistency mysterious. amsaal asks if reinstalling Discourse would resolve it and requests SSH instructions. Ed_S advises a full reinstall requires a backup (including app.yml) and a fresh OS, pointing to the INSTALL-cloud guide, recommending setup on a new instance with DNS adjustments to minimize downtime — but cautions that this requires technical confidence or external help.

when ever i try to ./launcher rebuild app it gives an error.

root@amsaal:~# cd /var/discourse/
root@amsaal:/var/discourse# ./launcher rebuild app
x86_64 arch detected.
fatal: No such ref: HEAD
fatal: No such ref: HEAD
Stopping old container

  • /usr/bin/docker stop -t 600 app
    app
    2.0.20241203-0251: Pulling from discourse/base
    Digest: sha256:d5d4e6d361d56745e37f2609db58a6970cc9b3fcd26d0b2dcba23d0cb581f067
    Status: Image is up to date for discourse/base:2.0.20241203-0251
    docker.io/discourse/base:2.0.20241203-0251
    /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
    /usr/local/bin/pups --stdin
    docker: invalid reference format: repository name (library/#<NoMethodError) must be lowercase.
    See ‘docker run --help’.
    cat: cids/app_bootstrap.cid: No such file or directory
    bootstrap failed with exit code 125
    ** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
    ./discourse-doctor may help diagnose the problem.
    Container name cannot be empty
    root@amsaal:/var/discourse#

Did you check status of the launcher repo?

git status

root@amsaal:/var/discourse# git status

No commits yet

Untracked files:
(use “git add …” to include in what will be committed)
.github/
.gitignore
LICENSE
README.md
discourse-doctor
discourse-setup
image/
launcher
rebuild.log
samples/
scripts/
templates/
tests/

nothing added to commit but untracked files present (use “git add” to track)
root@amsaal:/var/discourse#

You should have seen something like this:

# git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

so I think somehow your /var/discourse directory is broken - is no longer connected to the repo. Did you somehow tidy up, lose, or rename the .git subfolder?

i did not touch anything actually? how can i fix it?

Sorry, I don’t know. Do you have a .git subdirectory? What is in it?

In my case, the config file looks like this:

# cat .git/config 
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = https://github.com/discourse/discourse_docker.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

But this is for reference. I don’t think the fix is to edit a config file!

i have same result

root@amsaal:/var/discourse# cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote “origin”]
url = GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub
fetch = +refs/heads/:refs/remotes/origin/
[branch “main”]
remote = origin
merge = refs/heads/main

And git status

root@amsaal:/var/discourse# git status
On branch main
Your branch is based on ‘origin/main’, but the upstream is gone.
(use “git branch --unset-upstream” to fixup)

Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git restore …” to discard changes in working directory)
modified: .github/workflows/build.yml
modified: LICENSE
modified: README.md
modified: templates/postgres.13.template.yml
modified: templates/postgres.15.template.yml
modified: templates/postgres.template.yml
modified: templates/web.ssl.template.yml
modified: templates/web.template.yml

Untracked files:
(use “git add …” to include in what will be committed)
rebuild.log

no changes added to commit (use “git add” and/or “git commit -a”)

Looks like you must have changed something - your latest git status gives you very different results from your previous report. This is mysterious!

so can reinstall discourse can solve it and can you advice how can i do it from SSH?

For a full reinstall, you need your full backup (including your app.yml file) and a fresh OS on your instance.

The instructions are here: INSTALL-cloud

It might be best to try the install on a new instance. You’ll need to add the new IP address to a temporary subdomain in your DNS. Or, if you are happy with the downtime, just update your DNS to the new IP address.

You do need to have some idea what you’re doing, otherwise you need help. Sorry, I can’t be that help.