Admin-Funktionen

Hallo, wenn ich versuche, mich mit der Admin-Oberfläche zu verbinden, erhalte ich einen leeren Bildschirm. Ich kann zum Beispiel keine Updates durchführen, obwohl ich ein Administrator bin.
Was soll ich tun?
Vielen Dank für Ihre Hilfe.
Muriel

1 „Gefällt mir“

Sie könnten den abgesicherten Modus ausprobieren. Sie könnten auch eine Befehlszeilenaktualisierung durchführen.

3 „Gefällt mir“

Update: Ich habe einen ordnungsgemäßen Bootstrap, Zerstörung und Neustart mit einer 2-Container-Konfiguration durchgeführt, und jetzt sind die gemeldeten Versionsnummern aktualisiert und die Admin-Benutzeroberfläche wird wieder gerendert.

Der Rest des Beitrags bleibt zur Nachwelt erhalten.


Ich erlebe ein möglicherweise ähnliches Problem. Die Admin-Oberfläche wird geladen, zeigt aber nur die Tabs oben an und der Hauptinhaltsbereich ist leer:

Browser-Konsolenprotokolle

Wenn ich die Browser-Konsolenprotokolle überprüfe, sehe ich Fehler wie:

[Error] Error: VM BUG: Target must be set before attempting to jump
vendor.xxxxx-xxxx.js
Unhandled Promise Rejection: Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
Fehlerstapel
[Error] Error: VM BUG: Target must be set before attempting to jump
	b (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:131956)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:69428)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	rerender (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	invoke (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:156653)
	_runExpiredTimers (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:160801)
[Error] Unhandled Promise Rejection: Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
	(anonymous function) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1310)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1311)
	(anonymous function) (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:3065)
	h (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:1375)
	requireModule (vendor.6f1929e16c84d825f1e134b0a5a6bf6d-ed21b08557694a2386531fb8b5bd479da7fe4ec9cffd9278c49f382c5e7bc3a4.js:1:599)
	_extractDefaultExport (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:269780)
	resolveOther (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266326)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:105:266888)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262092)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262185)
	resolve (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:262275)
	c (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:260192)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:258815)
	getRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:56849)
	fetchRoute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:267571)
	_getQPMeta (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63399)
	_hydrateUnsuppliedQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:64113)
	_prepareQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:63271)
	normaliseQueryParams (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38898)
	_generateURL (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:111:38990)
	eA (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:202925)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49065)
	X (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:140358)
	T (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:49044)
	eM (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:80191)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:79868)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:70930)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:65312)
	evaluateSyscall (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111047)
	evaluateInner (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110609)
	evaluateOuter (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:110528)
	next (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121496)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:121359)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:112232)
	handleException (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:114799)
	throw (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111583)
	evaluate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:68993)
	_execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111383)
	execute (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:111253)
	rerender (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:115153)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252217)
	tx (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:105883)
	_renderRoots (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252117)
	_renderRootsTransaction (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252504)
	_revalidate (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:252982)
	invoke (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:153517)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:152599)
	flush (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:154477)
	_end (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:159527)
	(anonymous function) (chunk.6994431508d4f7ecb4c3.d41d8cd9.js:119:155980)

Upgrade-Prozess (2 Container)

Ich hatte ursprünglich das Problem, als ich versuchte, das Upgrade über die Discourse Admin-Oberfläche abzuschließen, wo mir angezeigt wurde, dass ich zuerst den Docker Manager aktualisieren muss.

Nachdem ich den Docker Manager aktualisiert hatte, trat das Problem auf, also habe ich mich per SSH auf die Box eingeloggt und ein manuelles (2 Container) Update nur für web_only durchgeführt:

cd /var/discourse
git pull
./launcher bootstrap web_only
./launcher stop web_only && ./launcher start web_only
           ^^^^^^
    ⚠️ Das ist falsch! Verwenden Sie destroy wie unten beschrieben. ⚠️

Seltsamerweise zeigt der Pfad /about.json immer noch an, dass ich 3.4.0.beta4-dev ausführe, was ich dachte, dass ich von Anfang an hatte, da die ursprüngliche E-Mail für ein Upgrade von 3.4.0.beta4-dev auf 3.5.0.beta1 war.

