クラウドコラボレーションサーバ「Collabora Online」を構築してみた(4) 〜さくらのクラウド/さくらのVPSでの構築例(後編)〜

はじめに

さくらのナレッジ編集部の法林です。

ブラウザで複数人による同時編集ができるオープンソースのクラウドオフィスソフトウェア・Collabora Onlineの環境構築について解説する記事です。1本では書ききれなかったので2本目をお送りします。

前回の記事では、さくらのクラウドにUbuntuのサーバを作成し、その上でCollabora Onlineの環境を構築しました。それに続くこの記事では、Ubuntuの代わりにCentOSを使ったり、さくらのクラウドの代わりにさくらのVPSを使って構築した結果をレポートします。また、Collabora Onlineがうまく動作しないケースもいくつかあったので、それらの例も紹介します。

注意事項

前回の記事にも書きましたが、Collabora Onlineはまだ発展途上のソフトウェアで、中身がどんどん変化しているようです。この記事はあくまでも2022年4月現在の情報であり、今後も構築方法が変化する可能性がある(つまりこの記事に書かれている情報は古くなりやすい)ことをあらかじめお伝えしておきます。

CentOS 7での構築

前回の記事ではUbuntu 20.04を使用しましたが、CentOSでも構築できるのかを試してみました。

まずはCentOS 7で構築してみました。結論から書くと、コマンドレベルでの差異はありますが、基本的には前回の記事と同じ手順でCollabora Onlineを動かすことができました。ほぼ再掲になりますが作業項目は以下の通りです。具体的なコマンドの掲載は省略します。

  1. さくらのクラウドにてCentOS 7のサーバを作成
  2. ソフトウェアパッケージの管理システムとしてSNAPを導入
  3. SNAPを用いてNextcloudをインストール
  4. NextcloudのコマンドでSSL証明書(Let’s Encrypt)を導入
  5. CODE(Collabora Online Development Edition)のサーバをrpmパッケージでインストール
  6. NextcloudのGUIからCollabora Onlineをインストール

Collabora Onlineでファイルを開き、上部メニュー→ヘルプ→このソフトウェアについて を開くと、どのOSで動いているかが表示される)

Ubuntuでの構築と異なる点は以下の通りです。

  • さくらのクラウドで作成したCentOS 7のサーバはfirewalldが稼働していて、dhcpv6-clientとsshのみ許可する設定になっています。よって、Collabora Onlineが使用するポートを追加で許可する必要があります。コマンドで書くと以下のようになります。
    firewall-cmd --add-service=http --add-service=https --permanent
    firewall-cmd --add-port=9980/tcp --permanent
    firewall-cmd --reload
    
  • CentOS 7ではパッケージ管理コマンドがaptではなくyumなので、ソフトウェアのインストールなどでaptを使っているところはyumに置き換えます。
  • SNAPを導入するときに /snap ディレクトリが作成されないので、シンボリックリンクの作成が必要になるようです。コマンドとしては以下のようになります。
    yum install snapd
    systemctl enable --now snapd.socket
    ln -s /var/lib/snapd/snap /snap
    
  • /snap/bin にインストールされたソフトウェアを実行できるようにするために、上記のコマンド実行後にいったんサーバからログアウトし、再度ログインし直す必要があります。
  • CODEサーバの構築において追加するリポジトリや実行するコマンドが異なります。これはCollabora Onlineの公式ドキュメントに手順が記載されていますが、こちらにも載せておきます。
    wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key
    rpm --import repomd.xml.key
    yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7
    yum install coolwsd CODE-brand
    

CentOS Stream 8での構築

Collabora Onlineとしては公式に対応しているかどうかよくわからないのですが、すでにサポートが終了したCentOS 8の後継となるCentOS Stream 8でも構築してみました。こちらもCentOS 7と同じ手順で動かすことができました。CentOS 7との差異は、CODEサーバの構築におけるリポジトリの指定が違うことぐらいです。コマンドを掲載しておきます。

wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos8/repodata/repomd.xml.key
rpm --import repomd.xml.key
yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos8
yum install coolwsd CODE-brand

なお、CentOS Streamには9もありますが、こちらはまだCollabora Onlineが対応していないようです。将来的には対応するかもしれませんが未確認です。

さくらのVPSでの構築

続いて、さくらのクラウドの代わりに、さくらのVPSを使って構築してみました。こちらも同様の手順で構築できましたが、さくらのクラウドとは異なる点がいくつかありますので、それを中心に解説します。

プランの選択

さくらのクラウドではCPU数やメモリ量などを自分で設定してサーバを作成しますが、さくらのVPSではいくつかのプランから選択することになります。Collabora Onlineの動作要件を満たすには2G以上のプランを選択してください。

※余談ですが、さくらのVPSでは2022年9月30日まで「年払い30% OFFキャンペーン」を実施中です。詳しくはさくらのVPSニュースをご覧ください。

OSの選択

さくらのVPSのサービスサイトに掲載されている「提供OS一覧」のうち、Ubuntu 20.04、CentOS 7、CentOS Stream 8については、サーバ作成後(すでに契約しているサーバの場合はOS再インストール後)、さくらのクラウドでの構築と同じ手順で動かすことができました。

パケットフィルタは無効に

さくらのVPSには「パケットフィルタ」という機能があり、これを使うとOS側でファイアウォールの設定をしなくてもアクセス制限ができます。しかし今回はOS側でアクセス制限を設定していますので、パケットフィルタは無効にしておいてください。

Ubuntu 22.04での構築

2022年4月に、Ubuntuの新しいバージョンであるUbuntu 22.04 LTSがリリースされました。そこで、こちらのバージョンでもCollabora Onlineが構築できるかどうか試してみました。

まずはOSのインストールです。2022年4月26日、さくらのVPSにおいて、ディストリビューション公式ISOイメージ「Ubuntu 22.04」が提供開始されました。ここではこれを使用してさくらのVPSにUbuntu 22.04をインストールします。(ISOイメージを使ったインストール方法については、さくらのVPSのマニュアルの「ISOイメージインストール」をご確認ください)

OSインストール後は、前回の記事に書いた手順の通りに作業することで、Collabora Onlineの環境を構築することができました。Ubuntu 20.04を使った手順との差異としては、CODEサーバの構築において最初にリポジトリを追加しますが、そのときに /etc/apt/sources.list.d/collaboraonline.sources ファイルに書き込む内容が変わります。Ubuntu 22.04の場合は以下のようになります。(CODE-ubuntu2004だったところがCODE-ubuntu2204になります)

Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg

ISOイメージを使ったOSインストールは手間がかかりますが、さくらのVPSの標準OSや、さくらのクラウドのパブリックアーカイブにUbuntu 22.04が用意されれば、構築作業はもっと簡単になるでしょう。

運用開始後の注意点

Collabora Onlineの構築が完了したら運用に入ります。脆弱性などに対応してソフトウェアを随時更新するなどといった通常の注意事項に加えて、本システムではSSL証明書の更新に注意が必要です。

今回構築したシステムでは、Nextcloudに用意されている下記のコマンドでSSL証明書を作成し、それをNextcloudとCODEサーバで参照しています。

nextcloud.enable-https lets-encrypt

上記コマンドで作成したSSL証明書は、以下の場所に設置されます。これはNextcloudが参照します。

/var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/cert1.pem
/var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/privkey1.pem
/var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/fullchain1.pem

一方、CODEサーバが参照するSSL証明書は上記をコピーしたもので、以下の場所に設置しています。

/etc/coolwsd/cert.pem
/etc/coolwsd/key.pem
/etc/coolwsd/ca-chain.cert.pem

nextcloud.enable-httpsコマンドのヘルプによると、SSL証明書は自動的に更新されると書いてあります。

