Projekte/Forum/Upgrade
(initial 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 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 (über das SIL-Peering direkt) offsite auf einen Server am Node „mh“ abgelegt, solange keine entsprechende Möglichkeit auf FunkFeuer Infrastruktur gegeben ist.
Wünschenswert wäre eine verlässliche Möglichkeit Backups sicher auf FunkFeuer Infrastruktur abzulegen.
Derzeit scheint es diese Möglichkeit noch nicht zu geben.
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 und nach dem erfolgreichen Upgrade wieder hinzufügen.
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