SEE ALSO THE NEW UPDATED TOPIC
Hallo an alle NextCloud-Umsteiger und LibreOffice-Freunde,
ich habe heute mein OwnCloud nach NextCloud migriert. Alles lief ohne Probleme
ordentlich durch.
LibreOffice-Online kann ich jetzt auch - wie vorher unter OwnCloud - in
der NextCloud-Umgebung nutzen.
Hier mal die grundsätzlichen Schritte zur Umsetzung für LOL…
Ausgangspunkt war bei mir ein aktuelles ArchLinux ohne installiertes
LibreOffice.
Schritt 1: LibreOffice aus den Quellen bauen (https://github.com/LibreOffice/core)
Schritt 2: LibreOffice Online WebSocketServer bauen (https://github.com/LibreOffice/online)
Schritt 3: NextCloud-Pluggin einbinden (https://github.com/owncloud/richdocuments)
Diese Schritte hatte ich schon für die OwnCloud-Installation vollzogen. Die
Installation läuft jetzt ebenfalls mit der neuen NextCloud-Umgebung, da ja dem
WebSocketServer relativ egal ist, von welchem Client er angesprochen wird.
Natürlich ist die ganze Geschichte noch auf einer experimentellen Stufe, was man vordergründig am Leistungsumfang des Plug-Ins bemerkt, aber die ersten großen Schritte in Richtung einer wirklichen OnlineOffice-Alternative sind gemacht und ich freue mich auf mehr.
Für die Schritte der Installation habe ich oft den Benutzer “http” missbraucht,
da unter ArchLinux der Apache unter diesem läuft. Angemeldet war ich als “root”…
Schritt 1 - LibreOffice bauen:
Erst die Abhänigkeiten für LibreOffice installieren. Hier habe ich mir relativ
wenig Gedanken über die Notwendigkeit der Pakete gemacht (genug Platz auf der HDD)…
pacman -S --needed \
glew gperf gtk3 redland cups hyphen libabw libcdr libe-book \
libetonyek liblangtag libmspub libmwaw libodfgen libpagemaker \
librevenge libvisio libwpd libwpg libwps lpsolve libcmis \
libexttextcat libixion liborcus gdb libpng libcap libcap-ng
Hier soll später die fertige Installation landen:
mkdir /opt/LibreOfficeFromSource
Quellen holen:
cd /tmp; \
git clone https://github.com/LibreOffice/core.git LibreOfficeCore; \
cd /tmp/LibreOfficeCore; \
chown -R http:http /tmp/LibreOfficeCore
Die Build-Optionen kann man natürlich an die eigenen Anforderungen anpassen.
Die “–with-system-” Optionen setzen natürlich voraus, dass die entsprechenden
Pakete auch vorhanden sind. Das “make” dauert natürlich eine ganze Weile…
sudo -u http ./autogen.sh --prefix=/opt/LibreOfficeFromSource \
--with-lang='de' \
--with-help \
--with-myspell-dicts \
--with-alloc=system \
--without-java \
--without-system-dicts \
--disable-dconf \
--disable-odk \
--disable-firebird-sdbc \
--disable-postgresql-sdbc \
--enable-release-build=yes \
--enable-python=system \
--enable-hardlink-deliver \
--with-system-apr \
--with-system-boost=yes \
--with-system-cairo \
--with-system-clucene \
--with-system-curl \
--with-system-expat \
--with-system-graphite \
--with-system-harfbuzz \
--with-system-icu \
--with-system-jpeg \
--with-system-lcms2 \
--with-system-libatomic_ops \
--with-system-libpng \
--with-system-libxml \
--with-system-neon \
--with-system-nss \
--with-system-odbc \
--with-system-openldap \
--with-system-openssl \
--with-system-poppler \
--with-system-redland \
--with-system-serf \
--with-system-zlib
sudo -u http make
make install
Wenn alles gut gegangen ist, befindet sich die fertige Installation unter
/opt/LibreOfficeFromSource
Die Quellen braucht man jetzt nicht mehr. Man kann diese jetzt oder später
löschen…muss aber nicht… (rm -rf /tmp/LibreOfficeCore)
#####################################################################################
Schritt 2 - LibreOfficeOnline WebSocketServer:
Hier benötigt man die “poco” Pakete, die man sie entweder aus den Quellen bauen kann
oder - wie ich bei meinem ArchLinux - aus dem AUR holt.
Da ich pacaur installiert habe, konnte ich das mit
pacaur -y poco-git
erledigen.
Quellen holen und vorbereiten:
cd /opt; \
git clone https://github.com/LibreOffice/online.git lool; \
cd /opt/lool/loolwsd; \
libtoolize; \
aclocal; \
automake --add-missing; \
autoreconf; \
autoheader
Konfiguration für make:
/opt/lool/loolwsd/configure \
--sysconfdir=/opt/lool/loolwsd/etc \
--prefix=/opt/lool/loolwsd \
--enable-silent-rules \
--with-lokit-path=/opt/lool/loolwsd/bundled/include \
--with-lo-path=/opt/LibreOfficeFromSource/lib/libreoffice \
--enable-debug
chown -R http /opt/lool; \
sudo -u http mkdir /opt/lool/loolwsd/var; \
sudo -u http mkdir /opt/lool/loolwsd/var/cache; \
sudo -u http mkdir /opt/lool/loolwsd/var/cache/loolwsd
sudo -u http make
Da ich Letsencrypt nutze, habe ich die auch für loolwsd verwendet:
rm -rf /etc/loolwsd; \
mkdir /etc/loolwsd; \
cp -L /etc/letsencrypt/live/...DOMAIN.../cert.pem /etc/loolwsd/cert.pem; \
cp -L /etc/letsencrypt/live/...DOMAIN.../chain.pem /etc/loolwsd/ca-chain.cert.pem; \
cp -L /etc/letsencrypt/live/...DOMAIN.../privkey.pem /etc/loolwsd/key.pem
Jetzt wird noch der Client-Teil benötigt:
cd /opt/lool/loleaflet
make
Start von loolwsd auf der Konsole (zum Testen):
sudo -u http /opt/lool/loolwsd/loolwsd \
--o:sys_template_path=/opt/lool/loolwsd/systemplate \
--o:lo_template_path=/opt/LibreOfficeFromSource/lib/libreoffice \
--o:child_root_path=/opt/lool/loolwsd/jails
Meine Servicedatei sieht unter Arch so aus:
cat /etc/systemd/system/loolwsd.service
[Unit]
Description=LibreOffice On-Line WebSocket Daemon
After=network.target
[Service]
ExecStart=/opt/lool/loolwsd/loolwsd --version --o:sys_template_path=/opt/lool/loolwsd/systemplate --o:lo_template_path=/opt/LibreOfficeFromSource/lib/libreoffice --o:child_root_path=/opt/lool/loolwsd/jails --o:file_server_root_path=/opt/lool
User=http
KillMode=control-group
Restart=always
[Install]
WantedBy=multi-user.target
#####################################################################################
Anpassung für die App “Collabora Online” (richdocuments) in NextCloud:
Damit man auch aus der Files-App Dokumente öffnen kann, muss noch ein "Listener"
hinzugefügt werden…(neu ab V9.0)
NEXCLOUDDIR/apps/richdocuments/appinfo/app.php 43ff:
$c->getServer()->getNavigationManager()->add($navigationEntry);
//Script for registering file actions
/*
$request = \OC::$server->getRequest();
if (isset($request->server['REQUEST_URI'])) {
$url = $request->server['REQUEST_URI'];
if (preg_match('%index.php/apps/files(/.*)?%', $url)) {
\OCP\Util::addScript('richdocuments', 'viewer/viewer');
\OCP\Util::addStyle('richdocuments', 'viewer/odfviewer');
}
}
*/
$eventDispatcher = \OC::$server->getEventDispatcher();
$eventDispatcher->addListener(
'OCA\Files::loadAdditionalScripts',
function() {
\OCP\Util::addScript('richdocuments', 'viewer/viewer');
\OCP\Util::addStyle('richdocuments', 'viewer/odfviewer');
}
);
//Listen to delete file signal
\OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA\Richdocuments\Storage", "onDelete");
#####################################################################################
Optimierungsvorschläge sind natürlich sehr willkommen!!