Teknologia albisteak

LibreOfficeOnline eta Nextcloud batera lanean

2019-04-03 : 14:11

Nextcloud zerbitzarian bulegotika/ofimatika dokumentuak online editatu ahal izateko lehen aukeretako bat CollaboraOnline erabiltzea da. Oso erreza da bera konfiguratzea, docker bidez instalatzen da eta ondo integratuta dago.

Arazoa da docker kontainerrak batera konektatua egon daitezkeen erabiltzaile kopurua mugatuta daukala: 10 erabiltzaileko/dokumentuko konkurrentzia onartzen du, hortik gora mezu bat azaltzen da muga gainditu dela esanez.

CollaboraOnline docker irudia LibreOfficeOnline-ean oinarrituta dagonez, bigarren hau Nextcloud-ekin erabiltzeko nola instalatu eta konfiguratu dezakegun azaltzera goaz. Lan gehiago eskatuko digu, baina posible da.

Bi zerbitzari

Docker kontainerrarekin lan egin dugunean, dena zerbitzari berean izan dugu. Nextcloud zerbitzari batean instalatzen genuen, eta gero zerbitzarian bertan docker erabiliz CollaboraOnline zerbitzua abiatzen genuen.

Hau egiteko, eta dokumentazio ofizialean dauden instrukzioak jarraituz, bi domeinu erabiltzen genituen

    • https://hodeia.niredomeinua.eus : Nextcloud zerbitzurako

    • https://office.niredomeinua.eus : CollaboraOnline zerbitzurako

Konturatzen bagara, https erabiltzeko konfiguratu dugu, eta horretarako Letsencrypt erabili dugu.

Nextcloud zerbitzarian administratzaile moduan sartuta, CollaboraOnline plugina aktibatu ondoren, bere konfigurazioan zerbitzaria zein den esatea nahikoa izan da dena martxan jartzeko: https://office.niredomeinua.eus

Orain CollaboraOnline ordeztu nahi dugu bere ordez LibreOfficeOnline erabiltzeko. Horretarako bigarren zerbitzari bat erabiliko dugu. Honek etorkizunari begira onura asko ekarriko dizkigu:

  • LibreOfficeOnline bertsio berri bat instalatu nahi dugunean, produkzioan dagoena ezertarako ukitu gabe, zerbitzari berri bat instalatu dezakegu (office02.niredomeinua.eus). Dena ondo konfiguratuta dugunean, Nextcloud zerbitzarian CollaboraOnline pluginean zerbitzari berriaren izena idatzi eta ikusi nola dabilen. Arazoren bat ematen badu, lehen genuena jarri eta zerbitzua ez da geratzen.
  • Lan karga banatzen dugu. Erabiltzaile askok batera ofimatika dokumentuak online editatzen daudenean, Nextcloud zerbitzariak ez du lan karga hori nabarituko.

Bigarren zerbitzari honen instalazioa bukatzen denean, Nextcloud zerbitzuko CollaboraOnline pluginean bere helbidea jarriko dugu: https://office02.niredomeinua.eus

LibreOfficeOnline zerbitzaria instalatu

Aurrerantzean LOOL deituko diogu.

Instalazio hau egiteko Ubuntu 18.04 LTS instalatu berri eta eguneratu batean oinarritzen gara. LOOL deskargatu eta konpilatuko dugu. Honetarako, Github-en dagoen proiektu hau zip moduan deskargatuko dugu eta zerbitzariko karpeta batean deskonprimatuko dugu

https://github.com/husisusi/officeonlin-install.sh/

Aurrez instalatuta izan behar ditugun dependentziak

# apt-get install unzip npm 
# curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
# apt-get install -y nodejs

Hurrengo lerro hauek garrantzi berezia dute. Dokumentu bat editatzerakoan automatikoki hizkuntza zuzentzailea aplikatzen saiatzen da. Sisteman zuzentzailea instalatuta ez dagoenean, dokumentu batean zerbait idazten saiatzen zarenean, akats bat ematen du eta berriro dokumentua berriro kargatzen da [ 1 , 2]

