Collabora – Nextcloud – ISPConfig3

A Collabora Office egy LibreOffice-on, a világ legnépszerűbb nyílt forrású irodai programcsomagján alapuló szövegszerkesztő, táblázatkezelő és bemutatókészítő program. A bejegyzésből megtudhatod, hogy hogyan lehet integrálni a Collabora szolgáltatást a NextCloud rendszerébe. Két módszert is bemutatok.

1. Collabora Docker konténerben

A legújabb Docker csomagot szeretnénk használni, melyet a Docker tárolójából fogunk telepíteni. Abban az esetben, ha volt korábbi verzió telepítve, akkor azt távolítsuk el.

sudo apt-get remove docker docker-engine docker.io containerd runc

Telepítsük fel a szükséges csomagokat:

apt update && apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Adjuk a rendszerünkhöz a tároló gpg kulcsát:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Állítsuk be a Docker tárolót a rendszerünkbe:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Majd telepítsük a csomagot:

apt update && apt install docker-ce

Töltsük le az aktuális image-t:

docker pull collabora/code

Az image-ből készítsünk konténert és futtassuk azt az alábbi példa szerint:

docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\.exmaple\.com" -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" -e 'dictionaries=en hu' -e 'username=admin' -e 'password=TitkosJelszó' --restart always --cap-add MKNOD collabora/code

Ami lényeges, hogy az ssl titkosítást nem engedélyezzük, mivel az ISPConfig alatt fogunk létrehozni egy weboldalt, ahol már az ssl titkosítást is hozzáadjuk. Az Apache reverse proxy beállításával fogjuk a kéréseket továbbítani a a konténerben futó collabora alkalmazás szerverünk részére. Így mivel a kommunikáció lokálisan fog történni, értelmetlen lenne ssl titkosítást beállítani a konténerben futó collaborára is. A domain névnél többet is felsorolhatunk, ha több nextcloud példányt is szeretnénk kiszolgáltatni. A szintaktikára viszont ügyeljünk. A helyes beállítás így néz ki: -e „domain=other1\.cloud\.xx\|other2\.cloud\.xx”. Néhány beállítás magyarázata:
-e (environment): Környezeti változók beállítása a konténeren belől
-p (port): port összerendelés, egy tetszőleges lokális portot rendelünk a konténer egy portjához.
-d (detach): háttérben futtatjuk a konténert
-t (tty): konzolt is kérünk hozzá
További beállítások lekérhetőek az alábbi utasítással:

docker run --help

2. Collabora Közvetlen Telepítése

Az alaprendszer esetemben egy Ubuntu 22.04 szerver, de a módszer más disztribúciók esetén is működik. A Collabora weboldalán további információt olvashatsz.

Alapcsomagok és a Tároló beállítása

Telepítsük a csomagokat és állítsuk be a Collabora tárolót:

sudo apt install apt-transport-https ca-certificates

Következő lépés:

cd /usr/share/keyrings
sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

majd:

touch /etc/apt/sources.list.d/collaboraonline.sources

Nyissuk meg a létrehozott állományt és másoljuk be az alábbi kódot:

Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg

Telepítés

Frissítsük a csomaglistát, majd telepítsük a szolgáltatást:

sudo apt update -y
sudo apt install coolwsd code-brand -y

Engedélyezzük és indítsuk el a Collabora coolwsd szolgáltatást:

sudo systemctl start coolwsd && sudo systemctl enable coolwsd

Ellenőrízzük, hogy a szolgáltatás rendben fut-e, ha igen akkor valami hasonlót kell látnunk:

