今回はLibreOffice Onlineの環境構築について話をしようかと思います。 CODE (Collabora Online Development Edition) というDockerイメージもあるのですが、コンパイルを実施してみることで見えることもあるはずです。 面倒くさいと思ったら、気にせずDockerでCODEを利用してくださいな。

1) 環境の準備

今回はGoogle先生に質問しても全く返事が返ってこないCentOS 7で構築してみます。

項目内容
OSCentOS 7
LibreOffice5.4.0.0.alpha0

正直、手順は大して変わらないんですけどね…… まず、LibreOfficeをコンパイルするための依存関係を解消します。

デフォルトではyum-builddepコマンドがインストールされていないので、yum-utilsをインストールします。

$ sudo yum install yum-utils

これでyum-builddepコマンドを実行できるので、下記コマンドでLibreOfficeの依存関係を解消します。

$ sudo yum-builddep libreoffice

依存関係はおおよそこれで解消できますが、先に日本語フォントを入れておきましょう。(※ここでは、IPAフォントをインストールしています)

$ sudo yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

2) 必要なもののコンパイル

2-a) LibreOfficeのコンパイル

以下のコマンドで、最新版のLibreOfficeのソースコードをダウンロードします。(※とても大きくファイル数も多いので、気長に待ちましょう)

$ git clone git://anongit.freedesktop.org/libreoffice/core

次に、ダウンロードしてきたLibreOfficeをコンパイルします。まず、コンパイルの設定をしてしまいます。

$ cd ~/core/
$ ./autogen.sh --with-lang="ja"

コンパイル設定が完了したら、コンパイルしてしまいます。(※恐ろしいほど時間がかかります。コマンドを叩いたら当日中の作業は諦めて寝ましょう。ちなみに、1Core 2GBメモリの仮想マシン上でコンパイルした際は6時間以上必要でした)

$ make

コンパイル後の実行ファイルが欲しいだけなので、インストールまではしません。

2-b) LibreOffice Onlineのコンパイル

以下のコマンドで、最新版のLibreOffice Onlineのソースコードをダウンロードします。

$ git clone git://anongit.freedesktop.org/libreoffice/online

これをコンパイル……する前に、WebSocket通信ライブラリであるPOCOライブラリをインストールしましょう。なお、POCOライブラリはstandardとallがありますが、allの方をダウンロードしてください。ここではインストールディレクトリとして、/opt/pocoを用いています。

$ wget https://pocoproject.org/releases/poco-1.7.8/poco-1.7.8p2-all.tar.gz
$ tar zxvf poco-1.7.8p2-all.tar.gz
$ cd poco-1.7.8p2-all
$ ./configure --prefix=/opt/poco
$ make
$ sudo make install

POCOのインストールが完了したら、今度こそLibreOffice Onlineのインストールに入ります。依存関係に必要なライブラリやコマンドをインストールします。

$ sudo yum install libcap-devel epel-release
$ sudo yum install npm

これでインストールしたnpmは若干古くコンパイルが通らないので、とにかく最新版にしてしまいましょう。面倒なのでnコマンドを使ってしまいます。

$ sudo npm install -g  n
$ sudo n latest
$ sudo npm update -g npm

jakeコマンドも必要なので、npmからインストールしてしまいます。

$ sudo npm install -g jake

これでコンパイルの準備が整いましたので、コンパイルしていきましょう。

$ cd ~/online
$ ./autogen
$ ./configure --enable-silent-rules --with-lokit-path=/home/mainte/core/include --with-lo-path=/home/mainte/core/instdir --with-poco-includes=/opt/poco/include --with-poco-libs=/opt/poco/lib --enable-debug
$ make

コンパイルが完了したら実行の前に、必要なファイル・ディレクトリを準備します。まずはSSL証明書を設置します。

$ sudo mkdir /etc/loolwsd
$ sudo cp etc/* /etc/loolwsd

次に、LibreOffice Onlineのキャッシュディレクトリを作成します。

$ sudo mkdir -p /usr/local/var/cache/loolwsd
$ sudo chown mainte. /usr/local/var/cache/loolwsd

これでLibreOffice Onlineの起動準備が整いました。以下のコマンドで起動可能です。

$ & make run

LibreOffice Writerが表示されますね。ツールバーも一部日本語で表示されています。やったね。

LOOL (LibreOffice Online) の画面

3) LibreOffice Onlineのサービス化

LibreOffice Onlineをサービス化します。/etc/systemd/system/lool.serviceを作成しましょう。

$ sudo vim /usr/lib/systemd/system/lool.service
[Unit]
Description = LibreOffice Online daemon

[Service]
ExecStart = /home/mainte/online/loolwsd --o:sys_template_path=/home/mainte/online/systemplate --o:lo_template_path=/home/mainte/core/instdir --o:child_root_path=/home/mainte/online/jails --o:storage.filesystem[@allow]=true --o:admin_console.username=admin --o:admin_console.password=admin
Restart = always
Type = simple
User = mainte

[Install]
WantedBy = multi-user.target
$ sudo ln -s /usr/lib/systemd/system/lool.service /etc/systemd/system/lool.service

その後、以下のコマンドでサービスに登録されます。

$ sudo systemctl daemon-reload

これでLibreOffice Onlineがサービスとして起動できますので、起動してみましょう。

$ sudo systemctl start lool