設置: GNU socialのプラグイン

GNUsocial/install

概要

分散SNSのGNU socialにはプラグイン機能が採用されています。プラグイン単位で機能をオン・オフできるほか、ソースコードを修正しなくても、サーバー管理者が機能を追加できます。

GNU social以外には、FriendicaとMisskeyにもプラグイン機能があります。ただ、Misskeyのプラグインはサーバー機能には干渉できないため、機能が限定的です。

同じ分散SNSで人気のMastodonやPleromaにはプラグイン機能が採用されておらず,基本的にはソースコードを修正するしか拡張の余地がありません

そういう意味では、プラグインはGNU socialにとって、非常に柔軟・強力・特徴的な機能です。

今回は、マニュアル (DOCUMENTATION/SYSTEM_ADMINISTRATORS/PLUGINS.mdplugins/README.md)をベースに、プラグインの新規追加・インストール方法を紹介します。

手順

プラグインの追加は以下の手順で行います。

GNU socialのプラグインの有効化手順
  1. プラグイン (例: Example) を入手し、local/plugins/ディレクトリー配下に格納 (例: local/plugins/Example) する。
  2. public/plugins/に1へのシンボリックリンクを作成、またはコピーして配置 (例 public/plugins/Example) する。
  3. config.phpaddPlugin('Example'); を追加する。

GNU socialに同梱されているプラグインの場合、手順1-2は省略され、手順3のconfig.phpの修正のみで済みます。

プラグインはplugins/local/local/plugins/ディレクトリーが検索対象となります。ただし、これらの内pluginsはGNU socialの同梱プラグインの格納ディレクトリーのため、サードパーティー製のプラグインは基本的にlocal/pluginsに配置すればよいです。

GNU social v2からディレクトリー構成が変更になったため、プラグインにCSS・JavaScript・画像などの公開リソースが存在する場合、public/plugins/にも配置する必要があります。

以下のようなコマンドで、シンボリックリンクを作成するとよいです。シンボリックリンクではなく、単にファイルをコピーして配置してもOKです。

cd gnu-social
PLUGIN=Example
ln -fns local/plugins/$PLUGIN public/plugins/

使用する公開リソースだけを配置したほうが望ましいですが、更新忘れなどの手間になるため、ディレクトリーのシンボリックリンクや丸ごとコピーでよいと思います。

最後に、設定ファイルのconfig.phpでプラグインを有効にします。

addPlugin('Example');
addPlugin('Example', ['param1' => 'value1']);

addPluginの第1引数のExampleに対して,検索対象ディレクトリーから'ExamplePlugin.php'または'Example/ExamplePlugin.php'を読み込みます。したがって、ディレクトリー名が重要なので注意します。

プラグインのマニュアルなどで、パラメーターがある場合、配列でキーと値を指定できます。

最後のconfig.phpでのプラグインのオン・オフはGUIからも可能です。

[Admin]-[Plugins(/panel/plugins)] にプラグインの一覧が表示されるので、[Enable/Disable] でオン・オフを切り替えられます。このボタンを選ぶと、config.phpにaddPluginの行が自動的に追記・削除されます。ただし、パラメーターは設定できないため、その場合はconfig.phpを直接編集するしかありません。また、サードパーティープラグインの場合、[Delete] ボタンも表示され、プラグインの削除 (アンインストール) もできます。

なお、Plugins画面の冒頭に [Install Plugin] のボタンがあり、GUI上でインストールもできるようですが、ディレクトリーの書き込み権限をうまく解決できず、GUIでのインストールはうまくできませんでした。public/plugins/へのリソース配置まで考慮されているかどうかも若干怪しいです。動作を確認できれば、情報を追記します。

事例

実際に外部からプラグインをダウンロードして有効にする手順を解説します。Qvitterプラグインの例で紹介します。

UNIX系OSのコマンドでだと、以下のコマンドでインストールできます。

mkdir -p local/plugins # 初回の場合ディレクトリーを作成
PLUGIN=Qvitter
git -C local/plugins clone --depth 1 https://notabug.org/gnusocialjp/Qvitter
ln -fns local/plugins/$PLUGIN public/plugins/
echo "addPlugin('$PLUGIN')" >>config.php

コマンドを使わない場合は以下の手順となります。

  1. gnusocialjp/Qvitter」にアクセスし、右端の↓アイコンを選んでファイルをダウンロード (Qvitter-develop.zip) します。
  2. ダウンロードしたzipファイルをlocal/plugins/に移動して解凍します。デフォルトでは,local/pluginsディレクトリーが存在しないので、作成しておきます。
  3. 解凍後のディレクトリー名をqvitterからQvitterに変更 (local/plugins/Qvitter) します。
  4. Qvitterディレクトリーをコピーして、public/plugins/に配置 (public/plugins/Qvitter) します。
  5. config.phpaddPlugin('Qvitter');を追加します。

以上でインストール完了です。

プラグインを無効にする場合、config.phpに追加したaddPlugin('Qvitter');の行を削除かコメントアウトすればよいです。

結論

GNU socialの特徴的な機能であるプラグインの追加・インストール方法を紹介しました。

v2.0になって、public/plugins/にリソースの配置が必要になったのがやや手間ですが、それ以外はダウンロードして配置するだけなので、そんなに難しくはありません。

GNU socialは10年以上の歴史のある分散SNSの実装であり、同梱されているプラグインも数多くあります。さらに、他の人が開発したプラグインを使うこともできるし、気に入らなければ自作することもできます。

プラグインによる機能拡張がGNU socialの真骨頂ともいえると思います。プラグインにより、自分好みの分散SNSを実現していきましょう。

コメント

Copied title and URL