root@host:~# systemctl status coolwsd
● coolwsd.service - Collabora Online WebSocket Daemon
     Loaded: loaded (/lib/systemd/system/coolwsd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-06-22 06:27:10 CDT; 399ms ago
   Main PID: 3995 (coolwsd)
      Tasks: 1 (limit: 4557)
     Memory: 1.1M
        CPU: 390ms
     CGroup: /system.slice/coolwsd.service
             └─3995 /usr/bin/coolwsd --version --o:sys_template_path=/opt/cool/systemplate --o:child_root_path=/opt/cool/child-roots --o:file_server_root_path=/usr/sha>

A NextCloud-ba történő integráláshoz két alábbi parancs szükséges:

sudo coolconfig set ssl.enable false
sudo coolconfig set ssl.termination true

Be kell állítanunk, hogy milyen domain névvel csatlakozunk a szolgáltatásunkhoz:

sudo coolconfig set storage.wopi.host yourNextCloudDomain

A kimenet, valami hasonló:

root@host:~# sudo coolconfig set storage.wopi.host YourNextCloudDomain
No property, "storage.wopi.host", found in config file.
Adding it as new with value: "YourNextCloudDomain"
Saving configuration to : /etc/coolwsd/coolwsd.xml ...
Saved

Adjuk meg az adminisztrátor nevét, jelszavát:

sudo coolconfig set-admin-password

válaszoljunk a kérdésekre:

root@host:~# sudo coolconfig set-admin-password
Enter admin username [admin]: admin
Enter admin password:
Confirm admin password:
Saving configuration to : /etc/coolwsd/coolwsd.xml ...
Saved

Kész vagyunk, indítsuk újra a szolgáltatást:

sudo systemctl restart coolwsd

Apache Reverse Proxy beállítása

Nincs jelentősége, hogy Docker konténerben futtatjuk a Collabora szolgáltatást, vagy közvetlen telepítettük azt, a következő beállítás mindkét esetben ugyanaz. Engedélyezzük a szükséges modulokat, mielőtt tovább lépnénk:

a2enmod proxy proxy_wstunnel proxy_http ssl && service apache2 restart

Keressük meg a nextcloud weboldalunk beállítási lehetőségét az ISPConfig3 felületén, majd egészítsük ki a beállításoknál az apache direktívákat az alábbi kóddal:

#######################################

# Reverse proxy for Collabora Online  #

#######################################

AllowEncodedSlashes NoDecode
ProxyPreserveHost On

# static html, js, images, etc. served from coolwsd
# browser is the client part of Collabora Online
ProxyPass           /browser http://127.0.0.1:9980/browser retry=0
ProxyPassReverse    /browser http://127.0.0.1:9980/browser

# WOPI discovery URL
ProxyPass           /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse    /hosting/discovery http://127.0.0.1:9980/hosting/discovery

# Capabilities
ProxyPass           /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse    /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities

# Main websocket
ProxyPassMatch      "/cool/(.*)/ws$"      ws://127.0.0.1:9980/cool/$1/ws nocanon

# Admin Console websocket
ProxyPass           /cool/adminws ws://127.0.0.1:9980/cool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /cool http://127.0.0.1:9980/cool
ProxyPassReverse    /cool http://127.0.0.1:9980/cool
# Compatibility with integrations that use the /lool/convert-to endpoint
ProxyPass           /lool http://127.0.0.1:9980/cool
ProxyPassReverse    /lool http://127.0.0.1:9980/cool

Ezzel meg is volnánk, a szolgáltatásnak működnie kell.

Hasznos linkek

Itt néhány hasznos linket fogok bemutatni.
1. feltérképezés:

https://cloud.example.com/hosting/discovery

2. Admin felület:

https://*hostname*:*port*/browser/dist/admin/admin.html

NextCloud Integráció

Bármely telepítési módot válasszuk a beállítás a következő lesz. Belépve a NextCloud szolgáltatásba, navigáljunk az Alkalmazások menüpontra. Vagy fent a keresőbe, vagy az „Iroda és Szöveg” menüpont alatt keressük meg a „Collabora Online” alkalmazást és telepítsük, illetve engedélyezzük azt. Majd a beállításoknál keressük meg a „Collabora Online Development Edition” almenüt. A „Use Your Own Server” szekcióban állítsuk be a szerverünket: https://cloud.example.com. Kész is vagyunk, ha minden jól csináltunk, már használhatjuk is a Collabora szolgáltatásait a Cloud szerverünkön.

WOPI Kliensek

Mi az a WOPI host, vagy hosztok. Azok a csomópontok melyek kéréseket intézhetnek a collabora szerverünkhöz, jobban mondva azon csomópontok IP címeit sorolhatjuk fel, vesszővel elválasztva, melyek csatlakozhatnak.

Amennyiben ezt üresen hagyjuk, azt kockáztatjuk, hogy letölthetik idegenek is az állományainkat. Két fontos szempontot kell figyelembe vennünk:

  1. Amennyiben a lokális gépen telepítettük a szolgáltatást, akkor a gazdagép ip címeit adhatjuk meg jogosultként. Vagy más csomópontét is, ahonnan igénybe kívánjuk venni a szolgáltatást.
  2. Viszont ha docker konténerbe futtatjuk a Colabora alkalmazásunkat, van egy bökkenő. A docker konténerek nem lokálsian érhetőek el a hálózaton, hanem a docker vezérlő egy bridge ip tartományából oszt nekik ip-t és tulajdonképpen egy NAT-olt hálózaton keresztül lesz elérhető az adott konténer. Tehát a brige ip címe lesz a kérdező. Így WOPI kliensként a bridge címet kell beállítani, különben nem fog működni a dokumentumok megnyitása a nextcloud-on belől.

 

Kiegészítés

A collabora szolgálatás finomhangolását az /etc/coolwsd könyvtárban lévő coolwsd.xml állomány szerkesztésével tudjuk elvégezni. Amennyiben konténerben fut a szolgáltatás, akkor a konténeren belől kell elvégezni a beállításokat, vagy a megfelelő volume beállítással elérhetővé tehetjük a szerverünkön is a konfigurációs állományt. Amit én mindig megteszek, az az üdvözlő képernyő letiltása. Egy idő után elég idegesítő tud lenni, hogy bármely dokumentum megnyitásakor ez fogad bennünket. Nyissuk meg az állományt és illesszük be az alábbi sort a <config></config>tag-ek közzé:

<welcome>
<enable default="true" desc="Controls whether the welcome screen should be shown to the users on new install and updates." type="bool">false</enable>
</welcome>

Tovább igény merülhet fel arra is, hogy több domain-t is kiszolgáljon egyetlen collabora szolgáltatás. A beállításoknál csak egyet lehet megadni. Ebben az esetben csoportot kell megadnunk, szintén a coolwsd.xml állományban. keressük meg az alább szekciót:

----
----
<alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to>
<!-- If you need to use multiple wopi hosts, please change the mode to "groups" and
add the hosts below. If one host is accessible under multiple ip addresses
or names, add them as aliases. -->
<group>
<host desc="hostname to allow or deny." allow="true">https://cloud.example1.eu:443</host>
</group>
<group>
<host desc="hostname to allow or deny." allow="true">https://cloud.example2.hu:443</host>
</group>
<!-- More "group"s possible here -->
</alias_groups>
----
----

Persze az elsődlegesen megadott domain-t töröljük ki. A szolgáltatás újraindítása után már több cloud-ról is használhatjuk a szolgáltatásunkat.