Afgelopen week heb ik mij wat verdiept in een interessant product, en tot mijn verrassing had ik vlot iets heel nuttigs tot mijn beschikking: een modern online officepakket dat naadloos samenwerkt met Nextcloud.

Nextcloud

Over de Nextcloud Box heb ik eerder geschreven, het is een goedkoop, klein, stil en energiezuinig computertje, waar Nextcloud op geïnstalleerd is. En het werkt fantastich goed. De bestanden, contactpersonen en agenda's van het hele gezin worden via dit computertje tussen allerlei apparaten gesynchroniseerd en met elkaar gedeeld. We kunnen onze agenda's, adresboeken, bestanden en meer eenvoudig met elkaar delen; we hebben toegang tot dit alles vanaf al onze computers, zowel thuis als elders, online en zelfs ook offline. Nextcloud beschermt ook tegen dataverlies, doordat:

  • de data op meerdere apparaten staat;
  • het eerdere versies van bestanden bewaard;
  • het actief beschermt tegen versleuteling van bestanden door ransomware.

LibreOffice

LibreOffice is de kantoorsoftware die ik standaard gebruik en mijn klanten adviseer. Het is gratis beschikbaar en werkt zowel op Windows, Mac OS en Linux. De kwaliteit van de software is hoog en wordt actief ontwikkeld. Doordat gebruik gemaakt wordt van publieke standaarden zijn de bestanden gemaakt in LibreOffice zijn ook uitstekend te gebruiken in bijvoorbeeld Microsoft Office. Omgekeerd is vaker complex, doordat Microsoft Office bij voorkeurt werkt met gepatenteerde bestandsformaten, en zo het samenwerken frustreert.

LibreOffice Online

LibreOffice Online is het online broertje van LibreOffice en maakt het mogelijk documenten in de website van Nexcloud aan te maken en te bewerken. Collobara is een bedrijf dat een versie van LibreOffice online aanbiedt onder de naam Collabora Online en Nexcloud werkt met dit bedrijf samen. En is het niet geweldig dat deze software publiek en gratis beschikbaar is?

Redder in nood

Het ziet er mooi uit en blijkt ook superhandig te zijn. Juist toen ik het een paar minuten goed werkend had, kreeg mijn vrouw problemen met haar laptop: een scherm vol confettie en reclame. Besmet met malware ofwel kwaadaardige software. Ze was bezig om de laatste hand te leggen aan de kerkdienst van de volgende ochtend. Maar nu moest de laptop direct uit om verdere besmetting te voorkomen.

Hoe verder? Ze werkt standaard in LibreOffice en haar bestanden worden bij elke wijziging automatisch gesynchroniseerd naar Nextcloud. Zo kon ze via mijn computer inloggen op Nextcloud, het bestand aanklikken waar ze in aan het werk was en in LibreOffice Online rustig verder werken aan de kerkdienst.

En ja... die besmette laptop was voor mij.

Hoe bouw je zoiets?

Wat nu volgt is voor de technisch geïnteresseerden bevat een compacte technische uitleg. Stop gerust met lezen.

Wat is er nodig om dit mogelijk te maken? Het betreft naast de software van Nextcloud en LibreOffice Online onder meer de volgende technieken:

  • "port forwarding" op een modem/router
  • een dynamisch DNS-adres
  • een SSL/TLS-certificaat van Let's Encrypt.
  • linux besturingssytemen, in mijn geval Ubuntu en openSUSE MicroOS
  • snaps, een universeel linux pakketformaat, ontwikkeld door Ubuntu
  • podman voor het beheer van OCI-containers

Nextcloud

Het uitgangspunt is de Nextcloud Box: een klein computertje ter grootte van een sigarenkistje dat hier op onze studeerkamer staat. Het is aangesloten op het modem. Het modem heb ik zo ingesteld dat Nextcloud buitenshuis bereikbaar is; dit is een standaard mogelijkheid in een hedendaags router/modem. Nextcloud luistert op het netwerk naar de poorten 80 en 443 en het modem stuurt al het inkomend verkeer op die poorten door naar de Nexcloud Box.

Beveiligd online bereikbaar

Vervolgens gebruik ik een Dynamische DNS dienst, in dit geval nsupdate.info, om een vaste naam (domeinnaam) te verbinden aan het wisselende nummer (ip-adres) dat we van onze internetprovider krijgen. Dit kan vaak ook op het modem ingesteld worden; in mijn geval heb ik het op de Nexcloud Box ingesteld m.b.v. een oud maar nog werkend stukje software met de naam 'ddclient'. Tenslotte kunnen en hoeven we dankzij initiatieven als "Let's encrypt" niet meer zonder beveiligde verbinding middels een digitaal certifaat. Dit is ingesteld op de Nextcloud Box via de Nextcloud snap die hierop is geïnstalleerd. Via een snap is de anders complexe installatie van Nextcloud binnen een paar minuten uitgevoerd. Vervolgens wordt de snap automatisch bijgewerkt naar nieuwe versies.

CODE

Voor LibreOffice Online gebruik ik een afgedankte desktop, waar ik een modern besturingssysteem op heb geïnstalleerd: openSUSE MicroOS. Het is klein, snel en effectief en gebruiksvriendelijk: het kan wat het doen moet èn het onderhoud zichzelf middels zogenaamde transcationele updates. In ons geval is het doel linux containers beheren. We  installeren LibreOffice Online namelijk als een container, de Collabora Online Development Edition (CODE).

CODE luistert naar poort 9980 en de modem/router is zo ingesteld dat deze het inkomend verkeer op deze poort doorstuurd naar de computer waarop LibreOffice Online is geïnstalleerd. Op deze manier is zowel LibreOffice online als Nextcloud via dezelfde naam bereikbaar. Dit is niet de beste manier van configuratie, maar in mijn geval de meest praktische. Idealiter zetten we tussen het modem enerzijds en LibreOffice Online en Nextcloud anderzijds een proxy-server. Op deze proxy-server regelen we dan ook de configuratie van het ssl/tsl-certificaat. Omdat ik dat niet gedaan had, moet ik het certificaat van mijn Nextcloud Box kopiëren naar de computer met LibreOffice Online om het vervolgens te koppelen aan de container.

De opdrachtregel voor het aanmaken en starten van de container ziet er ongeveer zo uit:

podman run -t -d -p 10.0.0.20:9980:9980 -e "username=admin" -e "password=admin" -e "domain=nextcloud\.example\.org" -e "DONT_GEN_SSL_CERT" -v "/etc/certs/cert.pem:/etc/loolwsd/cert.pem:ro" -v "/etc/certs/privkey.pem:/etc/loolwsd/key.pem:ro" -v "/etc/certs/chain.pem:/etc/loolwsd/ca-chain.cert.pem:ro"  --name libreoffice_online --restart always collabora/code

In dit onderdeel van de opdrachtregel wordt het certificaat van de Nextcloud Box ook gekoppeld aan LibreOffice Online:

-v "/etc/certs/cert.pem:/etc/loolwsd/cert.pem:ro" -v "/etc/certs/privkey.pem:/etc/loolwsd/key.pem:ro" -v "/etc/certs/chain.pem:/etc/loolwsd/ca-chain.cert.pem:ro"

Let op, dit is een trucje dat nodig is omdat ik de standaard werkwijze met een proxy-server niet heb opgevolgd. Mooi en netjes is anders... maar het werkt wel.