5年目のマストドン

2016年にリリースされ、2017年には世界中を巻き込んだ盛り上がりを見せていた分散型ソーシャルネットワーキングシステム「Mastodon」(マストドン)。

一時はTwitterを代替するか?!とまで言われましたが,2018年以降は表舞台からフェードアウトして,ニッチな界隈で生き残っている感じでした。マストドンのシステム自体は,いまも着実にバージョンアップを繰り返しています。

2017年4月に日本初の教育系マストドン・インスタンスとして開設された「elict-mastodon」(エリクト・マストドン)は,開設以来ずっと運営を継続してきました。

もっとも利用者が減り,システムの管理も停滞し,マストドンのバージョンも2.7.4でストップ。そのため,周りのインスタンスが3.0などにアップデートする中で,こちらとのフェデレーション(連合)機能も動かなくなっていました。

旧システム(2.7.2)

このブログでも当時のシステム構築について記していますが,マストドン推奨のサーバーOSではないCentOSで運用しようとしていたことも,アップデートが困難だった理由です。

いつかはサーバーそのものを引っ越しし,推奨サーバーOSのUbuntu上で再構築したいと考えて,早5年。

まさかTwitterがイーロン・マスク氏に買収され,Twitterというプラットフォームが揺るがされる日が来るとは思っていませんでした。再び,その代替システムであるMastodonが話題に。

すでに最新バージョンは4.0.2になっています。お引っ越し先のサービスとしてXserver VPSがよさそうだということも見えてきたところだったので,この機会にエイやと再構築することにしました。

というわけで,新生「elict-mastodon」を立ち上げました。

新システム(4.0.2)

すでに時代はGIGAスクール構想で小中学校や都道府県によっては高等学校にも学習者用情報端末が整備された世となりました。大学入試の世界でも情報科目の扱いを本格議論するようになってきています。

そうした話題をメインに扱う情報交換の場があってもよいはずですので,elict-mastodonをいま一度しっかり構築して,引き続き継続できるように整えた次第です。

もちろんTwitterは,運営会社のゴタゴタはあれど,コミュニケーション・プラットフォームとして今後も存続していくでしょうし,マストドンへの関心もまた時間とともに薄れるのだとは思います。それでも,何かあるときの緊急避難場所や選択肢の確保は決して無意味なことではないと考えています。

elict-mastodonは教育学習とICT活用に関心のある皆様の登録をオープンに受付けています。

教育関係者のみならず,お子様が学校に通っているご家族,学校ICT関係の企業に関わられている皆さん,教育と情報に関係することに関心があれば,どなたにも参加資格はあります。

情報交換の場を守るために,ご配慮・ご遠慮いただくこともあるとは思いますが,ゆるやかにコミュニケーションを展開できればと思います。どうぞお気軽にご参加ください。

マストドン v2.0.0アップデート(CentOSにて)

Twitterをモチーフにした分散型ソーシャルネットワーキングシステム「マストドン」(Mastodon)が2017年4月頃から日本でも話題になり,いくつものインスタンス(分散したサーバー)が運営を続けています。

独自にインスタンス(サーバー)を立てて運用するため,どちらかというと限定されたコミュニティ内で使うのに適しています。そのためTwitterを置き換えるというものではありませんが,決してコミュニティ内で閉じるのではなく,外部とも連携できるしくみが備わっているのがマストドンの興味深いところです。

教育学習とICT関係に関心のある皆さんに向けたマストドンとして「elict インスタンス」というものを立ち上げて運用しています。教育学習やICTのことを話題にするというだけでなく,その界隈の人々がマストドンを試す場所を提供するのも目的です。

Mastodon manager

それから,CentOS 7上で最新のマストドンシステムを構築して運用する実験をすることも目的としています。とはいえ,マストドンシステムのアップデートは一筋縄ではいかない難しさがあります。そもそもマストドン本家は同じLinuxでもUbuntuを推奨していて,CentOSでの運用は詳しく説明してくれていません。

先日(10/19),マストドンが v2.0.0へとメジャーバージョンアップしましたが,このアップデート作業もすんなりとはいきませんでした。

10月22日にv.2.0.0へのアップデートを試みたところ,エラーメッセージとともに作業は足止めされ,サイトはダウン状態となりました。それから暇を見つけては対処法を探り続けましたが,闇雲に作業すれば泥沼行き。かといって始めからやり直してみようと試みても,なぜか同じエラーの結果になるという幽閉状態。

参考情報を探そうとしても,同じ条件で構築している人は少ないし,ほとんどの人々がv2.0.0アップデートの難関さを前に躊躇っている状態か,難なくクリアしたかで,手がかりは極めて少なかったのです。英語のぶっきらぼうなエラーメッセージだけでは,何をどうしたらよいのか,万策尽きた感じさえしました。

しかし,端末から発せられるメッセージはエラーメッセージばかりではないのですね。それを丁寧に追っかけると,そもそも最初に出ていたエラーさえ適切に対応すれば良かったことがわかりました。

本当なら,自分が解決した道筋を,再検証して整理しながら解説すべきなのですが,なかなかそういう余裕もないので,とにかく手がかりになりそうなコマンドをここに書き記していこうと思います。

まずマストドンの基本的なインストール方法はこちらを参照してください。

Mastodon Production Guide

