Discourse funktioniert nicht mehr

Hallo:
Ich betreibe seit einigen Monaten Discourse ohne Probleme.
Ich musste den Host zurücksetzen, und jetzt bekomme ich Discourse nicht mehr zum Laufen.

/var/discourse# ./launcher rebuild app

Sicherstellen, dass der Launcher auf dem neuesten Stand ist

Fetching origin

Launcher ist auf dem neuesten Stand

cat: 80:80: Datei oder Verzeichnis nicht gefunden

cat: 443:443: Datei oder Verzeichnis nicht gefunden

cd /pups && git pull && /pups/bin/pups --stdin

/usr/bin/docker: ungültiges Referenzformat: Repository-Name muss kleingeschrieben sein.

Siehe '/usr/bin/docker run --help'.

cat: cids/app_bootstrap.cid: Datei oder Verzeichnis nicht gefunden

"docker rm" benötigt mindestens 1 Argument.

Siehe 'docker rm --help'.

Verwendung: docker rm [OPTIONEN] CONTAINER [CONTAINER...]

Entfernt einen oder mehrere Container

rm: kann 'cids/app_bootstrap.cid' nicht entfernen: Datei oder Verzeichnis nicht gefunden

** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.

./discourse-doctor kann bei der Diagnose des Problems helfen.

Die Befehle “run” und “bootstrap” bewirken dasselbe :frowning:

Doctor sagt:

./discourse-doctor 
DISCOURSE DOCTOR So Feb 16 11:59:15 CET 2020
OS: Linux XXXXXXXXXXXX 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux


Gefunden: containers/app.yml

==================== YML-EINSTELLUNGEN ====================
awk: keine Option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: keine Option: --field-separator=:
SMTP_ADDRESS=
awk: keine Option: --field-separator=:
DEVELOPER_EMAILS=
awk: keine Option: --field-separator=:
SMTP_PASSWORD=
awk: keine Option: --field-separator=:
SMTP_PORT=
awk: keine Option: --field-separator=:
SMTP_USER_NAME=
awk: keine Option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=

==================== DOCKER-INFO ====================
DOCKER VERSION: Docker version 18.06.3-ce, build d7080c1

DOCKER-PROZESSE (docker ps -a)

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

==================== SCHWERWIEGENDES PROBLEM!!!! ====================
app läuft nicht!
Versuch, neu aufzubauen
==================== REBUILD-LOG ====================
Sicherstellen, dass der Launcher auf dem neuesten Stand ist
Fetching origin
Launcher ist auf dem neuesten Stand
cat: 80:80: Datei oder Verzeichnis nicht gefunden
cat: 443:443: Datei oder Verzeichnis nicht gefunden
cd /pups && git pull && /pups/bin/pups --stdin
/usr/bin/docker: ungültiges Referenzformat: Repository-Name muss kleingeschrieben sein.
Siehe '/usr/bin/docker run --help'.
cat: cids/app_bootstrap.cid: Datei oder Verzeichnis nicht gefunden
"docker rm" benötigt mindestens 1 Argument.
Siehe 'docker rm --help'.

Verwendung:  docker rm [OPTIONEN] CONTAINER [CONTAINER...]

Entfernt einen oder mehrere Container
rm: kann 'cids/app_bootstrap.cid' nicht entfernen: Datei oder Verzeichnis nicht gefunden
** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.
./discourse-doctor kann bei der Diagnose des Problems helfen.
==================== ENDE REBUILD-LOG ====================
Neu aufbauen fehlgeschlagen.

Überprüfe deinen Domainnamen . . .

Verbindung zu 443 erfolgreich.
Sie sollten wahrscheinlich alle nicht-standardmäßigen Plugins entfernen und neu aufbauen.
Versuch, den bestehenden Container neu zu starten . . . 

cat: 80:80: Datei oder Verzeichnis nicht gefunden
cat: 443:443: Datei oder Verzeichnis nicht gefunden
+ /usr/bin/docker run --shm-size=512m -d --restart=always '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -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=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=XXXXXXXXXXXX -e DISCOURSE_DEVELOPER_EMAILS=XXXXXXXXXXXX -e DISCOURSE_SMTP_ADDRESS=XXXXXXXXXXXX -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=XXXXXXXXXXXX -e DISCOURSE_SMTP_PASSWORD=XXXXXXXXXXXX -e DISCOURSE_SMTP_ENABLE_START_TLS=false -e LETSENCRYPT_ACCOUNT_EMAIL=XXXXXXXXXXXX '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -h vps659319-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' '#<NoMethodError: undefined method `[]'\'' for false:FalseClass>' -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:62:5b:d4:b7:80 local_discourse/app /sbin/boot
/usr/bin/docker: ungültiges Referenzformat: Repository-Name muss kleingeschrieben sein.
Siehe '/usr/bin/docker run --help'.
Neu starten des Containers fehlgeschlagen.


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

WARNUNG:
Sie scheinen nicht-offizielle Plugins zu haben.
Wenn Sie Probleme haben, sollten Sie diese deaktivieren und erneut versuchen, neu aufzubauen.

Siehe https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb für die offizielle Liste.

========================================
Discourse version at : NICHT GEFUNDEN
Discourse version at localhost: NICHT GEFUNDEN


==================== SPEICHERINFORMATION ====================
RAM (MB): 2009

             total       used       free     shared    buffers     cached
Mem:          1962       1819        142         45         86        586
-/+ buffers/cache:       1146        815
Swap:         2047        190       1857

==================== PLATZPRÜFUNG ====================
---------- OS-Festplattenspeicher ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G  9.1G  9.7G  49% /

