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:
- 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.
- 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.