Projekte/Forum/Upgrade
(credits @kaefert:)
Hallo Leute!
Ich dokumentiere hier mal was zum Upgrade dieser Discourse Instanz (mit angepasstem LDAP Plugin) notwendig ist. (Achtung: SSH Zugang wird benötigt! Upgrade ohne nachträgliche Anpassung mittels SSH Zugang hinterlässt das LDAP Plugin funktionsunfähig!)
Dieser Beitrag ist 1:1 auch im Forum hinterlegt: https://forum.funkfeuer.at/t/discourse-upgrade/229
FunkFeuer Forum - Discourse Upgrade
1. Unter https://forum.funkfeuer.at/admin/backups ein Discourse-Daten-Backup erstellen und runterladen.
(Download bricht im aktuellen Firefox Browser manchmal ab, da einfach auf einen anderen Browser ausweichen.)
2. Mit einem Administrator/Moderator (jeder sollte eigentlich SSH Zugang haben) abklären ob es ein aktuelles Systembackup mit State "Success" gibt: sudo veeam
(falls der letzte Job nicht im State "Success" ist, bitte @vchrizz dazu kontaktieren, die Backups werden derzeit noch per SMB offsite auf seinen Server am Node "mh" abgelegt, solange keine entsprechende Möglichkeit auf FunkFeuer Infrastruktur gegeben ist.)
Latest backup sessions: Job name State Started at Finished at FunkfeuerForum Success 2018-04-18 06:00:02 2018-04-18 06:01:50 FunkfeuerForum Success 2018-04-17 06:00:01 2018-04-17 06:14:05
3. Ein System-Upgrade durchführen:
sudo apt update apt list --upgradable sudo apt upgrade
(ggf. bei kernel-upgrade danach die VM neu starten: sudo reboot
)
4. https://forum.funkfeuer.at/admin/upgrade aufrufen und upgrade durchklicken.
4.1. Falls das Forum nicht geladen wird, kann das Problem am Theme liegen. Versuche den Safe-Mode.
4.2. Mittels Safe-Mode dann in der Administration / Anpassen beim Default-Theme die beiden Theme-Komponenten Slick und Tiles entfernen.
4.3. Es könnte auch sein, dass eine Meldung kommt, dass das Upgrade per CLI gemacht werden muss:
sudo su cd /var/discourse git pull ./launcher rebuild app
5. Versuche am Forum mit LDAP einzuloggen, falls das fehlschlägt, obwohl Login-Details sicher korrekt eingegeben wurden, müssen folgende zwei Anpassungen angewendet werden:
5.1. LDAP fix 1 einspielen, damit das Plugin den OpenLDAP von Funkfeuer versteht:
https://github.com/vchrizz/omniauth-ldap/commit/346d5c27e1dacb0fa6aeedf1f65e29bd9f1bb524
Dazu per ssh einloggen, und mittels folgenden Befehlen in die Discourse Docker Instanz wechseln:
sudo su cd /var/discourse ./launcher enter app
Dort den oben verlinkten Git-Commit die zwei grün markierten Zeilen in diese Datei einpflegen:
/var/www/discourse/plugins/discourse-ldap-auth/gems/2.6.5/gems/omniauth-ldap-1.0.5/lib/omniauth/strategies/ldap.rb
5.2. LDAP fix 2 einspielen, damit über LDAP authentifizierte User automatisch der Gruppe zugeordnet werden, die auf Funkfeuer-intern und Sub-Kategorien zugreifen kann:
https://github.com/kaefert/discourse-ldap-auth/commit/b112b83640e7769daeb25043c9d12db8b011b29b
Auf dem selben weg wie 5.1. diesmal in die Datei einfplegen:
/var/www/discourse/plugins/discourse-ldap-auth/plugin.rb
5.3. LDAP Anpassungen aktiv bringen durch Restart von Discourse:
(evtl. mit logout
zuerst aus dem container wieder ausloggen)
docker restart app
6. Prüfen ob beide (Discourse und mailserver) Docker Container wieder laufen:
docker ps
sollte in etwa so aussehen: (sonst im Zweifelsfall die VM neu starten, dauert nur wenige Minuten, die Container starten dann beide)
vchrizz@forum:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72670824e10a local_discourse/app "/sbin/boot" 3 weeks ago Up 8 minutes app 5b64315e0a1e tvial/docker-mailserver:latest "/bin/sh -c 'supervi…" 6 weeks ago Up 8 minutes 0.0.0.0:25->25/tcp, 110/tcp, 0.0.0.0:143->143/tcp, 0.0.0.0:587->587/tcp, 0.0.0.0:993->993/tcp, 465/tcp, 0.0.0.0:995->995/tcp, 4190/tcp mail
Sollte es dennoch Probleme mit SSL geben: https://meta.discourse.org/t/setting-up-https-support-with-lets-encrypt/40709
#### Manually reissue the cert ./launcher enter app sv stop nginx /usr/sbin/nginx -c /etc/nginx/letsencrypt.conf LE_WORKING_DIR=/shared/letsencrypt DEBUG=1 /shared/letsencrypt/acme.sh --issue -d example.com -k 4096 -w /var/www/discourse/public LE_WORKING_DIR=/shared/letsencrypt /shared/letsencrypt/acme.sh --installcert -d example.com --fullchainpath /shared/ssl/example.com.cer --keypath /shared/ssl/example.com.key --reloadcmd "sv reload nginx" /usr/sbin/nginx -c /etc/nginx/letsencrypt.conf -s stop