Ondorioz, erabiliko dituzun hizkuntzetako zuzentzaileak instalatu beharko ditugu

# apt install hunspell locales-all hunspell-eu-es hunspell-es

Orain konpilazioa. Kontutan izan hau egin ahal izateko gutxienez 4GB RAM eta diskoan 13GB libre izan beharko dituela.
Lasai hartu, ordu batzuk beharko ditu. Agian hoberena gauez martxan uztea litzateke, eta hurrengo goizean dena prest izango genuke.

# cd /root
# wget -c https://github.com/husisusi/officeonlin-install.sh/archive/master.zip
# unzip officeonlin-install.sh-master.zip
# cd officeonlin-install.sh-master/
# ./officeonline-install.sh

Instalazioa bukatu ondoren zerbitzaria berrabiaraziko dugu. Instalazio honek LOOL zerbitzu moduan jarri du

# systemctl status loolwsd.service

Beraz aurrerantzean sistema berrabiarazi nahiko bagenuke (adibidez konfigurazioa aldatu dugulako), honela egitea gomendatzen dute

# systemctl daemon-reload && systemctl restart loolwsd.service

Zerbitzua ondo arrankatu den ikusteko

# systemctl status loolwsd.service

Hau egin ondoren 9980 portuan erantzungo du

Apache

Front-End moduan Apache jarriko dugu, horretarako behar diren moduluak aktibatu eta letsencrypt konfiguratu ondoren, eskaerak LOOL zerbitzuari 9980 portua erabiliz bideratzeko konfiguratuko dugu.

# apt-get install apache2

Apache moduloak

Beharko ditugun moduluak aktibatu

# a2enmod ssl proxy proxy_http proxy_balancer proxy_module proxy_wstunnel

LetsEncrypt

Gure kasuan Ubuntu 18.04 LTS erabiltzen ari gara. Honela instalatu dugu

# apt-get install software-properties-common
# add-apt-repository universe
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install certbot python-certbot-apache
# certbot --apache

hau da konfigurazio fitxategia:  /etc/apache2/sites-enabled/000-default-le-ssl.conf


<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

ServerName office02.niredomeinua.eus
SSLCertificateFile /etc/letsencrypt/live/office02.niredomeinua.eus/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office02.niredomeinua.eus/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
# HASIERA LIBREOFFICEONLINE CONF

# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

Options -Indexes

# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode

# keep the host
ProxyPreserveHost On

# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

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

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

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

# Admin Console websocket
ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /lool https://127.0.0.1:9980/lool
ProxyPassReverse    /lool https://127.0.0.1:9980/lool

# BUKAERA LIBREOFFICEONLINE CONF
</VirtualHost>
</IfModule>

Apache eta letsencrypt

Gure zerbitzari honek domeinu izen bat izan behar du, gure kasuan office02.niredomeinua.eus domeinuari erantzuteko prestatu dugu. Apache eta Letsencrypt konfiguratuta ditugu.

Kontua da LOOL-ek ez dituela Apache-ko ziurtagiriak erabiltzen, berak bere ziurtagiri propioak erabiltzen ditu. Hemen proposatzen den soluzioak hau egingo luke:

  • Letsencrypt eguneraketa normal bat egin, beraiek proposatzen duten moduan cron bidez ziurtagiriaren eguneraketak behar direnean automatikoki egiteko.
  • Gauero LOOL zerbitzua geratu eta Letsencrypt bidez sortzen diren ziurtagiriak LOOL-ek begiratzen duen karpetan utzi eta baimen egokiak jarri
  • Ziurtagiriak kopiatu ondoren, berriro ere LOOL zerbitzua abiatu.

Gauero kopia egiteko scripta sortu

# mkdir /root/scripts
# cd /root/scripts/
# nano lool-letsencrypt.sh
# chmod +x lool-letsencrypt.sh

