How to spend the terminal

技術ブログでさえない

Raspberry Pi 2 Model BでGNU social

この記事は、SLP KBIT Advent Calendar 2016 10日目の記事です。

はじめに

Twitterはことあるごとにダウンします。 自分はツイートをよくするのでじれったく思います。 Twitterは最近身売りを検討していると聞きます。 買収されるならともかく、もしTwitterがなくなったらどうすればいいでしょうか。

Twitterが使えない時にどのSNSを使えばいいでしょうか、FB、Instagram、LINEなど様々なSNSがありますが、Twitterの完全な代替となるようなSNSはほとんどないと思います。 しかし、その中でもGNU socialはTwitterの代わりになりうると思いました。

GNU social

GNU socialはTwitterのようなマイクロブログを提供するソフトウェアです。 名前の通りフリーソフトです。 GNU socialの目的はマイクロブログの連合を作ることによる中央集権化された資本主義なサービスからの離脱、とのことです。 ソースコードgithubで公開されているため、簡単に導入することができます。PHPで書かれているのでビルドの必要はありません。

導入した理由

以前より、 https://Quitter.no でアカウントを作ってクイップを行っていたのですが、GNU socialの思想が(フリーソフトウェアという思想の他に)自分のサーバに掲示板を建てたりするパソコン通信と似ているのではと思い、導入しようと思いました。導入の際にApacheとnginxの使い方を学ぶこともできました。

Raspberry Piを使った理由

Raspberry Piで建てられるなら安価でGNU socialを普及することができると思ったからです。RPiより安いマシンがあるかも

今回使ったRaspberry Piは「Raspberry Pi 2 Model B」です。

(2017/04/16 追記)OSはRaspbian Jessieです。

参考サイト

以下のサイトを参考にしました。

GNU socialのインストール - Akionux-wiki

Instalar GNUSocial en una Raspberry Pi - la Enredadera

GNU Social · Mesh network Practical Guide

導入まで

下準備

GNU socialには - PHP - MariaDB - サーバ

の3つが必要なので、 GNU socialのインストール - Akionux-wiki を参考にしてインストールします。

nginxを用いる場合、

sudo apt-get install git nginx php5 mariadb-server mariadb-client php5-curl php5-gd php5-intl php5-gmp php5-json php5-mysqli openssl exif gettext

で揃います。

MariaDBの設定

MariaDBにログインして、データベースを作ります(ここではsocialとします)。

CREATE DATABASE social;
GRANT ALL on social.* TO 'social'@'localhost' IDENTIFIED BY 'agoodpassword'

GNU socialのダウンロード

GNU Socialを適当なディレクトリにダウンロードします。

git clone https://git.gnu.io/gnu/gnu-social.git

ダウンロードしたら公開するディレクトリ(ここでは/var/wwwとします)にgnu-socialを移動して、書き込み権限を与えます。

sudo chmod a+w /var/www/gnu-social/

gnu-socialに - avatar - background - file

というディレクトリを作って書き込み権限を与えます。

nginxの設定

nginxの設定を GNU Social · Mesh network Practical Guide の"Confiugre Nginx Web Server to Server GNU Social"を参考にして行います。

基本的には参考元の設定(server_nameの名前は変える、httpsを使う場合はポート番号を443にしてSSL設定を追加する)を使えばいいのですが、httpでアクセスされた時にhttpsに変換するために次の設定を追加しました。

server {
  listen 80;
  server_name example.com;
  rewrite ^ https://$server_name$request_uri? permanent;
}

アクセス

アクセスしてうまく設定ができていれば初期設定ができます。初期設定ができれば導入完了です。

最後に

2ヶ月ほどの試行錯誤の末、GNU socialを導入することができました。

自分で立てたインスタンスなので、何をやっても自由です。 みなさんも自由な自宅SNSを立ててみてください。