CentOSの場合,「apt」よりも「yum」を使うことが多いかなと思います。たとえばrootユーザーで

yum -y install ImageMagick libxml2-devel libxslt-devel git curl file g++ protobuf-compiler protobuf-devel gcc openssl-devel libyaml-devel zlib-devel ncurses-devel libffi-devel gdbm-devel readline-devel libicu-devel libidn-devel bzip2 

という感じです。また,CentOSのdevelopバージョンは-devではなく-develと表記することが多いです。

ちなみに,上の並びはnode.jsとYarnとffmpegとpostgresqlとnginxなどは別途作業したときのコマンド並びなので,構築されるサーバ環境によって追加したり減らしたりする必要があります。

「Dependencies That Need To Be Added As A Non-Root User」項目から以下はわりとそのままだと思います。

これらでなんとか構築完了して,運用を始めましょう。もし問題が発生したら下の方に書く対処を試みます。

定型的なアップデート作業は次の通りです。普通はマストドンユーザーでログインし…

cd live
git fetch
git checkout $(git tag -l | sort -V | tail -n 1)
bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile

そして,rootユーザーに切り替えてから

systemctl restart mastodon-*.service

としてマストドンを再起動するとアップデートが反映されます。

アップデート作業などで問題が発生した場合に試みたこと。

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig

bundle installでエラーが出た場合,パスが通ってなかった可能性があります。上はその一つ。

cd /home/mastodon/.rbenv/plugins/ruby-build && git pull && cd -
rbenv install 2.4.2
rbenv rehash
rbenv global 2.4.2
rbenv global

Ruby環境を最新にしないといけないアップデートもありました。上はマストドンユーザーでログインして2.4.2にするときのもの。ディレクトリ構成は自分の環境に合わせてください。

wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum install yarn

Yarnを最新にする必要があるときもありました。上はrootユーザーで入力したもの。

git checkout v1.6.1

gitから取ってくるmastodonバージョンを指定したいときに。マストドンユーザーで,liveディレクトリに移行後。ただし元に戻りたくても戻れないときもあります。

git reset --hard origin/master

ローカルをいじり過ぎておかしくなった場合,ローカルを上書きしてリモートに合わせてしまいたいときに使います。いわゆるリセット。

rm .bundle/config

オプションなしで「build install」すると以前の設定が引き継がれて処理されます。その履歴を消したいとき。

gem install lograge
bundle install --with production

v2.0.0アップデートで一番泣かされたのが「lograge」Gemファイル未インストール問題。インストールしたいと思って「gem install lograge」してみても一向に問題が解消されないとき,「bundle install –with production」と明示的に指定したら問題が解決しました。いやはや,回り道をしました。

この他に効果があったかどうかは分からないけれども試してはつまずくのを繰り返したコマンドは以下の通り。

gem cleanup
gem install bundler
gem install rails --no-document
gem update --no-document
bundle update
yarn cache clean

この他にもhttps通信を行なうための証明書取得など必要な手続きはありますが,それはまた別の機会に。

 

マストドンの投稿公開範囲を調べる -2

インスタンスを立ち上げたこともあって,先月からマストドンに触れ続けています。投稿公開範囲について調べた結果を見やすい図にしてみましたので掲載します。

ダウンロード

[PDF] http://www.con3.com/files/Mastodon_toot_visibility_20221202.pdf

[PNG] http://www.con3.com/files/Mastodon_toot_visibility_20221202.png

この図は「投稿者」の投稿が,公開設定によってどのタイムライン(TL)や画面に表示されるのか(到達範囲)を表した図です。

図には表しませんでしたが,投稿者のことをフォローしたユーザーが誰もいない「インスタンスC」というものがあれば,基本的に投稿が届くことはありません。とはいえ,フォローしていない相手にもメンションは送ることは可能で,その場合メンションは相手の通知と連合TLに表示されます(これを他のユーザーが見ているかどうかまでは未確認です)。

また,「返信」と「ブースト」の場合はどうなるのか。まだちゃんと確認作業をしていませんが,今のところの観察メモとして

===

【返信】
○自分のホーム
○プロフィールTL
○元トゥートの詳細内
〈メンション無し〉
×元トゥートしたユーザーの通知
〈メンション有り〉
○元トゥートしたユーザーの通知
〈自分のトゥートの場合〉
○フォロワーのホーム
○公開TL(ローカル+連合)
〈他者のトゥートの場合〉
×フォロワーのホーム
×公開TL(ローカル+連合)

【ブースト】
○自分のホーム
○プロフィールTL
○フォロワーのホーム
○元トゥートしたユーザーの通知
×公開TL(ローカル+連合)

===

と見ています。ただ,条件を整えて実験をしていないので,間違っている部分があると思います。

ところで,Pawooさんが「おすすめユーザー機能」という新機能をリリースしたとのこと(5/12)。私はPawooでアカウントを作成していないので,まだ拝見することはできていませんが,インスタンス内の出会いや交流を促す機能が付き始めたのはよい方向性だと思います。

やはりマストドンは進化段階にあるシステムです。今回紹介した投稿公開範囲・到達範囲の在り方も今後変わっていく可能性があります。

とにかく,自分自身の投稿に責任をもって制御するためにも,投稿公開範囲や到達範囲について理解することは大事かなと思います。