Edukian begiratzen badugu, hau da egiten duena. Lehenik eta behin LOOL konfigurazio karpetan, karpeta berri bat sortuko dugu ziurtagiriak bertan kopiatzeko, eta gure LOOL domeinu izenarekin karpeta bat sortuko dugu (aurrez sortuta badaude aurrera jarraituko du).

Ondoren azaltzen den edukiarekin script bat sortuko dugu, eta crontab bidez gauero exekutatuko dugu

#!/bin/sh
mkdir -p /etc/loolwsd/certs/office02.niredomeinua.eus
# Letsencrypt ziurtagiriak kopiatu
cp -f /etc/letsencrypt/live/office02.niredomeinua.eus/cert.pem /etc/loolwsd/certs/office02.niredomeinua.eus/
cp -f /etc/letsencrypt/live/office02.niredomeinua.eus/privkey.pem /etc/loolwsd/certs/office02.niredomeinua.eus/
# Baimenak ondo jarri
chown -Rf lool:lool /etc/loolwsd/certs
chmod -Rf 755  /etc/loolwsd/certs
# eta azkenik zerbitzua berrabiarazi
systemctl daemon-reload && systemctl restart loolwsd.service

LOOL: Oinarrizko konfigurazioan aldaketak

Zerbitzua

LOOL arrankatzekoan erabiliko dituen parametroak hemen konfiguratzen dira

/lib/systemd/system/loolwsd.service

Aurrerago ikusiko dugunez, web bidez admin interfaze bat izango dugu. Hor ikusi ahal izango dugu besteak beste

  • Une bakoitzean zabalik dauden dokumentuak, eta baita ere zeintzuk diren LOOL erabiltzen ari diren erabiltzaileak.
  • Memoria eta mikroak duten karga

Admin erabiltzaile horren izena eta pasahitza lerro honetan konfiguratzen da

ExecStart=/opt/online/loolwsd --o:sys_template_path=/opt/online/systemplate --o:lo_template_path=/opt/libreoffice/instdir  --o:child_root_path=/opt/online/jails --o:admin_console.username=nireadminerabiltzailea –o:admin_console.password="niresuperpasahitza"

Beste parametroak

Ezer aldatzen hasi aurretik, gomendagarria da konfigurazio fitxategiaren kopia bat egitea.

# cp /etc/loolwsd/loolwsd.xml /etc/loolwsd/loolwsd.xml.backup

Aldatu ditugun parametroak hauek dira:

Hizkuntzak

Online edizioan gure eskura izango ditugun hizkuntzak konfiguratuko ditugu. Kontutan izan lehenago azaldu dugun moduan, hizkuntza hauetako zuzentzaile ortografikoak instalatuta egon behar direla.

<allowed_languages desc="List of supported languages on this instance." default="de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru">es_ES eu_ES</allowed_languages>
 

Nextcloud zerbitzaria baimendu

Gure Nextcloud zerbitzaria baimendu “Backend storage” atalean. Domeinuaren izenean dauden puntuak “eskapatu” egin behar dira aurretik “\” jarrita. Adibidez: hodeia\.niredomeinua\.eus

    <storage desc="Backend storage">
        <filesystem allow="false" />
        <wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true">
            <host desc="Regex pattern of hostname to allow or deny." allow="true">hodeia\.niredomeinua\.eus</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">localhost</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">172\.1[6789]\.[0-9]{1,3}\.[0-9]{1,3}</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">172\.2[0-9]\.[0-9]{1,3}\.[0-9]{1,3}</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">172\.3[01]\.[0-9]{1,3}\.[0-9]{1,3}</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.[0-9]{1,3}\.[0-9]{1,3}</host>
            <host desc="Regex pattern of hostname to allow or deny." allow="false">192\.168\.1\.1</host>
            <max_file_size desc="Maximum document size in bytes to load. 0 for unlimited." type="uint">0</max_file_size>
        </wopi>
        <webdav desc="Allow/deny webdav storage. Mutually exclusive with wopi." allow="false">
            <host desc="Hostname to allow" allow="false">hodeia\.niredomeinua\.eus</host>
        </webdav>
    </storage>

