Keď som minulý rok nasadzoval Nextcloud Hub do kontajnera, tak som uvažoval či použijem kancelársky balík OnlyOffice, alebo Collabora Online. Skôr som sa prikláňal k OnlyOffice, ale podľa aktuálneho stavu som sa rozhodol pre Collabora Online. V tomto článku som napísal aké jednoduché je nainštalovať jeden z týchto office balíkov. Jednalo sa o vstavané aplikácie. Dnes si nainštalujeme Collabora Online na externý server a z Nextcloud Hub sa na server pripojíme.
Obsah
- Čo je to Collabora Online
- Vytváramé LXC
- Príprava prostredia
- Inštalujeme Collabora Online
- Nastavujeme reverzný proxy server
- Nastavujeme-Nextcloud-Hub
- Záver
- Použitá literatúra
Čo je to Collabora Online
Collabora Online je open source online kancelársky balík , ktorý je možné integrovať do akejkoľvek webovej aplikácie, je vyvinutý spoločnosťou Collabora Productivity, divíziou Collabora . Collabora Online má vo svojom jadre LibreOffice , ktorý umožňuje spoluprácu v reálnom čase upravovať textové dokumenty, tabuľky, prezentácie a vektorovú grafiku. Toto všetko je možné vykonávať online v každom modernom webovom prehliadači. Tento produkt je možné porovnať napr. s platenou službou Office 365, alebo Google Docs.
Vytváramé LXC
Collaboru Online môžeme nainštalovať ako nativný balík (balíky sú momentálne vydané pre linux, založené na Debian, Ubuntu a CentOS, RHEL, SUSE). Ďalšia možnosť inštalácie je použitie Dockera. Ja som sa rozhodol nainštalovať Collaboru ako nativný balík do LXC. Čiže najprv si vytvoríme LXC kde budeme hostovať server Collabora Online. Prejdeme v Proxmox do shell a zadáme nasledujci príkaz.
pct create 110 \
local:vztmpl/debian-11-standard_11.0-1_amd64.tar.gz \
--ssh-public-keys ~/ssh.key \
--ostype debian \
--hostname debian-11-collabora \
--unprivileged 0 \
--net0 name=eth0,bridge=vmbr1,gw=192.168.1.1,hwaddr=9C:8B:C4:9C:C1:C9,ip=192.168.1.110/24,type=veth \
--cores 2 \
--arch amd64 \
--memory 2048 --swap 1024 \
--rootfs local-zfs:8 \
--features nesting=1 \
--onboot 1 \
--start 1 \
Upozorňujem, že toto sú moje hodnoty. Nepoužívajte ich, ale si to nastavte podľa seba. Týmto skriptom sme vytvorili plnohodnotný kontajner postavený na Debian 11. Nainštalovaný kontajner obsahuje aj ssh-public-keys a po nainštalovaní sa automaticky spustí, takže sa môžeme okamžite prihlásiť ako root.
Príprava prostredia
Pripravíme si základne prostredie a nainštalujeme niekoľko potrebných aplikácii (v mojom prípade budem používať privátnu IPv4 adresu 192.168.1.110).
ssh root@192.168.1.110
apt update && apt upgrade -y
dpkg-reconfigure tzdata
apt install sudo -y
adduser <username>
usermod -aG sudo <username>
apt install mc -y curl -y
Odhlásime sa a z lokálneho PC zadáme ďalší príkaz. Tu len uvediem, že na lokálnom PC z ktorého sa budeme do kontajnera prihlasovať musíme mať vygenerovaný pár kľúčov pre SSH. Ak nemáme, tak si vygenerujeme
ssh-keygen -t rsa
ssh-copy-id 192.168.1.110
a následne sa prihlásime ako obyčajný užívateľ
ssh <username>@192.168.1.110
Zabezpečíme komunikáciu SSH (zakážeme prihlásiť sa ako root a zmeníme port pre SSH)
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/#Port 22/Port 2299/' /etc/ssh/sshd_config
sudo systemctl restart sshd
Znova sa odhlásime a prihlásime sa už s novým portom
ssh <username>@192.168.1.110 -p 2299
Inštalujeme Collabora Online
Teraz pridáme potrebné balíky, kľúče na overenie balíka coolwsd, ktorý budeme sťahovať. Tak isto do sourcelistu pridáme úložisko, následne aktualizujeme a inštalujeme
sudo apt install apt-transport-https ca-certificates -y
sudo apt-get install gnupg2 -y
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
sudo sh -c "echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11 ./' >> /etc/apt/sources.list.d/collabora.list"
sudo apt update && sudo apt install coolwsd code-brand
V dobe inštalácie sa nainštalovala coolwsd ver. 21.06.17. Čo sa týka inštalácie, tak to je vlastne všetko.
Konfigurujeme Collabora Online
Coolwsd (Collabora online WebSocket Daemon) v predvolenom nastavení povoľuje pripojenie TLS. Avšak súbor certifikátu TLS neexistuje, preto zlyhá štart aplikácie. Je lepšie vypnúť TLS v coolwsd a ukončiť TLS na reverznom proxy. Hlavný konfiguračný súbor pre Collabora sa nachádza v /etc/coolwsd/coolwsd.xml. Upraviť ho môžeme ručne napr. cez editor vi, alebo nano. Ja som použil radšej nástroj coolconfig. Tento nástroj v xml nespraví chybu a dokonca heslo neukladá v txt podobe, ale vytvorí hash hesla.
sudo coolconfig set ssl.enable false
sudo coolconfig set ssl.termination true
sudo coolconfig set-admin-password
sudo coolconfig set storage.wopi.host nextcloud.example.com
sudo systemctl restart coolwsd
sudo systemctl status coolwsd
Ak je všetko v poriadku, tak coolwsd by mal bežať.

