Installation | Topics | Beyond Lino

More about the LibreOffice service

As we mentioned in Set up a Lino production server, A Lino server must have a LibreOffice (LO) service when at least one Lino site of a server uses lino_xl.lib.appypod.

getlino configure installs a LibreOffice service when the option --appy is specified.

When multiple Lino sites using lino_xl.lib.appypod run on a same server, only one LO service is needed.

The LO service is implemented as a supervisor config file named /etc/supervisor/conf.d/libreoffice.conf with the following content:

# generated by getlino
[program:libreoffice]
command = libreoffice --accept="socket,host=127.0.0.1,port=8100;urp;" --nologo --headless --nofirststartwizard
umask = 0002

The Lino sites requiring LO service remain functional even when the service is down because the service is needed only when a user actually requests to print a document using the appypdf, appydoc or appyrtf methods.

It is possible that these printing methods are used only sporadically and that nobody complains when they fail… until the moment when they are urgently needed.

That’s why getlino installs a hourly cronjob /etc/cron.hourly/healthcheck that tests (among others) whether the LO service is running

Background information

The remaining information on this page is needed only when something doesn’t work as expected.

The lino_xl.lib.appypod plugin uses appy.pod which in turn uses python3-uno to connect to a LibreOffice server.

appy.pod is part of the appy Python package and was automatically installed together with Lino into your Python environment.

But appy requires two system packages libreoffice and python3-uno, which must be installed using something like this:

$ sudo apt-get install libreoffice python3-uno

If this fails, you might try with adding the LibreOffice Fresh PPA:

$ sudo add-apt-repository ppa:libreoffice/ppa
$ sudo apt update
$ sudo apt upgrade

Then you need to run a LO server. For occasional or experimental usage you can fire it up manually using something like this:

$ libreoffice '--accept=socket,host=127.0.0.1,port=8100;urp;'

You can kill this process using Ctrl-C. Having libreoffice running like this can cause another (desktop) libreoffice process to fail.

But for regular usage and especially on a production server you will want to use a startup script:

  • Install the Supervisor package:

    $ sudo apt-get install supervisor
    

    Note that the supervisor package is being installed system-wide, it is not related to any specific project.

  • Create a file libreoffice.conf in /etc/supervisor/conf.d/ with this content:

    [program:libreoffice]
    command=libreoffice --accept="socket,host=127.0.0.1,port=8100;urp;" --nologo --headless --nofirststartwizard
    user = root
    umask = 0002
    
  • Restart supervisord:

    $ sudo service supervisor restart
    
  • Have a look at the log files in /var/log/supervisor and check the status:

    $ sudo service supervisor status