LOG aktibatu

Arazoren bat agertzen denean LOGean begiratu nahi izaten dugu, baina horretarako lehenik eta behin LOGa aktibatu egin behar da

# touch /var/log/loolwsd.log
# chmod 777 /var/log/loolwsd.log

Eta logging atalean aktibatu

    <logging>
        <color type="bool">true</color>
        <level type="string" desc="Can be 0-8, or none (turns off logging), fatal, critical, error, warning, notice, information, debug, trace" default="warning">warning</level>
        <file enable="true">
            <property name="path" desc="Log file path.">/var/log/loolwsd.log</property>
            <property name="rotation" desc="Log file rotation strategy. See Poco FileChannel.">never</property>
            <property name="archive" desc="Append either timestamp or number to the archived log filename.">timestamp</property>
            <property name="compress" desc="Enable/disable log file compression.">true</property>
            <property name="purgeAge" desc="The maximum age of log files to preserve. See Poco FileChannel.">10 days</property>
            <property name="purgeCount" desc="The maximum number of log archives to preserve. Use 'none' to disable purging. See Poco FileChannel.">10</property>
            <property name="rotateOnOpen" desc="Enable/disable log file rotation on opening.">true</property>
            <property name="flush" desc="Enable/disable flushing after logging each line. May harm performance. Note that without flushing after each line, the log lines from the different processes will not appear in chronological order.">false</property>
        </file>
        <anonymize>
            <filenames type="bool" desc="Enable to anonymize/obfuscate filenames in logs. If default is true, it was forced at compile-time and cannot be disabled." default="false">false</filenames>
            <usernames type="bool" desc="Enable to anonymize/obfuscate usernames in logs. If default is true, it was forced at compile-time and cannot be disabled." default="false">false</usernames>
        </anonymize>
    </logging>

Aldaketak aplikatu

Aldaketa hauek egin ondoren, LOOL zerbitzua berrabiarazi beharko genuke

# systemctl restart loolwsd.service

Administrazio kontsola

LOOL zerbitzuak administrazio kontsola eskaintzen digu. Web kontsola honetan hainbat datu ikusi ahal izango ditugu, besteak beste

  • Une horretan irekitako dokumentuak eta konektatutako erabiltzaileak
  • Sistemaren karga
  • Memoria, CPU eta sarearen erabilera azaltzen dizkiguten grafiko batzuk

Administrazio kontsola honetara konektatzeko erabiliko ditugun erabiltzaile eta pasahitza definitzeko  /lib/systemd/system/loolwsd.service fitxategia editatuko dugu

[Unit]
Description=LibreOffice OnLine WebSocket Daemon
After=network.target

[Service]
EnvironmentFile=-/etc/sysconfig/loolwsd
ExecStartPre=/bin/mkdir -p /usr/local/var/cache/loolwsd
ExecStartPre=/bin/chown lool: /usr/local/var/cache/loolwsd
PermissionsStartOnly=true
ExecStart=/opt/online/loolwsd --o:sys_template_path=/opt/online/systemplate --o:lo_template_path=/opt/libreoffice/instdir  --o:child_root_path=/opt/online/jails --o:admin_console.username=NIRESUPERADMIN --o:admin_console.password="NIRESUPERPASAHITZA"
User=lool
KillMode=control-group
# Restart=always

[Install]
WantedBy=multi-user.target

Kontsolara konektatzeko helbide hau erabiliko dugu:

https://office02.niredomeinua.eus/loleaflet/dist/admin/adminAnalytics.html

 

Eta honekin, prest izango genuke LibreOfficeOnline gure Nextcloud zerbitzariarekin lan egiteko konfiguratuta !! Ez zen hain zaila ezta ?   ;-)

Erantzun

Sartu