ProCourse Installer

Dieses Plugin wurde entwickelt, um die Installation neuer Plugins ohne Anmeldung am Server extrem einfach zu gestalten. Es fügt einen Bildschirm unter /admin/plugins/procourse-installer hinzu, der so aussieht:

Von dort aus können Sie die URL (mit oder ohne .git) des Plugin-Git-Repositories eingeben und auf „Plugin installieren" klicken. Warten Sie einige Minuten (ca. 5 Minuten), bis die Installation abgeschlossen ist, und Sie können loslegen.

Um alle über den Installer installierten Plugins zu sehen oder ein Plugin zu entfernen, gehen Sie einfach zu „Installierte Plugins".


Einige Hinweise:

  • Diese Plugins bleiben nach einem Neuaufbau oder Bootstrap von app oder web_only erhalten.

  • Es wurde derzeit noch nicht auf Multisite-Instanzen getestet und wird in solchen Szenarien wahrscheinlich fehlschlagen, da das Plugin für seine Funktion Zugriff auf das Verzeichnis /plugins der Anwendung benötigt.

  • Die installierten Plugins werden unter /admin/plugins angezeigt.

  • Sie können diese Plugins ganz normal über /admin/upgrade aktualisieren.

  • Bei der Entwicklung dieses Plugins wurde ein potenzieller Fehler beim Entfernen von Übersetzungen aus Plugins festgestellt. Dies kann dazu führen, dass die Website eine Fehlermeldung anzeigt, wenn der Benutzer eine Seite besucht, auf der die Übersetzung verwendet wird. Dies scheint auch dann aufzutreten, wenn Sie admin/upgrade verwenden, um ein bestimmtes Plugin zu aktualisieren, und das Plugin eine Übersetzung entfernt hat. Wir arbeiten derzeit an einer Lösung für dieses Problem.


Voraussetzungen:

  • Sie müssen eine unterstützte Docker-Installation ausführen.

  • Das Docker Manager-Plugin muss installiert sein.

  • Zugriff auf /admin/upgrade.


Das Repository finden Sie hier:

43 „Gefällt mir“

Wow! That’s quite an accomplishment! I thought it couldn’t be done. Nice work, @joebuhlig!

EDIT: Here’s a question. If you do a rebuild at the command-line, are the procourse-installer plugins upgraded?

11 „Gefällt mir“

Yes – plugins should get upgraded upon bootstrap.

7 „Gefällt mir“

Just wow!
Nice work!

2 „Gefällt mir“

IMO, this deserves to be in core.

11 „Gefällt mir“

So, would it be worth removing my existing plugins from the app.yml file and moving them to this installer?

1 „Gefällt mir“

I have to admit that I’m conflicted on this one. It would really cool to be in core but if it’s in core, installing plugins will only work on Docker installs and non-multisite installs. That would cause problems for a quite a lot of instances.

Technically, it doesn’t matter. They end up being installed in exactly the same way. This just makes it easier to do.

8 „Gefällt mir“

I assume the challenges associated with getting it to work with multisite are far more complex then getting to set up multisite (which none of my clients have deployed) and I’m saying that from managing over 2 dozen active discourse installations.

It should be easier to include this in the standard app.yml on bootstrap for the standalone installs and not including the same in a multisite/multi container/HA setup.

It could always be part of core (with a big warning label that says “only works with docker”) but leave the current install method available as well.

Even better if there’s a way to detect a compatible installation and hide or show itself as necessary.

5 „Gefällt mir“

The main challenge is precompiling assets and such. We’re effectively adding the repo to the /plugins and then running an docker manager upgrade on that specific plugin. That handles the magic side of it.

But in a multisite, you run into issues because you don’t want one instance to be able to make edits for all instances in the multisite.

6 „Gefällt mir“

How i can uninstall a plugin using ssh? Because i installed Moderator Extension and now I cant put it anymore online, Error 502

Assuming you can’t get to the admin panel:

  1. SSH into the server.
  2. cd /var/discourse
  3. ./launcher enter app
  4. vim /shared/tmp/procourse-installer/plugins.txt
  5. Remove the offending plugin from the file.
  6. exit
  7. ./launcher rebuild app
4 „Gefällt mir“

Cant up online :cry:

Looks like your container isn’t running. Try this ./launcher start app

3 „Gefällt mir“

Thank You, my error 502 now are resolved. :smiley:

2 „Gefällt mir“

I think the installer is working fine but I saw this in my error log, not sure if it’s anything but thought I’d might as well bring it up:

NameError (uninitialized class variable @@install_state in ProcourseInstaller::InstallController)
/var/www/discourse/plugins/procourse-installer/app/controllers/procourse_installer/install_controller.rb:4:in `status'
2 „Gefällt mir“

Interesting. Do you have any guesses about what you were doing when that error came to be?

1 „Gefällt mir“

Vor etwa 20 Tagen habe ich dieses Procourse-Plugin und ein weiteres Plugin (ich habe den Namen vergessen) über die Plugin-Oberfläche installiert.
Nach einigen Tagen stellte ich fest, dass meine Website wiederholt (etwa alle paar Tage) extrem langsam wurde. In diesen Momenten war sogar das Öffnen des abgesicherten Modus ebenso langsam. Nach 20–30 Minuten stellte ich fest, dass die Geschwindigkeit meiner Website wieder normal war.

Obwohl ich nicht über die notwendigen Fähigkeiten verfüge, um die Logs zu analysieren, enthielt der Warnungsbereich der Logs (oder war es Sidekiq?) so oft den Begriff „procourse“, dass ich annahm, es müsse damit zusammenhängen, dass das Plugin innerhalb/via des Procourse-Plugins installiert war. Deshalb habe ich dieses Plugin über die Procourse-Oberfläche deinstalliert.

Gestern ist es jedoch erneut (fast) abgestürzt.
Ich habe geprüft und erneut das Wort „procourse“ in vielen Warnmeldungen in den Logs gefunden.

Also habe ich heute beschlossen, auch Procourse zu deinstallieren.

Jetzt hoffe ich sehr auf ein gutes Ergebnis.

Können Sie den Backtrace eines dieser Fehler teilen? Das würde uns helfen, die Ursache einzugrenzen.

1 „Gefällt mir“

Da ich das Plugin vorerst deinstalliert habe, können die Logs erst beim nächsten Auftreten des Problems gesendet werden.

(Ich weiß nicht, ob Logs 2–3 Tage lang gespeichert werden. Falls ja, kann ich es versuchen.)

Vielen Dank.