Ich habe den Git-Log überprüft und es scheint, dass zumindest discourse_docker zum Zeitpunkt der Erstellung dieses Beitrags den neuesten Commit 3715498fc188d60c0b579443383c4e973cf26f59 hat.

Safe-Mode funktioniert

Ich war mir des Safe-Mode nicht bewusst, aber anscheinend tritt das Problem nicht auf, wenn ich ALLE clientseitigen Plugins deaktiviere.

Das Deaktivieren nur von inoffiziellen clientseitigen Plugin-Anpassungen löst das Problem nicht, da ich jede Kombination ausprobiert habe, um die Ursache einzugrenzen.

Option Ergebnis
no_unofficial_plugins :cross_mark:
no_plugins :white_check_mark:
no_themes :cross_mark:

Deaktivieren von docker_manager hilft nicht

Ich habe versucht, das docker_manager-Plugin unter hooks/after_code auszukommentieren, dann den web_only-Container neu zu erstellen und zu stoppen & starten, aber die oben genannte clientseitige Fehlermeldung bleibt bestehen.

Es führt zu einer weiteren Fehlermeldung, dass das Besuchen der Admin-Seite von this.class.create keine Funktion ist, aber vielleicht ist das zu erwarten, wenn das zugrunde liegende docker_manager-Plugin für diesen Test deaktiviert ist:

loader.js:247 Uncaught (in promise) Error: Could not find module `discourse/lib/decorators` imported from `discourse/plugins/docker_manager/discourse/routes/update`
    at loader.js:247:1
    at h (loader.js:258:1)
    at u.findDeps (loader.js:168:1)
    at h (loader.js:262:1)
    at requireModule (loader.js:24:1)
    at f.get (composer.js:874:1)
    at push.98673._extractDefaultExport (composer.js:874:1)
    at push.98673.resolveOther (composer.js:874:1)
    at push.98673.resolve (composer.js:874:1)
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

index.js:78 Uncaught TypeError: this.class.create is not a function
    at n.i [as getRoute] (upload-debugging.js:25:1)
    at p._getQPMeta (upload-debugging.js:25:1)

Auch hier umgeht die Verwendung des Safe-Mode mit no_plugins das Problem vorübergehend.

Ich habe mich bei den Befehlen für das minimale Downtime-Update mit 2 Containern aus dem Gedächtnis erinnert und anscheinend kann man meinem Gedächtnis nicht trauen! :flushed_face:

Nachdem ich den richtigen Befehl verwendet habe, um den neuen Container nach dem Bootstrapping zu zerstören und dann zu starten, sehe ich, dass die Versionen aktualisiert sind und die Admin-Oberfläche wie erwartet funktioniert.

Haben Sie den Datencontainer aktualisiert? Das sollten Sie tun, aber sehen Sie zuerst PostgreSQL 15 Update. Oder, wenn Sie das Lesen wirklich hassen, führen Sie einfach ./laumcher rebuild data zweimal aus und Sie sollten in Ordnung sein. Dann müssen Sie den Webcontainer zerstören und starten (andernfalls sucht er nach dem alten Datencontainer, den Sie zerstört haben werden).

Noch nicht, aber danke für die Nachfrage!

Ich habe bereits überlegt, einen neuen, leistungsfähigeren Server einzurichten, und habe daher nur recherchiert, ob ich von Discourse 3.5 + PG13 sichern und dann auf Discourse 3.5 + PG15 auf einem anderen Host wiederherstellen kann.

Ich mag keine langen Ausfallzeiten und habe in der Vergangenheit die Community vorübergehend schreibgeschaltet und ein Backup/Restore über Serverinstanzen durchgeführt, was praktisch keine Ausfallzeit bedeutete (abgesehen von der schreibgeschalteten Periode natürlich)… also dachte ich, ich würde recherchieren / testen, ob es über PG-Versionen hinweg funktioniert.

