Inštalácia Collabora Online do LXC

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

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 running

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)

admin console

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.

Nextcloud Office

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ď.)

Konfigurácia Nextcloud Office

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.

Zlyhalo načítanie dokumentu

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.

Takto vyzerá dokument wordu
Takto vyzerá dokument excelu

Ak chceme vidieť pripojených klientov v admin konzole, tak môžeme to pokojne urobiť

Admin console

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.

Použitá literatúra

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *