/officeonlin-install.sh

Script to install Office Online on Ubuntu 18.04

Primary LanguageShell

officeonline-install.sh v2.5.2


Script intended to build & install Office Online on moderns Ubuntu and Debian systems.

Written by: Marc C. & Subhi H.


Summary

GNUv3 License

This script is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Requirements

  • The script requires a minimum of 3.7 GB of RAM installed to run.
  • First installation requires about 13 GB of available space on the system.

Notice

THE FIRST INSTALLATION WILL TAKE A VERY, VERY LONG TIME!

... So take your favorite mug, and make yourself a nice cup of coffee/tea while you go watching your favorites movies. 😄

Default Installation

You might see errors during the installation, just ignore them.

It will install libreoffice in /opt/libreoffice, Poco in /opt/poco and onlineOffice in /opt/online

Your can manage your service using systemd: systemctl start|stop|restart|status loolwsd.service

Command line usage

Since v2.4 the script accept the following usage:

officeonline-install.sh [-h][-c file|variable definition][-f lo|poco|lool][-l VERSION][-o COMMIT][-p VERSION]

  • Options:

    • -c, --config /a/configuration/file|variable=value

      Load a script configuration file OR directly a variable and its value to override it from the loaded configuration. This option can be repeated.

    • -f, --force lo|poco|lool

      Specify a component to build anyway. Support some aliases for LibreOffice core and Libreoffice Online This option can be repeated.

    • -h, --help

      display this help and exit

  • Thoses options have been kept for backward compatibility and may be removed in future releases:

    • -l, --libreoffice_commit)=COMMIT

      Libreoffice COMMIT - short/full hash Equivalent of -c lo_src_commit=COMMIT

    • -o, --libreoffice_online_commit)=COMMIT

      Libreoffice Online COMMIT - short/full hash. Equivalent of -c lool_src_commit=COMMIT

    • -p, --poco_version)=VERSION

      Poco Version Equivalent of -c poco_version=VERSION

Configuration file

Since v2.4 the script search for an external configuration file that will override parts or all the default configuration.

The script search for the file named officeonline-install.cfg in the following places in that order:

  1. The file specified from the command line with the --config option. It can be of any name.
  2. The current working directory except when it's the script's directory.
  3. The user's home directory
  4. The /etc/loolwsd/ directory
  5. The script's directory

Only the first file found is loaded.

INFO: A fully commented configuration file is in the script's directory available as a template or an example.

Sets

Since v2.1, it is possible to choose a Set. A set is an duo of branches from both LibreOffice core and online git repositories that are known to create a smooth LO-Online experience.

By default latest version available of collabora

Versions

Its possible to pin exact version of the services used, like this:

./officeonline-install.sh -l 5.3.1.2 -c lool_src_commit=47c01440ba794d2ea953d6ac1b80f7e42769f4e -c poco_version=1.7.8p2

There is also a help:

./officeonline-install.sh -h

Idempotence

This script has been made idempotent: Only the required action will be executed if it is run several times on the same System in order to get to the expected state.

Example: when updating LibreOffice online to the latest version, LibreOffice compilation and installation steps will not be run as it is already installed.

Parameters

These parameters describes the expected state of the system regarding LibreOffice Online installation.

The installation can be tuned to your needs by changing these variables.

Global Parameters:

Affect the whole build.

  • distrib_name: A name for a list of build options for LibreOffice. The distribution is a file that may be created from scratch and changed by the script 'LibreOfficeOnline' by default
  • allowed_domains: Space separated list of domains allowed to use the LibreOffice-Online service. dots escaping is processed by the script.
    • Note: Removing domains from the configuration file is not supported. Unwanted domains still need to be removed manually in the configuration file. /etc/loolwsd/loolwsd.xml by default.

Set Parameters:

Affect how the script chooses the best set of commits to use for core and online.

  • set_name: used to locate branchs folders in the libreoffice project. 'collabora' by default
  • set_core_regex: regulax expression used to find the branch name for core 'cp-' by default.
  • set_online_regex: regulax expression used to find the branch name for online 'collabora-online' by default.
  • set_version can be used if both branch name contains a common version number. Else, latest version available for each project will be used. empty by default

LibreOffice:

For Idempotence, LO's status is defined by its sources' commit id.

  • lo_dir: The installation directory for Lo. /opt/online by default.
  • lo_forcebuild: A boolean to override idempotence and force LibreOffice compilation and installation. false by default.
  • lo_configure_opts: comma separated list of build options. Added to the distro. `` by default. For experts only! Each update of the sources by the script will trigger a lO compilation & installation
  • lo_src_repo: the Git repository "https://github.com/LibreOffice/core.git"
  • lo_src_branch: an existing branch name. It pull the latest Tag available master by default
  • One of the 2:
    • lo_src_commit: the id of a git commit in the selected branch. empty by default
    • lo_src_tag: a tag in the selected branch. empty by default

If more than one is defined, a choice is made:

  • choice precedence: Commit over tag

POCO:

Poco is an opensource C++ library for network based project. It is required by LibreOffice Online.

  • poco_version: a specific version to download, compile and install. Fetch the latest stable release from https://pocoproject.org/ by default.
  • poco_dir: The installation directory for poco. /opt/poco-${poco_version}-all by default.
  • poco_forcebuild: A boolean to override idempotence and force POCO compilation and installation. false by default.

Lool

Lool (LibreOffice Online) in a project to bring a opensource Office solution for web editing.

  • lool_dir: The installation directory for Lool. /opt/online by default.
  • lool_forcebuild: A boolean to override idempotence and force LibreOffice Online compilation and installation. false by default.

Sources status:

For Idempotence, Lool's status is defined by its sources' commit id.

Each update of the sources by the script will trigger a lool compilation & installation

  • the Git repository: lool_src_repo "https://github.com/LibreOffice/online.git"
  • One of the 3:
    • lool_src_branch: an existing branch name. It pull the latest commit available master by default
    • lool_src_commit: the id of a git commit. empty by default
    • lool_src_tag: a tag in the git repository.empty by default

If more than one is defined, a choice is made:

  • choice precedence: Commit over tag over branch

Compilation options:

The following parameters are options passed to the configuration script before compilation.

  • lool_logfile: /var/log/loolwsd.log
  • lool_maxdoc: Maximum number of simultaneously opened documents for Lool. 100 by default.
  • lool_maxcon: Maximum number of simultaneously opened connections for Lool. 200 by default.
  • lool_configure_opts: comma separated list of build options. Added to the distro. Empty by default. For experts only!
  • lool_prefix: The base directory from where the directory tree is generated. Used to install the application '/usr' by default
  • lool_sysconfdir: The base directory from where the application's is located '/etc' by default
  • lool_localstatedir: The base directory from where the application's state files are located. '/var' by default

Debug

Can be enabled by running sudo ./officeonline-install.sh -c lool_configure_opts='--enable-debug' -f lool

or

add --enable-debug to lool_configure_opts='' in officeonline-install.cfg before compiling. Don't forget to remove the #

Change filesystem allow="false" to "true" in /opt/online/loolwsd.xml

Enabling debug can pose a security risk. Use it only for testing.

Nota Bene

  • All the script's output is logged in the folder $PWD/YYYYMMDD-HHmm_officeonline-install . where YYYYMMDD-HHmm is the date at the minute the script as been launched.

  • Maxdoc & Maxcon are built-in limitations in WebSocket and intended to guarantee a good QoS and limit resources consumption on the host. If you intend to change this parameters, take into account that 1 doc opened is around 20MB of RAM used.

  • Default parameters are values chosen by the maintainers of this script and not default values used by the softwares compiled here.

  • If you ever need support for using this script, try to run it first with all parameters at default to get a reference point.

Enjoy your free Office Online!