% nextcloud.enable-https -h
Available subcommands:
    lets-encrypt [OPTIONS]
    Obtain a certificate from Let's Encrypt and automatically keep it
    up-to-date.

しかし、これはNextcloudが参照するSSL証明書だけが更新されるものであり、CODEサーバが参照するSSL証明書は更新されません。よって、SSL証明書をCODEサーバの設定ディレクトリに手動でコピーする操作(下記)を、何らかの方法で定期的に行う必要があります。(例えば下記の操作をシェルスクリプトにしてcronで実行するなど)

cd /etc/coolwsd/
cp /var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/cert1.pem ./cert.pem
cp /var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/privkey1.pem ./key.pem
cp /var/snap/nextcloud/current/certs/certbot/config/archive/clbr.example.jp/fullchain1.pem ./ca-chain.cert.pem
chown cool:cool *.pem

構築に失敗するパターン

筆者がCollabora Onlineの構築をする中で、これをやると失敗するという体験がいくつかありました。ここからはそれらの失敗パターンを紹介します。ただし、これらはソフトウェアのバグや設定の不具合ではないかと予想されるので、今後の修正により問題が解消される可能性があります。(そうなることを期待しています)

CODEサーバをNextcloudのアプリで導入する

Nextcloudにログインしてアプリの一覧を見ると、「Collabora Online -Built-in CODE Server」があります。これもCODEサーバなのですが、CODEサーバをこちらのアプリで導入すると、動作はするものの、日本語フォントが表示されないという不具合に遭遇します。原因はわかりませんが、同じCODEサーバでも、アプリ版とdeb/rpmなどのパッケージ版では内容に何か違いがあるのだろうと予想しています。

Welcome to Nextcloud Hub.docx を開き、日本語を入力したがすべて□になる

Nextcloudをスタートアップスクリプトでインストールする

さくらのクラウドやさくらのVPSには「スタートアップスクリプト」という機能があり、これを使うと特定のソフトウェアをインストールしたサーバを作成することができます。

Nextcloudのスタートアップスクリプトも用意されているので、それを使ってサーバを作成してからCollabora Onlineを構築してみました。しかし、起動後にODTやDOCXファイルにアクセスすると、本来であればファイルをブラウザ内で表示・編集できるはずが外部ビューア(LibreOfficeやMicrosoft Wordなど)を起動してしまい、うまくいきませんでした。

これも原因はわかっていませんが、スタートアップスクリプトで導入されるNextcloudとSNAPで導入されるNextcloudに何か違いがあり、そのために正常に動作しないのではないかと推測しています。ちなみにNextcloudのスタートアップスクリプトではSNAPを使っておらず、必要なソフトウェアをyumやgit cloneでインストールしています。(スクリプトはGitHubで見ることができます)

Collabora Onlineが対応していないディストリビューションを使用する

Collabora Onlineの公式サイトには、対応ディストリビューションが以下のように書いてあります。

  • Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04
  • CentOS 7 (at least 7.2), CentOS 8
  • SLE 15.x, openSUSE Leap 15.x

よって、上記以外のディストリビューションでは、少なくとも本記事執筆時点では構築できないと思われます。例えば、最近CentOSの後継として出てきたAlmaLinux、Rocky Linuxや、CentOS Streamの最新版であるCentOS Stream 9などです。しかし今後対応するかもしれないので、ときどきチェックするとよいかもしれません。

まとめと感想

Collabora Onlineの環境をさくらのクラウドやさくらのVPSで作ってみた様子を、2本の記事でお届けしました。失敗に陥るパターンが多く、簡単に試せるとは言えないのが正直な感想ですが、正常に動作するものを構築できれば、今回ぐらいの性能のサーバ(2コア/メモリ4GB)でも数人による同時編集ができます。榎さんの記事でも紹介したように、デスクトップとオンラインの互換性が高く、レイアウト崩れに悩まされることがないのは大きな魅力だと思います。興味を持った方は使ってみてください。