Mastodon地域インスタンス「箕面どん」をv3.0.0にアップデートしました

しばらくMastodon関係のことは書いていなかったが、箕面どんとしては順調にアップデートに追従していた。
そのMastodonもいよいよv3.0.0が公開され、更に新しい世界へと進んでいるので、これを機に久しぶりにブログを更新したいと思う。

Mastodon v3.0.0での更新内容はかなり多いので、興味ある方はリリースノートを読んでいただきたい(英語だが)。
https://github.com/tootsuite/mastodon/releases/tag/v3.0.0

ここでは、さくらのクラウドのCentOS上のnon-dockerで、どのようにアップデートするか、それに限って書きたいと思う。

まず、Ruby 2.6.5をインストールすることが必要である(Ruby 2.6.4には脆弱性が発見されたので、他のMastodonのバージョンでも使わない方がいい)。
箕面どんでは前にRuby 2.5.1をインストールした時に、rbenvやruby-buildの環境を整えていたので、今回は以下のコマンドでアップデートできた。
※なお、作業は全てmastodonユーザーで行う必要がある。

$ cd ~/.rbenv
$ git pull

$ cd ~/.rbenv/plugins/ruby-build
$ git pull

$ rbenv install -v 2.6.5
$ rbenv rehash
$ rbenv local 2.6.5

Ruby 2.6.5が設定されているかどうか確認する。

$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]

問題がなければMastodonのアップデートに移る。
ここではリリースノートをよく読むこと。それを守れば失敗することはない。
基本的な手順はいつもと同じである。
まず、liveディレクトリに移動することを忘れてはいけない。

$ cd live
$ git fetch
$ git checkout $(git tag | sed -e "/rc/d" | tail -n 1)
$ gem install bundler
$ bundle install
$ yarn install

ここから後のコマンドと手順が違うので、要注意である(全てリリースノートに書いてあるが)。

$ SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
$ RAILS_ENV=production bundle exec rails assets:precompile

ここまでの処理が終わったら、一旦サーバーを再起動する。
再度接続を確認したら、次のコマンドを打つ。

$ RAILS_ENV=production bin/tootctl cache clear
$ RAILS_ENV=production bundle exec rails db:migrate

もう一度再起動。
接続を確認して、晴れてv3.0.0になっていれば成功。

それでは、素晴らしいMastodon Lifeを!

ほんとのわたし

わたしの何を求めているの
わたしの欲しいものは男じゃないの
男の中にいるわたし
わたしをもっと見つめていて

わたしは気持ちがわからないから
あなたの心に興味はないの
それよりあなたの身体をちょうだい
あなたのいちばん熱いところを

わたしの髪に触れたらだめよ
わたしの胸に触れてもだめよ
あなたはわたしの眼を見るだけなの
瞳の奥の闇をあげるわ

わたしの中にたっぷり出しても
わたしは子どもを産まないの
わたしは何も残さない
今がわたしのすべてだから

わたしの好きをあなたは知らない
わたしの愛をあなたは知らない
あなたの想うわたしはいないの
わたしはそんなに易くはないの

それでもいいなら抱いてあげる
あなたは何も感じちゃだめよ
わたしのほんとを探してみてね
誰も知らないほんとのわたしを

(dedicated to Yuko)

Mastodon地域インスタンス「箕面どん」をv.2.5.0にアップデートしました

今週の9月3日(月)の早朝、Mastodonの最新版v.2.5.0がリリースされた。
今回のバージョンでは「relay server」を設定できたり、「カスタムCSS」の編集ができるなど、いろいろな機能アップがある。
詳しくはリリースノートを見てほしい。
https://github.com/tootsuite/mastodon/releases/tag/v2.5.0

リリースノートを見ると、「Node.jsの8系をインストール」と書いてある。
僕が箕面どんに使っているサーバー「さくらのクラウド」では6系である。

# node -v
v.6.13.1

これを8系にバージョンアップしようとして、ちょっとはまったので、その辺りを書いておきたい。
基本的に参考にしたのは、下記のページである。
Mastodonで使用するNode.jsをアップデートした

上のページのリンク先にある情報のように、

# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install -y nodejs gcc-c++ make

としても、Node.jsの8系はインストールされない。
同じ6系の最新バージョン?がインストールされるだけである。

# node -v
v.6.14.4

# yum -y remove nodejs

をして削除しても同じである。
いろいろググってみると、以下のような情報を見つけた。
yumでのnodejsのバージョンアップにはまった話と解決方法

ここを読んで気づいたのだが、もしかしたらNode.jsの古いrpmが残っていて、悪さをしているのかもしれない。さくらのクラウドでは、スタートアップスクリプトでyumでNode.jsをインストールしているので可能性はある。
そこで、下記のコマンドを売って、古いrpmを削除する。

