2017年4月アーカイブ

uehatsu (2017年4月25日 15:15)

【2017/04/26 01:17 追記】

本格運用されたい方は外付けHDDをUSBでつないで、swap領域をそちらに逃がしてください。

【2017/04/25 19:18 追記】

今回利用したのはRaspberry Pi 2B 1Gです。3Bならもう少し速く使えるかも。


さて、横浜鯖管理人のHatsuhito UENOことuehatsuです。先日からmastodonにはまってます。このゆるさがいいですね。

昨晩ふと思い立ってRaspberry Piにmastodonを立ち上げて見ましたので簡単にまとめます。

1. Raspbianをインストール

いろいろとサイトがあるので見てインストールしてください。

2. Dockerをインストール

$ curl -sSL https://get.docker.com/ | sh
$ sudo systemctl start docker
$ sudo usermod -aG docker pi

3. docker-composeをインストール

以下のサイトを参考にしました。Raspberry Pi用のdocker-composeをDockerイメージで配布してくださっています。

https://hub.docker.com/r/t0rx/rpi-docker-compose/

$ curl -L https://github.com/docker/compose/releases/download/1.7.1/run.sh > docker-compose
$ sudo mv docker-compose /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo vi /usr/local/bin/docker-compose
===== IMAGE行を以下に書き換え =====
IMAGE="t0rx/rpi-docker-compose:latest"
===== IMAGE行を以上に書き換え =====
$ docker-compose --version
↑イメージのダウンロードなどが始まりしばらくするとバージョンが表示されます

4. rpi-mastodonをgit clone

$ cd /var/lib/
$ sudo git clone https://github.com/gilir/rpi-mastodon.git
$ cd rpi-mastodon

5. rpi-mastodonの初期設定

$ sudo cp .env.production.sample .env.production
$ vi .env.production
↑よしなに編集

6. テスト起動

念のためテスト起動してみる

$ sudo docker-compose up -d

ここで色々とエラーがでるので、表示の通りに実行する。
何度か繰り返すと無事に起動する。docker-compose buildはする必要はない。

7. rake secretの実行

$ sudo docker-compose run --rm web rake secret

3回繰り返し、その結果を PAPERCLIP_SECRET, SECRET_KEY_BASE, OTP_SECRET に(この辺は普通のmastodonと変わらないので省略)

8. もう一度起動 & swap領域の拡張

$ sudo docker-compose stop
$ sudo docker-compose up -d

ここでメモリーが足りないことに気づいたのでswapを増やしておく。このswapの場所がSDカード上のため読み書きが頻発しSDカードの寿命を縮める事に。本格運用するなら外付けHDDなどに置く必要があるかも。ここを参照にした → http://qapla.blog52.fc2.com/blog-entry-296.html

$ sudo docker-compose stop
$ swapon -s
Filename                                Type            Size    Used    Priority
/var/swap                               file            102396  0       -1
$ sudo systemctl stop dphys-swapfile
$ sudo vi /etc/dphys-swapfile
=====
CONF_SWAPSIZE=1024
=====
$ sudo systemctl start dphys-swapfile
(しばらく時間かかる)
$ swapon -s
Filename                                Type            Size    Used    Priority
/var/swap                               file            1048572 0       -1
$ sudo docker-compose up -d

9. もろもろ

$ sudo docker-compose run --rm web rails db:migrate
$ sudo docker-compose run --rm web rails assets:precompile

10. nginxのインストール

SSL証明書はとりあえずオレオレ証明書を使いました。いろいろ検索すれば出てきますので省略。

$ sudo apt-get install nginx
$ vi /etc/nginx/conf.d/mastodon.conf 

https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md に書いてあるnginxの設定ファイルを書き換えて使いました。このまま使うとアセットが表示されないので以下の修正をしています。ホスト名は rpi.mastodon.local にしました。

  location /assets {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }

11. nginxの起動

$ sudo systemctl start nginx

これでブラウザからアクセスすると表示されました。

95b9016a3b3861b8.jpeg

cronの設定などは同じなので省略。
この時点で投稿は出来るようになりますが、メールの送信ができないので以下の方法でユーザーを強引に登録します。

$ sudo docker-compose run --rm web rails mastodon:confirm_email USER_EMAIL={登録したメールアドレス}



ついでにadminの設定もしておきます

$ sudo docker-compose run --rm web rails mastodon:make_admin USERNAME={登録したユーザー名}

これでお一人様インスタンスは完成です。自宅ネットワークからだとFWの問題などあって外部とは繫がりません。それ以上の事は自宅サーバの立ち上げ方なので省略します。


こんな感じでインスタンスがRaspberry Piに立ち上がりました。自宅で眠っているRaspberry Piがあったら立ち上げて見るのも面白いかもしれません。docker-compose buildをするにはハードルがまだまだ高いので、自分はこのあたりで手を引く予定ですw


私の所属している会社 アルカセット・コンサルティング株式会社 ではECサイトを一緒に作ってくれるエンジニアを募集中です。気になったかたは以下にメンションかDMを送ってください。

mastodon : @uehatsu@mastodon.yokohama

twitter : @uehatsu


Who is uehatsu?

uehatsu

アーカイブ

Facebook page