==================== FESTPLATTENINFORMATION ====================

Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f0953e7

Device     Boot Start      End  Sectors Size Id Type
/dev/sda1  *     2048 41941883 41939836  20G 83 Linux

==================== ENDE FESTPLATTENINFORMATION ====================

==================== MAIL-TEST ====================
Für einen robusten Test holen Sie sich eine Adresse von http://www.mail-tester.com/
Oder senden Sie einfach eine Testnachricht an sich selbst.
E-Mail-Adresse für den Mail-Test? ('n' zum Überspringen) []: XXXXXXXXXXXX
Senden der E-Mail an XXXXXXXXXXXX . . . 
Fehler: Kein solcher Container: app

Ersetzen: SMTP_PASSWORD
Ersetzen: LETSENCRYPT_ACCOUNT_EMAIL
Ersetzen: DEVELOPER_EMAILS
Ersetzen: DISCOURSE_DB_PASSWORD
Ersetzen: Sending mail to

==================== FERTIG! ====================

Sie können die Ausgabe dieses Skripts mit folgendem Befehl einsehen:
LESS=-Ri less /tmp/discourse-debug.txt

ABER ZUERST stellen Sie sicher, dass Sie die ersten drei Befehle unten kennen!!!

Befehle, die Sie kennen sollten, wenn Sie die Datei mit dem oben genannten Befehl (genannt 'less') ansehen: 
q              -- beenden
/error<ENTER>  -- nach dem Wort 'error' suchen
n              -- nach dem nächsten Vorkommen suchen
g              -- zum Anfang der Datei gehen
f              -- eine Seite vorwärts gehen
b              -- eine Seite rückwärts gehen
G              -- zum Ende der Datei gehen

Stellen Sie sicher, dass die vom Doctor hervorgehobenen Einstellungen korrekt ausgefüllt und nicht leer sind.

Zum Beispiel: DISCOURSE_HOSTNAME: mydomain.com (beachten Sie, dass der Trenner : und nicht = sein muss)

Sie können die Syntax mit einem Online-YML-Validator überprüfen: http://www.yamllint.com/

Diese Datei wurde überhaupt nicht geändert … sie ist identisch mit dem Zustand, als alles noch funktionierte :frowning:
Ich habe Zeile für Zeile geprüft, keine Fehler …

Hier ist sie:

## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu erstellen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE *SEHR* VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND EXTREM EXTREM EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besuchen Sie http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.socketed.template.yml"
## Kommentieren Sie diese beiden Zeilen frei, wenn Sie Lets Encrypt (https) hinzufügen möchten
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## Welche TCP/IP-Ports soll dieser Container freigeben?
## Wenn Sie Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilen möchten,
## siehe https://meta.discourse.org/t/17247 für Details
#expose:#
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Setzen Sie db_shared_buffers auf maximal 25 % des gesamten Arbeitsspeichers.
  ## Wird automatisch durch Bootstrap basierend auf dem erkannten RAM festgelegt, oder Sie können es überschreiben
  db_shared_buffers: "256MB"

  ## Kann die Sortierleistung verbessern, erhöht aber die Speichernutzung pro Verbindung
  #db_work_mem: "40MB"

  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed

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

  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Arbeitsspeicher und den CPU-Kernen ab.
  ## Wird automatisch durch Bootstrap basierend auf den erkannten CPUs festgelegt, oder Sie können es überschreiben
  UNICORN_WORKERS: 4

  ## TODO: Der Domainname, auf den diese Discourse-Instanz antworten wird
  ## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
  DISCOURSE_HOSTNAME: 'XXXXXXXXXXXX'

  ## Kommentieren Sie dies frei, wenn Sie möchten, dass der Container mit demselben
  ## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Liste der durch Komma getrennten E-Mail-Adressen, die bei der ersten Anmeldung zu Admin und Entwickler werden
  ## Beispiel 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'XXXXXXXXXXXX'

  ## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
  # SMTP-Adresse, Benutzername und Passwort sind erforderlich
  # WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
  DISCOURSE_SMTP_ADDRESS: XXXXXXXXXXXX
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: XXXXXXXXXXXX
  DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optional, Standard true)

  ## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten frei aus, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: XXXXXXXXXXXX

  ## Die http- oder https-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
  ## siehe https://meta.discourse.org/t/14857 für Details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-plugin-linkedin-auth.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-social-share.git
          - git clone https://github.com/rcfox/Discourse-LinkedIn-Sharing-Button.git
          - git clone https://github.com/BeXcellent/discourse-allowiframe.git

## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
  - exec: echo "Beginning of custom commands"
  ## Wenn Sie die 'From'-E-Mail-Adresse für Ihre erste Registrierung festlegen möchten, kommentieren Sie dies frei aus und ändern Sie:
  ## Nach Erhalt der ersten Anmelde-E-Mail diesen Kommentar wieder aktivieren. Es muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

Versuchen Sie es, indem Sie die '-Zeichen im Hostnamen und in den Entwickler-E-Mail-Adressen entfernen.

'XXXXXXXXXXXX'

Warum wird dieser Befehl auskommentiert?

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

Das erklärt die Fehlerausgabe:

cat: 80:80: Datei oder Verzeichnis nicht gefunden
cat: 443:443: Datei oder Verzeichnis nicht gefunden

Aber ich brauche diese Zeilen!

Lies, was ich gesagt habe. Du hast ein # hinzugefügt.

Sollte lauten:

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

Ich habe es nicht so einfach gemacht, weil jemand darüber nachdenken muss, wie solche Fehler auftreten könnten, wenn das wahr ist.