# rm /etc/yum.repos.d/nodesource-el.repo

この様子は随時箕面どんにツゥートしていたのだが、その様子を見て詳しい方から助言をいただいた。
「epel」を無効したらどうかというものである。
僕もインストール画面でこの表示が気になっていたし、試しに無効にしてみた。

# vim /etc/yum.repos.d/epel.repo

上の方にある「enabled=1」を「enabled=0」に書き換える。

ここまで準備した上で、古いNode.jsを削除し、yumの設定を一旦クリアする。

# yum -y remove nodejs
# yum clean all

その上で、初めと同じコマンドを打つ。

# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install -y nodejs gcc-c++ make

ザーとインストールが進んで、ちゃんと8系になった。

# node -v
v.8.11.4

Mastodon v.2.5.0をインストールする手順はいつもと同じである。
ただリリースノートには「SKIP_POST_DEPLOYMENT_MIGRATIONS=true」を打って、Mastodon serviceをリスタートしてから、再度db:migrateをするように書いてあるが、よくわからなかったんで省略した(^^ゞ
そのせいか、db:migrateではいろんな文字列がザーと流れて、かなりの時間がかかったが、他の鯖缶の方の話ではそれで正常らしい。
CentOSを再起動したら、問題なく2.5.0のアップデートされていた。丸1日経ったが、特に問題は出ていない。
もし、不正確なところや間違っているところがあれば、教えていただきたい。

それでは、素敵なマストドンライフを!

Mastodon地域インスタンス「箕面どん」をv.2.4.0にアップデートしました

かなり前になるが、新しいソーシャルネットワーキングサービス「Mastodon」を紹介したのを、覚えておられるだろうか。
当初は「大阪丼」(https://mstdn.osaka)に参加していたが、思うところあり、独立して箕面市(非公認)の地域インスタンス「箕面どん」を立ち上げた。
箕面どん

さくらのクラウドでサーバーをレンタルし、CentOS 7.4上で構築している(非Docker)。導入自体は「スタートアップスクリプト」があるので、比較的簡単にできた。
当時のMastodonのバージョンが2.3.3であったが、最近2.4.0がリリースされたので、アップデートに取り組んだ記録である。
鯖缶の方々の様子を見ると、データベースを飛ばして全て消えてしまうなど、いろいろなアクシデントが起こるアップデート作業。僕自身も1度目は失敗し、2度目の挑戦でやっと上手くいった。
初心者の方々にも参考になるように、ここに過程を書きとどめておきたい。

なお、全体の流れは下記サイトを参考にした。
「さくらのクラウド」スタートアップスクリプトによるMastodonを、v2.3.3からv2.4.0rc3にバージョンアップした時につまずいた話。

1.サーバーのバックアップ

万が一に備えて、必ずやっておきたい作業である。僕も1回目失敗したとき、バックアップのおかげで、復旧することができた。
pg_dump/pg_dumpallなどのコマンドを使って、データベースだけバックアップする方法もあるが、僕はさくらのクラウドのアーカイブ機能を使って、ハードディスクを丸ごとバックアップした。復元も簡単なので、お勧めである.

2.PostgreSQLを9.6にアップデート

v.2.4.0からPostgreSQL 9.4以上が必須となる。さくらのクラウドでは9.2なので、アップデートが必要である。10を試してみたが、さくらのクラウドのCentOS 7.4上ではエラーで動かなかったので、9.6.9を下記のようにインストール、データベースを初期化した。

# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# yum list | grep postgresql96
# yum install postgresql96-server
# alternatives --display pgsql-psql
# alternatives --display pgsql-pg_dump
# PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql-9.6/bin/postgresql96-setup initdb

コマンドの意味は下記サイトに詳しい。
CentOS 7.3にインストールしたPostgreSQL 9.4から9.6へアップデートする

3.pg_upgradeというコマンドをインストール

【註】
この過程は必ずしも必須ではない。ソースを入れ替えるので、危険性を内在している可能性がある。PostgreSQLの新バージョンが出る度にインストールする方針の方は、する必要なないと思われる。

この作業をする前に、今動いているPostgreSQLサーバーを停止しておく必要がある(←これ、重要)。
停止しておかないとインストールに失敗する。

# systemctl stop postgresql

停止しているかどうか確認。

# systemctl status postgresql

そして、postgresユーザーに切り替えて、下記のようにコマンドを打つ。

# su - postgres
-bash-4.2$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

このコマンドはエラーになるので、下記サイトを参考に、pg_upgradeを入れ替える。
pg_upgradeでつまずいた

なお、さくらのクラウドのCentOSにはwgetが入っていないのでインストール。vimも好みで入れる。

# yum install wget
# yum install vim

(1)ソースをダウンロードして展開

# cd /usr/local/src
# wget https://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.gz
# tar zxf postgresql-9.6.9.tar.gz
# cd postgresql-9.6.9

(2)src/bin/pg_upgrade/server.cを修正

# vim src/bin/pg_upgrade/server.c

(GET_MAJOR_VERSION(cluster->major_version) < 903) ?
となっているところを
(GET_MAJOR_VERSION(cluster->major_version) < 900) ?
と変更する。

(3)ビルドする(インストールはしない)

# ./configure && make

(4)yumバージョンとmakeバージョンを置き換え

# cd /usr/pgsql-9.6/bin/
# mv pg_upgrade pg_upgrade.rpm
# cp /usr/local/src/postgresql-9.6.9/src/bin/pg_upgrade/pg_upgrade .

ここまでして再度postgresユーザーに切り替え、下記のコマンドを打つと、ズラズラとOKが表示されて、インストールに成功する。

$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

なお、最初に紹介したサイトでは、pg_upgradeをインストールした後で「後処理」をしているが、僕の環境では上手くいかなかった。それでも問題なくサーバーは動いているので、無視しても大丈夫である。

他に、以下の設定ファイルを書き換えた。

# vim /var/lib/pgsql/9.6/data/pg_hba.conf

METHOD欄を全て、trustに書き換え。
【2018年6月3日追記】
この設定は、あくまでさくらのクラウドでスタートアップスクリプトを使って、インスタンスを立ち上げた場合に有効である。
その他の環境の場合、データベースへのアクセスを無制限に許してしまい、大変危険である。
その場合は、設定をmd5などにして、暗号パスワードを設定することをお勧めする。
以下のサイトを参考にされたし。
pg_hba.confの設定

# vim /var/lib/pgsql/9.6/data/postgresql.conf

127行目の
dynamic_shared_memory_type = posix
という行の先頭に#を付けて、コメントアウト。

紹介したサイトではその後、コマンドを9.6用に差し替えているが、それをするにはPostgreSQLの古いバージョンを削除しなくてはならない。
僕の環境ではそれをすると、bundle installでpgがインストールできないという現象にぶつかった。
コマンドを総入れ替えしなくても特に問題はないだろうと考え、見送った。

4.PostgreSQL 9.6に切り替える。

以下のコマンドを打って、旧バージョンの自動起動を無効にし、9.6を有効化、自動起動させて、CentOSを再起動する。

# systemctl disable postgresql
# systemctl start postgresql-9.6
# systemctl enable postgresql-9.6
# reboot

自分のインスタンスにアクセスし、正常に動いているかどうか確認する。

5.ruby 2.5.1のインストール

Mastodon v.2.4.0ではruby 2.5.1が必須である。
インストール作業はmastodonユーザーに切り替えて行う必要がある(重要!)。これをしておかないと2.4.0のインストールに失敗する。

# su - mastodon

ruby 2.5.1のインストールには、下記サイトを参考にした。
rbenv を使って ruby をインストールする(CentOS編)

(1)rbenvをインストール(clone)する

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

(2)環境設定

# PATH に追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

# .bash_profile に追加
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# 上記設定の再読み込み
$ exec $SHELL -l

(3)ruby-build を インストール(clone)する

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

(4)ruby 2.5.1をインストール

$ rbenv install -v 2.5.1

(5)環境確認

再読み込み。

$ rbenv rehash

先ほどインストールした最新版に設定

$ rbenv global 2.5.1

確認

$ ruby -v
ruby 2.5.1p57 (2018-3-29 revision 63029) [x86_64-linux]

6.Mastodon v.2.4.0をインストール

ここまで下準備をして、ようやく2.4.0をインストールできる。
インストールには下記サイトを参考にした。
Mastodonのアップデート
Mastodonのバージョンアップの時に入力するコマンド(non-Docker)

# su - mastodon
$ cd live
$ git fetch
$ git checkout $(git tag | sed -e "/rc/d" | tail -n 1)
$ gem install bundler
$ bundle install
$ yarn install
$ RAILS_ENV=production bundle exec rails db:migrate
$ RAILS_ENV=production bundle exec rails assets:precompile
$ sudo systemctl restart mastodon-*.service

僕の環境では、RAILS_ENV=production bundle exec rails assets:precompileでエラーが出たが、mastodon serviceを再起動したら、問題なくアップデートされていた。
自分のインスタンスのアバウト画面で、2.4.0と表示されていたら成功である。

では、素晴らしきMastodon Lifeを!

MacBook 4.1にArch Linuxをインストールする(インストール編)

僕がArch LinuxをインストールするMacBookは、Appleのホームページにも載っていない古い機種で、機種IDが「MacBook 4,1」というものだ。ArchWikiにも機種別の情報は載っていない。
しかし、基本的にArchWikiのMacBookに書かれていることを参考にすれば大丈夫である。そこで解決しない問題は、ネットで探すことになる。

ArchWikiで推奨されているインストール方法は、「Mac OS Xとのデュアルブート」である。macOSを残しておく方がMacBookのファームウェアを書き換えたり、Macの設定を変えたりする時に便利である。したがって、ここではその方法を紹介したいと思う(実際は、Ubuntuを新規に入れていたので、Mac OS X Snow Leopardを再度インストールするところから始めることになったが)。

1.Arch Linuxをインストールするパーティションを作成する

この作業はMac OS Xで行う。ディスクユーティリティを立ち上げ、Macintosh HDを選択し、「+」ボタンを押して、新規にパーティションを作成する。僕の場合は、ハードディスクを2分割することにした。
名前やフォーマット形式はArch Linux側で作成し直すので何でもかまわない。
パーティションを作成し、デスクトップに表示されるのを確認する。

2.インストールCDで起動する

Arch LinuxをダウンロードからISOイメージをダウンロードして、適当なアプリでCDに焼く。CDをセットし、MacBookをオプションキーを押しながら起動すると「Windows」というCDのアイコンが現れる。それを選択してしばらく待つと以下のような画面が表示される。

「Boot Arch Linux」を選択してエンターキーを押すと、ブートが始まる。無事に起動を確認したら、次の作業に移る。

3.Arch Linux側でパーティションを作成する

そのままでは日本語キーボードの設定になっていないので、以下のコマンドを打つ。

# loadkeys jp106

ArchWikiのMacBookを参考にして、Mac OS Xで作成したパーティションを削除して、Arch Linux用に再度パーティションを作り直す。
(注)Mac OS Xのパーティションのルールとして、最後のパーティションの後に「128MB」の空き領域が必要である。詳しくはArchWikiを見てほしい。
なお、メモリが4GB以上ある時には、swapを作成しない方が速くなるとあったので、swapパーティションは作成しなかった。

# cgdisk /dev/sda

cgdiskの画面が表示されるので、「コントロールキー」+「矢印キー」で、Arch Linux用のパーティション番号を選択し、「Delete」と「New」を使い、パーティションを作成していく。
以下の例は、「Mac OS Xとのデュアルブート用のパーティション:100MB」「Arch Linuxのbootパーティション:100MB」「Arch Linuxのrootパーティション:残り全部」を作成したものである。

4.Arch Linuxをインストールする

インストール自体は他のPCと同じである。
ArchWikiのインストールガイドに従ってインストールする。
ただし、MacBook 4,1は無線LANのドライバが有効にならないので、有線で繋いでインストールしなければならない。
インストールガイドにある「起動モードの確認」で、UEFIモードではないとなるが、気にせず先に進む。
インストールが終了したら、ブートローダーの設定に移る。
ブートローダーの設定が終わるまで、chrootしたままでいるようにする。

5.ブートローダーの設定

以下のやり方は、MacBook AirにOSXとデュアルブートでArch Linuxを入れるを参考にした。

まず、GRUBをインストールする。

# pacman -S grub-efi-x86_64

/etc/default/grubを以下のように修正する。エディタにはviやnanoが使える。

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"

そして、以下のようにしてカレントディレクトリに「boot.efi」を作成する。

# grub-mkconfig -o /boot/grub/grub.cfg
# grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg

作成された「boot.efi」はUSBにコピーしておく。僕はたまたまそばにあった「ATOK for Mac」のUSBを使ったが、問題なくコピーできた。

# dmesg | tail # USBメモリのデバイス名を調べる。仮にsdd1とする
# mkdir /mnt/usbdisk && mount /dev/sdd1 /mnt/usbdisk
# cp boot.efi /mnt/usbdisk/
# umount /mnt/usbdisk

MacBookを再起動して、Mac OS X側の設定に移る。

# exit
# umount -R /mnt
# reboot

6.Mac OS Xでのブートローダーの設定

Mac OS Xで起動したら、デスクトップに「Boot Arch from the Apple boot loader」というボリュームがマウントされているはずである。ターミナルを起動して、以下のようにブート用のディレクトリと「SystemVersion.plist」を作成する。

# cd "/Volumes/Boot Arch from the Apple boot loader"
# mkdir System mach_kernel
# cd System
# mkdir Library
# cd Library
# mkdir CoreServices
# cd CoreServices
# vi SystemVersion.plist

「SystemVersion.plist」には、以下のように記述する。

<xml version=”1.0″ encoding=”utf-8″?>
<plist version=”1.0″>
<dict>
   <key>ProductBuildVersion</key>
   <string></string>
   <key>ProductName</key>
   <string>Linux</string>
   <key>ProductVersion</key>
   <string>Arch Linux</string>
</dict>
</plist>

そして、CoreServicesにUSBのboot.efiをコピーする。これはFinderでやった方が簡単である。
その後、blessして「Boot Arch from the Apple boot loader」バーティションを起動可能にする。

# sudo bless --device /dev/disk0sX --setBoot

(注)Xに入る数字はディスクユーティリティで確認する。

これで再起動したら、GRUBの画面が表示されて、Arch Linuxが立ち上がるはずである。

7.トラブルシューティング

僕の場合、機種が古いせいか、以下のようなトラブルに遭遇したので、参考に解決方法を加えておく。

(a)起動してもArch Linuxをインストールしたデバイスが見つからず、「new_root」でしかログインできない

これにはかなり苦戦したが、ネットを探し回って、次のようなサイトを見つけた。
“Unable to find root device” on a fresh ArchLinux install

ここにあるように、/etc/mkinitcpio.confのHOOKSの順番を変えると解決した。blockをautodetectの前に記述するのである。以下の通り。

【変更前】
HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

【変更後】
HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

そして、以下のコマンドを打って、ramdiskを作り直す。

# mkinitcpio -p linux

これでrootでログインできるようになる。

(b)ルートディレクトリのマウントに失敗する

起動中のプロンプトを見ると、「ルートのマウントに失敗した」というエラーが表示されるのだが、システム自体は立ち上がり、ルートでのログインもできる。気持ちの悪いエラーだが、いろいろ調べてみると、fstabの記述に問題があることがわかった。
先に、GRUBを設定した時に「rootflags=data=writeback」と設定したが、それがfstabに反映されていなかった。
/etc/fstabを開き、「data=writeback」に書き換えたらエラーが表示されなくなり、fsckもちゃんと働くようになった。ext4のジャーナリングを有効にするために、必要な設定なのかも知れない。

MacBook 4.1にArch Linuxをインストールする(前置き編)

僕はどちらかというと、同じマシンを長く使う方だと思う。Macを使い始めてもう10数年が経つが、ノートブックは3台乗り換えただけだ(デスクトップは2台)。
今使っているMacBook Pro Retina 13-inch Late 2013に乗り換える前は、長らくMacBook Blackを使っていた。もうAppleのホームページにも載っていない古い機種だが、メモリは4GMに増設、HDDは750GBに載せ替えて使い込んでいた。
それが、Mac OS X Lionを最後に新しいOSに対応しないということだったので、新たにMBPを購入したわけだ。

古いMacBookはしばらく埃を被っていたが、Linuxの勉強を兼ねてUbuntuをインストールして、たまに使ったりしていた。Ubuntuを選んだ理由は、ドライバ関係で対応がたやすいということである。確かにWifiなども一発で認識してインストールも簡単だったのだが、いかんせん古いMacBookには重かった。反応がワンテンポ遅れる感じである。Core Duo 2の2.4GHzなのだが、それだけUbuntuが重いLinuxになってしまったということだろう。

しばらく放置していたのだが、ふと思うところがあり、Arch Linuxをインストールしてみることにした。Arch Linuxを選んだ理由は、どこかで見たアンケートでMacBookユーザーがインストールするLinuxの中で1位だったからである。そして、軽いLinuxだとということも興味を引いた。ただ、デフォルトではデスクトップ環境などがインストールされないので、Ubuntuなどとくらべて敷居が高いという話もあった。

しかし、MacBookユーザーでインストールしている人が多いということは、参考になる記事も多いはずである。そして、Arch LinuxはWikiが充実しているのも重要なポイントだった。あまり初心者向けのLinuxではないが、だからこそLinuxを勉強するのにもいいのではないかと思った。
そういう訳で、これから数回に分けて、MacBookにArch Linuxをインストールして、日常の使用に使っていく過程を書き込んでいきたいと思う。多くの方の参考になれば幸いである。

Arch Linuxとはなんぞやという人は、下記のリンクを読んでみてほしい。
Arch Linux

Mastodon、Macに「Naumanni」をインストールする(その2)

前回の記事で、MacにMastodonのwebクライアント、「Naumanni(ナウマン)」をインストールした手順を書いたが、結論からいうと、前のやり方では不十分である。

Chromeでhttp://localhostが通らないとか、Safariでhttp://localhost:8080が通らないとか、あげくの果ては、「mstdn.jp」にアクセスできないとか。
どうしてこんなことになるのかよく考えてみると、「Naumanni」はMacの中にwebサーバーを立ち上げ、その「8080」ポートを通して、インスタンスに接続して使うものである。
ということは、Mac内部にwebサーバーが立ち上がっていないということではないか?
そう言われてみれば、今のMacにはweb共有がなくなってる。
つまり、webサーバーをインストールしなくてはいけないということである。

後、Dockerは一種の仮想環境を提供するものである。
ということは、Mac内にバーチャル・マシンがあるはずである。
試しに、ターミナルで「docker-machine ls」のコマンドを打ってみるとエラーになる。
つまり、仮想マシンがないのである。これでは、「Naumanni」もうまく動くはずがない。

ググってみると、今のバージョンの「Docker for Mac」では、バージョンマシンの作成は「Docker Toolbox」を使って行うとのこと。

Mac OS X へのDockerのインストール方法

というわけで、ようやく「Naumanni」をインストールする手順がわかった。

  1. Docker for Macをインストールする
  2. Docker Toolboxをインストールする
  3. nginx(webサーバー)をインストールする(【追記:2017/07/03】開発者のshnさんの指摘で、nginxは不要だとのこと)
  4. Naumanniをインストールする

以下、この手順で、説明していきたいと思う。

1. Docker for Macをインストールする

これは、前の記事で説明したので、割愛する。

2. Docker Toolboxをインストールする

ここで躓いてしまった。
MacOSの最新版、macOS Sierraでは、pkgファイルからはインストールできないのである。
いろいろ調べてみると、コマンドラインでインストールする方法があった。

macOS SierraでDockerを再インストールしたときに発生した問題

どうやら「Node.js」をインストールしないといけないようである。
ここを乗り越えないと先へいけないので、頑張って取り組むことにする。
参考にした記事は、以下の通り。

Node.jsをMacにインストール!

ここにある通り、Homebrew→Nodebrew→Node.jsの順にインストールしていく。

まずは、Homebrewのインストール。これから後の作業は、全てターミナルから、コマンドラインで行う。

$ /usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install

僕の記憶が正しければ、この時同時に「Xcode Command Line Tools」がインストールされるはずである(ちょっと不明)。

次は、nodebrewのインストールである。

$ brew install nodebrew

インストールできたら、バージョンを確認。

$ nodebrew -v

以下のように、ずらずらっと表示されたらOK。

次は、いよいよnode.jsのインストールである。
最新版をインストールしたいので、下記のように打つ。

$ nodebrew install-binary latest

バージョンを確認すると、下記のように最新版になっていた。

$ nodebrew list
 v8.1.2

current: v8.1.2

以下のサイトも参考にしてほしい。

Node.jsをMacにインストールしてnpmを使えるようにする

【おまけ】
これで、npmが使えるようになったんで、yarnもインストールしておいた(Naumanniとの依存解消のため)

$ brew update
$ brew install yarn

これで、ようやく「Docker Toolbox」をインストールできる。

$ brew update
$ brew cask install docker-toolbox

インストールが完了したら、Dockerのメニューから「Kitematic」を選択する。
僕の記憶では、この作業でバーチャル・マシンが作成されたように思う(うろ覚え)。

うまくバーチャル・マシンが動いているかどうか、テストにコンテナを作って見て確認する。

$ docker run hello-world

以下のように表示されたら問題ない。

$ docker-machine ls
 NAME  ACTIVE DRIVER   STATE  URL             SWARM
 default *   virtualbox Running tcp://192.168.99.101:2376

3. nginxのインストール

【追記:2017/07/03】このステップは不要であるが、nginxインストールの備忘録として残しておく
ようやく、ngixnのインストールである。

これはDockerからインストールする方法と、homebrewからインストールする方法があるが、僕は多分homebrewでインストールしたはず(多分)

$ brew install nginx

そして、起動させる。

$ ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

ブラウザにhttp://localhost:8080と打ち込んで、以下の画面が表示されたら、インストール成功である。

4. Naumanniのインストール

これは前回の紹介した方法で問題ない。

$ docker pull naumanni/naumanni-standalone
$ docker run -it -p 8080:80 naumanni/naumanni-standalone

これで、http://localhost:8080/で接続して、Naumanniが表示されたら成功である。

Dockerのコンテナイメージを確認したら、以下の通りになっているはず。

$ docker images
 REPOSITORY                   TAG    IMAGE ID     CREATED     SIZE
 hello-world                  latest 1815c82652c0 5 days ago  1.84kB
 naumanni/naumanni-standalone latest da2a67443f33 2 weeks ago 119MB

と、一通りの流れを書いたが、一日経った今、うまく接続できるのはChromeだけである。SafariもFireFoxもアクセスができない。
これ以上は、僕には分からないので、詳しい方の教えを請いたいものである。

【追記:2017/07/03】
Naumanniにうまく接続できない場合、コンテナが起動していないことがある。
例えば、Macを再起動したらNaumanniが立ち上がらないという問題である。
その場合は、runする時に、オプションに「–restart=always」をつけると、ホストが再起動した場合にも、コンテナが自動的に起動してくれる。
こんな感じである。

$ docker run -it -p 8080:80 --restart=always naumanni/naumanni-standalone

僕はこれでようやく快適にNaumanniを使えるようになった。
参考にしたwebpageは以下である。

ホストを再起動した時などにDockerコンテナを自動的に再起動できるようにする

現在、Naumanniはバージョン0.2.0になり、スパム判定も有効になっている。
複数のインスタンスを横断的に読むのに、とても使いやすい。

多くの人に使ってほしいクライアントである。

Mastodon、Webクライアント「Naumanni」を試す

Mastodon(マストドン)の関連の集会などが最近多く開催されており、いろんな人がマストドンを知るようになってきたと思う。
その中でも、大阪で行われていた「マストドン会議4」で、清水亮さんが使っておられたクライアントが、使いやすそうで気になった。
調べてみると、「Naumanni(ナウマン)」という名のwebクライアントだと分かった。

Mastodon専用ウェブクライアント「Naumanni」、UEIとグルコースがGitHubで公開

まだまだアルファー版だが、標準版ではどこにいったかわかりにくいダイレクトメッセージなどが、分かりやすくなっているし、インスタンス間のメッセージも暗号化される機能が搭載される。
複数のインスタンスのLTLが読める「統合ローカルタイムライン」なども便利だ。

「Naumanni」はGitHubで配布されている。
https://github.com/naumanni/naumanni

インストールはDockerを使えばできるようだが、そのDockerは、どうインストールしたらいいのか。
いろいろググってみると、今は「Docker for Mac」を使えば簡単のようである。
インストール方法は、下記を参考にしてほしい。

Docker for Macをインストールしてみた

僕がやったことは、次の通り。
まず、「Docker for Mac」を入手する。
Docker for Mac

「Stable」と「Edge」があるが、できるだけ新しいバージョンがほしいので、「Edge」を選ぶ。

ダウンロードして、イメージファイルをマウントして、アプリケーションフォルダにコピーする。

「Docker」をダブルクリックして、立ち上がった後は、上のwebpageを参照してほしい。
ターミナルでバージョンを確認してみたら、「17.06.0-ce-rc4」だった。

さて、「Naumanni」のreadmeには「依存関係」で、
yarn >= 0.23.4
node >= v7.5.0
docker >= 17.03
と書いてある。
しばし考え、Dockerが一種の仮想環境を作るのなら、yarnやnodeがなくてもインストールできるはずと考え、インストールしてみた。

インストールは簡単で、readmeにあるように
$ docker pull naumanni/naumanni-standalone
$ docker run -it -p 8080:80 naumanni/naumanni-standalone
のコマンドを叩くだけ。ダウンロードが始まり、いとも簡単にインストールが完了した。

終わればブラウザを立ち上げ、http://localhost:8080/で接続すると、「Naumanni」が立ち上がる。

今のところ、軽くて、いい感じである.

yarnやnodeを省いた結果どうなるかは、もう少し使ってみないと分からないが。

ところで、Docker Toolboxがインストールできないのだが、これはmacOS Sierraでは機知の問題のようである。

macOS Sierra Docker Toolbox のインストーラがエラるので Brew cask でインストールした

やっぱ、Nodeをインスールしないといけないのか…
今夜は疲れたので、この辺で。

小説・第9話

ユミは僕に手紙を渡すと、そのまま消えてしまった。
僕はどうしていいのか分からず、しばらく立ち尽くしていた。

ようやく決心が固まり、僕は手紙を開いた。

<ヒビキ君、私、あなたのこと、ほんと好きだったよ。
でも、もう限界。あなたと一緒にいることに耐えられなくて。
こんな言葉使ってごめんね。正直、嫌悪感しか感じないの。

それに、私、好きな人ができて。一緒にコンサートした人。
久しぶりに、恋の気分を感じてる。

ごめんね、ヒビキ君。さようなら。 ユミ>

読みながら身体の力が抜けていくと同時に、すこんと胸に落ちた気がした。
ああ、もう終わったんだ。
実感として、納得できた。こういう終わり方をしてくれて、ユミに感謝だな。

その夜は、いろいろ思い出して、一睡もできずに朝を迎えた。

学校に行くと、ユミは新しい彼と一緒に廊下を歩いていた。とても楽しそうに話をしながら。
そうか、彼女はこういうのを求めていたんだ。
♪この頃 あなたは明るくなったみたい
 僕のいないところで微笑んで♪
自分が作った歌そのままじゃないか。
何してるんだ、俺。

自分のバカさ加減に悶々と過ごしていると、ある時、リコから呼び出された。
「これ」
と言いながら、リコは小さい紙包みを渡した。
?ってなりながら、中を見ると、小さい小物入れの袋が入っていた。
「私が作ったんだから」
リコは上目遣いに言った。
「そうなんだ。あ、でも……」
と言いかけると
「彼と付き合ってから、初めて他の男の子のために作ったんだから」
そんなことして、大丈夫なの?って、思ったが、リコはにっこり笑って、
「ヒビキ君のイメージで、ブルーのギンガムチェックにしたんだから。大切に使ってよ」
ありがとうって言う暇もなく、リコはクラスメイト達の中に紛れていった。

なんやかんやで、僕達は高校を卒業した。僕はいかに女の子を理解していないか、うちひしがれながら。
とりあえず合格する大学を受け、僕は大学生になった。
ユミと彼とは違う大学に進学したとか。そして、彼に新しい彼女ができたけど、ユミが別れたくないって言っている、って噂が流れてきたけど、僕にはもう遠い話だった。
(続く)

Mastodon、Mac用のクライアントをインストールする

二日前ほど、Mastodonをやってみたが、面白い!
この面白さは昔どこかで経験したことがあるなあと考えていたら、10数年前にやっていたチャットと同じものだった。
当時はIRCやICQなどがあり、グループチャットや1対1のチャットなどができた。そういや、ファイルを送信できるものもあったな。

Mastodonは「グループチャット」と雰囲気的に近い。
どんどんtootが流れてきて、それぞれ絡んでいく。「ふぁぼ」の反応もすぐ来る。
このスピード感は、久しく忘れていたものだ。
これは、選んだ「インスタンス」によっても違うと思う。大阪の中心にしたメンバーが集まっているので、お互い親近感があり、話しやすい。インスタンスに地域に関わったものが多いのも納得できる。

しかも、今日は大阪のインスタンスのオフ会があったようで、参加者やネットから見ている人で大いに盛り上がった。
この感じは、7・8年前に流行った「Brightkite」を彷彿とさせるものだった。

さて、Mastodonだが、発表されたのが2016年7月で、まだ7か月の新しいサービスだ。
基本的にwebアプリなので、ブラウザから利用できるのだが、何かと使い勝手が悪い。やはり、手元にあるスマートフォンから利用できれば使いやすい。
iOSで使えるクライアントアプリはかなり充実してきて、App Storeで検索すればたくさん見つかる。
いろいろ試してみた結果、僕としては「Tootdon」が一番いいかなあと感じている。

「Tootdon – トゥート検索対応アプリ for Mastodon (マストドン)」

tootの内容を検索できる機能が便利である。僕なんかは「佐野元春」「桂枝雀」などど検索してみて、趣味が合いそうな人を早速フォローしてみた。
アプリの画面は以下の感じである。

使い勝手は、いわゆるTwitterクライアントと変わらない。違和感なく使えると思う。

しかし、Macを使いながらiPhoneでやり取りするのは面倒である。もちろんSafariなどのブラウザからアクセスすればいいのだが、そうすると複数のインスタンスを行き来する時に、タブを切り替えるので動作の無駄が多い。
そこで、macOS用のクライアントがないか調べてみると、ちゃんと存在した。

https://github.com/rhysd/Mstdn/releases

Githubというサイトで配布している。本来なら「npm」といったコマンドを使ってインストールするのだが、そのために他のものをいろいろインストールしないといけないし、時間がかかるので、アプリ版をインストールすることにした。

一番上の「darwin」版をダウンロードし、解凍したフォルダの中にある「Wstdn」アプリを「アプリケーション」フォルダに入れる。
問題はここからで、「Wstdn」をダブルクリックすると表示される「config.json」ファイルを編集しなくてはいけない。
readmeを読んでみると、”mane”にスクリーンネーム、”host”にインスタンスのURLを書き込めばいいとのことだが、何度やっても下のようなアラートが出て起動してくれない。

アラートを見ると、どうも「”」が悪さをしているようである。よ〜く見てみると、”mane”と”host”のところにある「”」の形が微妙に違う。試しに、他の場所から「”」をコピペしてみると、見事に起動した。
そこで、readmeにあるように、”name”と”host”の部分を複数回コピペして、それぞれ書き込んでみると、ちゃんとマルチアカウントで動作した。Accountメニューからそれぞれのアカウント選べば、瞬時に入れ替わる。ブラウザで使うより、断然使いやすい。

僕のconfig.jsonは以下の通り。

「Mstdn」を起動すると、こんな感じ。

なお、インストールに当たっては、下記の記事がとても参考になった。

mastodonマルチアカウントクライアント「mstdn」 導入メモ

では、皆さんも是非「Mastodon」を楽しんでください。