NextCloudからEtherpad−Lite(共同ワープロ)を使う

Waffle Cell v2 テスタープランはこちらから

DropBoxと同じようなことができ(もちろん制限なしで!)、さらにWaffle Cell v2 ではテレビ会議も利用できるようになったNextCloudですが、今回、共同ワープロ Etherpad-liteとも統合されました。

※ Etherpad-liteはブラウザベースのテキストエディタで、複数人で同時にテキストを編集できる機能です。

これからは友人、知人、社員にNextCloudのユーザーアカウントを発行するだけで共同ワープロの機能が利用できるようになります。VPN接続も必要ありません。

ちなみに私は一人共同ワープロを実践しています。例えばタブレットで面白い記事を見つけたらその引用やURLをEtherpad-liteに貼り付けます。そしてPCでそれを参照する、とうい感じです。もちろん会社ではもっとも利用することが多いのがこの機能です。

インストールの手順は以下のとおり簡単です。数分で本機能が利用できるようになります

  1. 管理者としてログインし、「サービス追加削除(一般)」の「アップデート」「サービス一覧アップデート」を実行
  2. NextCloud、Etherpad-liteをインストール(既にインストール済みでない場合)
  3. 「サービス追加削除(一般)」の「Web」にある「NextCloud Etherpad統合」をインストール

NextCloudの「+」にある「Protected Pad」を選択し、ファイル名をつければ、すぐに編集ができるようになります。(Padは選ばないで下さい。セキュリティの関係で、共有できません)

新規共有ファイル作成
新規共有ファイル作成

もし他のユーザーと共有したい場合は、共有設定でユーザー名またはグループ名を設定して下さい。同時に編集が可能となります。

※ 2つの違いはセキュリティの強化です。ただし今回の統合ではセキュリティを通常よりも上げているので、どちらを選んでも大きくはかわりません。

※ この機能をインストールするとWaffle CellのトップからEtherpad-liteのメニューが消えます。セキュリティ強化のため、NextCloudでの認証がないと利用できないためです。


少しだけ今回の統合で遭遇した技術的な話を書いておきます。

通常、Etherpad-liteは外部のサーバーに設置されます。実際に世界中には数10のEtherpad-Liteが公開されていて、自由に利用できるようになっています。この場合セキュリティの問題は別として、NextCloudとの統合は楽ちんです。(ここを参照)しかしこれらのEtherpad-liteのサーバーは動き続ける保証はなく、実際に頻繁にサービスが停止されます。停止されるとそこに保存されていたデータへのアクセスは不可能になります。

第一、見ず知らずの素性もわからない人が管理しているサーバーにデータを保存するのは常識では考えられないことです。(クラウド業者も同じです)

しかしここで問題が発生しました。今回、NextCloudもEtherpad-liteも同じWaffle Cell内で動かします。そうなると、NextCloudに自宅から接続する場合と、外出先から接続される場合では、Etherpad-liteへの経路がかわります。ローカルとグローバルの問題再びです。

そこで今回は2つのサービスをつなぐownPadというプラグインにパッチを当てました。そこでこれらのサービスを作ってくれた皆様への感謝の印として、そのパッチをここに公開します。

まずは以下の関数を nextcloud/apps/ownpad/lib/Controller/に追加します。この関数はWaffle Cell専用です。通常はローカル接続のURLはIPとなります。

Function HURL($URL)
{
  $RemoteAdr = $_SERVER["REMOTE_ADDR"];
  if (!filter_var($RemoteAdr, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
  // Local
    if (strpos($URL,"https://l.") === FALSE) {
      $URL = str_replace("https://","https://l.",$URL);
    }
  } else {
  // Global
    $URL = str_replace("https://l.","https://",$URL);
  }
  return $URL;
}

そしてgetAppValue(‘ownpad’, ‘ownpad_etherpad_host’, ”)で得られた値を上の関数を一度通し、ローカルの場合は URL が l. からはじまるものに、そうでない場合は l. を取り除きます。

また、$url = $matches[1];を$url = HURL($matches[1]); に置き換えます。

※ NextCloudとEtherpad-lite間は TSL 接続が必須です。ということは、TSL証明書がその接続に必要なホスト名に対応している必要があります。Waffle Cellの場合は xxxxx.wafflecell.com も l.xxxxx.wafflecell.com も証明書に対応していますが、ローカルIP,例えば [192.168.10.219]は証明書に対応しているのでしょうか?もし対応していないと、上のパッチは使えないかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

+ 87 = 91