Coolwsd je po inštalácii zaregistrovaná aj v systemd službe, takže keď je nejaký problém, môžeme nahliadnuť do log súboru. Ideálne je log niekde uložiť a pomaly si ho prejsť.
sudo journalctl -u coolwsd > coolwsd
Coolwsd beží štandardne na porte 9980, čiže keď do webového prehliadača teraz zadáme (v mojom prípade 192.168.1.110:9980, tak by sme mali vidieť takmer prázdnu stránku. Hovorím preto takmer prázdnu, lebo v ľavom hornom rohu bude maličký text „OK„.
Ak sa na danej adrese nebude chcieť stránka vôbec načítať, tak si spomeňme, či náhodou na servery nemáme aktívny firewall. Ak áno, tak povolíme ešte port 9980 (buď pomocou ufw, alebo iptables.
sudo ufw allow 9980
sudo iptables -A INPUT -p tcp --dport 9980 -j ACCEPT
Coolwsd má aj prehľadnú admin console. Ak sa chceme do admin concole prihlásiť, tak vo web prehliadači napíšeme do url (v mojom prípade)
http://192.168.1.110:9980/browser/dist/admin/admin.html
Ak po úspešnom prihlásení uvidíme túto hlášku (viď obrázok)

Tak zmeníme ešte parameter ssl.termination na false
sudo coolconfig set ssl.termination false
sudo systemctl restart coolwsd
Teraz sa môžeme normálne pohybovať v admin console, samozrejme nešifrovane cez http. Túto položku neskôr vrátime naspäť, pretože nám nebude fungovať editovanie a vytváranie súborov v Nextcloud Hub.
Nastavujeme reverzný proxy server
Teraz nás čaká nastavenie reverzného proxy servera. Ako je známe, tak ja používam reverzný proxy Nginx. Predpokladám, že doménu pre Collabora už máme vytvorenú a tak isto aj platné TLS certifikáty. Budeme uvažovať doménu collabora.example.com. Prihlásime sa cez SSH na reverzný proxy server a upravíme konfiguráciu server block pre collabora
ssh <username>@192.168.1.105
sudo nano /etc/nginx/sites-available/collabora.example.com
Konfigurácia môže vyzerať následovne
server {
listen 443 ssl;
server_name collabora.example.com;
ssl_certificate /etc/letsencrypt/live/collabora.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/collabora.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# static files
location ^~ /browser {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass http://192.168.1.110:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
server {
if ($host = collabora.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name collabora.example.com;
return 404; # managed by Certbot
}
Reštartujeme Nginx a na reverznom proxy už nemusíme nič nastavovať.
sudo systemctl restart nginx
Nastavujeme Nextcloud Hub
Teraz sa presunieme do webového prehliadača a zadáme url pre nextcloud. V našom prípade https://nextcloud.example.com. Po úspešnom prihlásení klikneme v pravej hornej časti na ikonku nášho mena a ďalej + Apps. Klikneme na ikonku lupy a dáme vyhľadať kľúčové slovo office. To čo som zvýraznil červenou farbou, je to čo potrebujeme (Nextcloud Office). teraz klikneme na Download and Enable. Aplikácia sa nainštaluje a povolí sa na používanie.

Presunieme sa do Settings a klik na Office viď obrázok. Vo vrchnej časti označíme Use your own server a zadáme URL s https. Ak je vsetko OK, tak uvidíme zelenú fajku. To znamená, že Collabora server je dosiahnuteľný. Môžeme to uložiť Save. Ešte môžeme označiť checkbox Use Office Open XML (OOXML) Instead of OpenDocument Format (ODF) by Default for New files. Tymto sme nastavili, že súbory sa budú ukladať vo formáte MS office (DOCX, XSLX atď.)

To je vlastne všetko, ale ešte musíme spraviť malú zmenu. Vyskúšajme si existujúci súbor otvoriť, alebo vytvoriť nový. Systém sa bude chvíľu tváriť, že chce súbor načítať, ale po niekoľkých sekundách uvidíme toto.

Ako som už spomínal, teraz musíme zmeniť parameter ssl.termination false na ssl.termination true
sudo coolconfig set ssl.termination true
sudo systemctl restart coolwsd
Až teraz je všetko OK a môžeme spokojne upravovať, alebo vytvárať nove office dokumenty. Ukladané budú vo formáte MS Office. Testoval som ukladanie do PDF, tlač a pod. Menú v dokumentoch bude nastavené na taký jazyk ako máme nastavený v Nextcloud. Momentálne som ešte neprepol na slovenčinu, preto je všade vidieť angličtinu.
Ak chceme vidieť pripojených klientov v admin konzole, tak môžeme to pokojne urobiť

Záver
Collabora Online som skúsil nainštalovať aj na LXC kde už beží Nextcloud Hub. Potom som sa rozhodol, že Collaboru nainštalujem izolovane od Nextcloud Hub. Collabora Online by mala mať údajne také iste funkcie a mala by zvládnuť to čo klasicky Libre Office. Výhodou Collabora Office oproti klasickej desktopovej verzii Libre Office je tá, že užívateľ môže pracovať s office dokumentami, online uloženými na servery. Zároveň na jednom dokumente môže pracovať súčasne viac užívateľov, ktorý sa navzájom vidia. Ako som už uviedol v článku, tak Collabora je kompatibilná aj s dokumentami MS office.