おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

Nextcloud+LibreOffice Onlineの検証環境をdockerでさくっと立てる

この記事はLibreOffice Advent Calendar 2019の12/8分の記事となります。昨日はアイクラフト村上さんの「LibreOffice Conference 参加報告と珍道中」でした。わたくしの台風大変でした記事より遥かに面白かったですね。

今日は小ネタ。みなさんに公表したいというより、わたくしの個人的メモ。忘れそうなのでね……。

LibreOfficeくんには、LibreOffice Onlineという「オンラインで(ブラウザ越しに)使えるLibreOffice」があります。通称LOOL(ろーる)。

こいつ実用的にもきっと便利だと思うのですが*1、それよりも実装がなんというか大胆で、個人的にはそこがキュートだと思っております。そんな話をこないだオープンソースカンファレンス2019 Tokyo/Fallで話をしたんですが、いやー人来なかったですねw せめてスライドのPVだけでも上げたいのでリンク貼っときます*2

www.slideshare.net

まあともかくそんなかわいいLOOLちゃんをちょっとさわってみたい、デモりたいとき。むかしはPCでLibO本体含めビルドしてたんですが(それはそれで、実装まで見られて面白い)、スライドにも書きましたがLOOLちゃんは単独で動作するとたんなる生々しい部品で、ほかのソフト……典型的なのがNextcloudですけど、の中に組み込むと威力を発揮するので、そういう環境のほうがデモ映えするじゃないですか。なのでNextcloud+LOOL作りたい。

で、わたくしコンテナとかの分野には明るくないのですが、さくっと検証環境作ってすぐ捨てるみたいなときはdockerとか使うし使いたいなと*3。で、前述のOSCのスライド作るために重い腰をあげてやってみたら一瞬で、なんだ簡単じゃんってなりました。なのでみなさんも簡単にLOOL立てて遊んでみてほしいなと。

あ、これから書くやりかたはあくまでも検証用・デモ用です。普通に外部にLOOLのポートさらしたりするので、遊び終わったら捨てる感じでお願いします。本番向けの手順は昔の記述はチョロチョロあるけど結構変わっている感があるので、だれか今年のカレンダーで書いてくれないかしら……。

用意するもの

  • なんか固定IPまたは外部解決可能な名前をもった環境
    • わたしはAWS上でt2.medium借りました。メモリは2GBぐらいあったほうがいいです
  • そのなかにUbuntu 18.04LTS
  • ポート22、80、9980を開放
  • docker入れる(sudo apt install docker.io で入るやつで十分)

あ、Ubuntuじゃなくてももちろんお好みのディストリビューションで良いですよ。

手順

お断りですが、実は今回のお試しはLOOLそのものではなくて、LOOLを元にした商用版Collabora Onlineの開発者向けディストリビューションCODEというのがありましてそいつを使いました。

www.collaboraoffice.com

LOOLのdockerイメージも配られてるので手順一緒だとは思うんですけど未検証なので……違いがあったら後ほど別記事でフォローします or 誰か書いてください。

で、基本的にはCODEの解説ページ

www.collaboraoffice.com

にある手順なんですけどこのページ微妙に情報足りない気がする*4のでそれだけ……。

まずはNextcloudをdockerで上げます。雑にHTTPで。

docker run -d -p 80:80 nextcloud

で、http://ホスト名/ でNextcloud 起動して初期設定済ませたら、「アプリ」で「Collabora Online」を入れます。プラグイン名はこうだけどオープンソースなLOOLも使えますのでご安心を。

Collabora Online - Apps - App Store - Nextcloud

次はCODEをdockerであげるのですが、前述ページにしたがってコマンド叩くと、後の手順でLOOL君がNextcloudからの接続拒否るのでしばらく悩みました。話は簡単で、Nextcloud-LOOLの接続を外部名でするのですが、LOOLのデフォルト設定はlocalhostまたはプライベートアドレスからの接続以外を拒否るようになってるからですね*5。なので外部名を環境変数で指定してあげればOK。

docker run -t -d -p 9980:9980 -e "domain=<your-dot-escaped-domain>" -e "extra_params=--o:ssl.enable=false" collabora/code

<your-dot-escaped-domain> はたとえばIPアドレスだったら 203\.0\.113\.123 みたいにドットをバックスラッシュでエスケープしてあげたやつ。

で、docker attach でLOOLのコンテナにアタッチしてログ見て、LOOL起動するまで待ってあげたほうが無難。ちょっと時間かかるので。

最後にNextcloudに戻って、設定 > Collabora Onlineにて、ここで指定したドメインまたはIPアドレスhttp://203.0.113.123:9980 のように設定すればOK!

簡単でしょ。ぜひ、遊んでみてください。そして、本番向け手順をAdvent Calendarに書いてくれるとうれしいです。

なんかうまく起動しないなーという場合はさっきアタッチしたところでなんかログが出てると思うのでそれを確認してみると参考になるかもです。

明日はbaffclanさんです。よろしくです!

*1:残念ながら本格的に使ったことはまだないのです。私の所属する会社に導入できたらな、とは思ってたりするのですが……。

*2:そもそもこのブログのPVが……って話がですね……。

*3:dockerが本番向けではないという意味ではもちろんなく、わたくしのIT力がdockerに限らず本番運用するには足りないってだけです。

*4:意図的なのかなあ……。

*5:CODEのquick tryoutの場合例示IPアドレスが192.168.100.20で、このアドレスレンジはもとから接続できる設定になってます。