Andernfalls werde ich es wohl oder übel in Kauf nehmen und zuerst das PG15-Upgrade durchführen, bevor ich den Server migriere. :slight_smile:

1 „Gefällt mir“

Das tut es. Es ist wahrscheinlich sowieso Zeit, Ihr Betriebssystem zu aktualisieren. Starten Sie einfach einen neuen Server und stellen Sie Ihr Backup wieder her.

2 „Gefällt mir“

Ich habe genau das gleiche Problem. Danke für die Hilfe. Mein Webmaster Benjamin wird Sie lesen.
Muriel

Das ist mir passiert. Einen neuen Server aufzusetzen und aus der Sicherung wiederherzustellen, war die einzige Option.
Er ist direkt auf den Punkt. Und verschwendet nicht eure Zeit mit Debugging. Dieser Ratschlag bringt euch schnell voran.

Ich habe schließlich das Backup und die Wiederherstellung durchgeführt und es hat wie erwartet funktioniert.


Zur Referenz, falls jemand anderes auf ein ähnliches Problem stößt…

Ich hatte zunächst ein kleines Problem, da der Wiederherstellungsprozess anscheinend intern uploads:migrate_to_s3 aufruft und dieser hängen blieb.

2025-02-26 00:24:16] Migrating the database...
[2025-02-26 00:24:24]
[2025-02-26 00:24:24] Reconnecting to the database...
[2025-02-26 00:24:24] Reloading site settings...
[2025-02-26 00:24:24] Disabling outgoing emails for non-staff users...
[2025-02-26 00:24:24] Disabling readonly mode...
[2025-02-26 00:24:24] Clearing category cache...
[2025-02-26 00:24:24] Reloading translations...
[2025-02-26 00:24:24] Remapping uploads...
[2025-02-26 00:24:24] Restoring uploads, this may take a while...
[2025-02-26 00:25:09] EXCEPTION: 12 of 12208 uploads are not migrated to S3. S3 migration failed for db 'default'.
[2025-02-26 00:25:09] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:73:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:354:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:167:in `restore_uploads'
/var/www/discourse/lib/backup_restore/restorer.rb:71:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:20:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:33:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-02-26 00:25:09] Trying to rollback...
[2025-02-26 00:25:09] Rolling back...
[2025-02-26 00:25:10] Cleaning stuff up...

Ich habe schließlich einige SQL-Abfragen im Datencontainer ausgeführt, um herauszufinden, was los war.

./launcher enter data
sudo -u postgres psql discourse
SELECT url FROM uploads WHERE url NOT LIKE '%s3%';

Das gab nur einige Standard-Built-in-Elemente von Discourse zurück, also habe ich das Gegenteil versucht:

SELECT url from uploads where url LIKE '%s3%' limit 10;

Das gab mir eine Reihe von Treffern im Format:

  • //{my-bucket-name}.s3.dualstack.us-east-2.amazonaws.com/original/2X/5/{image-id}.jpeg

Dann habe ich versucht, eine Abfrage zu machen, um alles außer Elementen zu erhalten, die diesem s3.dualstack-Host entsprachen, und ich fand, dass es 12 alte Einträge gab, die ein etwas anderes Format verwendeten (passend zur Anzahl, die beim vorherigen Wiederherstellungsprotokollfehler fehlgeschlagen war).

  • //{my-bucket-name}.s3-us-east-2.amazonaws.com/{file-path}.jpeg

Als ich die Existenz dieser Dateien im tatsächlichen Bucket überprüfte, existierten sie nicht, also habe ich sie schließlich mit etwas wie gelöscht:

DELETE FROM uploads where url LIKE '%{my-bucket-name}.s3-us-east-2.amazonaws.com%';

Danach funktionierte das Backup und die Wiederherstellung wie erwartet!

PS. Vergessen Sie nicht, E-Mails nach der Wiederherstellung des Backups wieder zu aktivieren!

/admin/site_settings/category/all_results?filter=disable_email
4 „Gefällt mir“

2 Beiträge wurden in ein neues Thema aufgeteilt: Schwierigkeiten beim Aktualisieren einer 10 Jahre alten Website