Mastodon
2017/05/07更新
対応バージョン: #2842
Mastodonを実運用するのではなく、各種設定やトゥート時などの挙動を試すためにローカルホスト上にインスタンスを立てる手順を示す。あくまで試験用なのでHTTPSを使わず、ユーザ登録時のメール認証も行わず、構築もMastodonが用意したDocker環境を用いるものとする。
尚、環境構築はUbuntu 16.04上で行う。
パッケージ最新化
まずはパッケージを最新化する。
% sudo apt update % sudo apt upgrade
Docker、Docker Composeインストール
次にDocker及びDocker Composeをインストールする。Dockerデーモンはサービスとして常駐させる。
Docker
% sudo apt install docker.io % docker -v Docker version 1.12.6, build 78d1802
上記パッケージをインストールするとdockerdが常駐する設定になる。
Docker Compose
% sudo apt install docker-compose % docker-compose -v docker-compose version 1.8.0, build unknown
dockerユーザ作成
必要なパッケージがインストールできたらインスタンスを管理する専用のユーザdockerを作成する。Dockerインストール時に作成されたdockerグループに所属させるのがポイントである。
% sudo adduser --ingroup docker docker
以降の作業はdockerユーザで行う。
% su - docker % docker version Client: Version: 1.12.6 API version: 1.24 Go version: go1.6.2 Git commit: 78d1802 Built: Tue Jan 31 23:35:14 2017 OS/Arch: linux/amd64 Server: Version: 1.12.6 API version: 1.24 Go version: go1.6.2 Git commit: 78d1802 Built: Tue Jan 31 23:35:14 2017 OS/Arch: linux/amd64
Mastodonインストール
ここまでで準備が整ったのでMastodonをインストールする。
まずはGitHubよりモジュール一式を入手する。
% git clone https://github.com/tootsuite/mastodon.git % cd mastodon
次にDocker Compose用の設定ファイルdocker-compose.ymlを編集する。
% vi docker-compose.yml
バージョンを3 -> 2に変更
1 version: '3'
以下のコメントを4箇所外す(コンテナを終了させてもデータが永続化されるように)
8 # volumes: 9 # - ./postgres:/var/lib/postgresql/data 15 # volumes: 16 # - ./redis:/data
続いて環境設定ファイル.env.productionをサンプルからコピーして用意し、必要なモジュールを入手してビルドする。
% cp .env.production.sample .env.production % docker-compose pull % docker-compose build
3種類のシークレットキーを生成して環境設定ファイルに転記する。また同ファイルのLOCAL_DOMAINとLOCAL_HTTPSを編集してローカル用かつHTTPSなしに設定する。
% docker-compose run --rm web rake secret xxxxxxxxxx % docker-compose run --rm web rake secret yyyyyyyyyy % docker-compose run --rm web rake secret zzzzzzzzzz % vi .env.production 15 LOCAL_DOMAIN=example.com <- localhost:3000に変更 16 LOCAL_HTTPS=true <- falseに変更 30 PAPERCLIP_SECRET=xxxxxxxxxx <- 1回目のdocker-composeの結果 31 SECRET_KEY_BASE=yyyyyyyyyy <- 2回目のdocker-composeの結果 32 OTP_SECRET=zzzzzzzzzz <- 3回目のdocker-composeの結果 43 # DEFAULT_LOCALE=de <- コメントを外してja(日本語)に変更
最後にDBの初期化とアセットのプリコンパイルを行ってインストールは完了である。
% docker-compose run --rm web rails db:migrate % docker-compose run --rm web rails assets:precompile
Mastodon起動
docker-composeコマンドでMastodonのサービスを起動する。
% docker-compose up -d mastodon_redis_1 is up-to-date mastodon_db_1 is up-to-date Creating mastodon_web_1 Creating mastodon_sidekiq_1 Creating mastodon_streaming_1 % docker-compose ps Name Command State Ports ------------------------------------------------------------------------------- mastodon_db_1 docker-entrypoint.sh postgres Up 5432/tcp mastodon_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp mastodon_sidekiq_1 bundle exec sidekiq -q def ... Up 3000/tcp, 4000/tcp mastodon_streaming_1 npm run start Up 3000/tcp, 0.0.0.0:4000->4000/tcp mastodon_web_1 bundle exec rails s -p 300 ... Up 0.0.0.0:3000->3000/tcp, 4000/tcphttp://localhost:3000/にアクセスして以下の画面が出ればOKである。
なお、ログは以下のコマンドで確認できる。
% docker-compose logs -f
アカウント登録
Web画面からユーザ名、メールアドレス、パスワードを入力して「参加する」ボタンを押す。
「メールアドレスの確認用のリンクが入力したメールアドレスに送信されました...」という画面に遷移するが、メールサーバの設定を行っておらず確認メールが送られないのでコマンドで強制的に承認と管理者への昇格を行う。
ここではユーザ名を「kogure」、メールアドレスを「kogure@localhost」とする。
% docker-compose run --rm web rails mastodon:confirm_email USER_EMAIL=kogure@localhost kogure@localhost confirmed % docker-compose run --rm web rails mastodon:make_admin USERNAME=kogure Congrats! kogure is now an admin. \o/ Navigate to http://localhost/admin/settings/edit to get started
この状態で再度Web画面から上記ユーザでログインすれば以下のような画面になり、トゥートが可能になる。
その他
Mastodonの停止/再開、環境そのものの削除は以下の手順で行う。
停止
% docker-compose stop
再開
% docker-compose start
環境削除
% docker-compose down % cd .. % sudo rm -rf mastodon
参考サイト
Mastodon技術情報 (Qiita)