massodon インスタンスをたてる(インストール&設定編)

ということで、前回はmastodon実行のための下準備を行ってきました。 今回は mastodon 本体のインストールと設定を行います。 前述のProduction guideをもとに進めていきます。

まず、前回作った jailコンテナの中に入り、いくつか必要なパッケージをインストールします。

$ sudo qjail console -z mastodon mastodon_web # pkg install git ffmpeg imagemagick-nox11 rbenv ruby-builder postgresql96-client minio-client gmake py27-certbot nginx pkg_replace node npm
すると、しばらくかかって130個程度のパッケージがインストールされます。 yarn はパッケージで入れてしまうとnode6が入ってしまうのでportsからインストールします。
# pkg_replace -vN /usr/ports/www/yarn # pkg lock yarn
ports から入れたものは pkg lock しておいて、間違えて pkg upgrade されないようにしておきましょう。

その後、mastodon を実行するユーザー mastodon を作成します。

# adduser mastodon
ここからしばらくは、mastodon ユーザーで作業します。
# su - mastodon $ git clone https://github.com/tootsuite/mastodon.git live $ cd live $ git checkout $(git tag | tail -n 1) $ rbenv install 2.4.1 $ rbenv rehash $ rbenv exec gem install bundler $ rbenv rehash $ bundle install --deployment --without development test $ yarn install --pure-lockfile
ここまでで、ひとまずrubyとnode関連のインストール完了です。

次に設定です。

$ cp .env.production.sample .env.prodiction $ vi .env.production
REDIS_HOST を変更します。portは変えて無ければそのままで。 DB_HOST,DB_USER,DB_NAME,DB_PASSを前回のDBで設定したものに変更します。

LOCAL_DOMAINを適切なものに変更します。ここは一旦動かし始めると、変更が できないので要注意です。 LOCAL_HTTPSは後程nginx で SSLの設定をしますので、trueにしておいてください。 自分だけの環境で、閉じた状態で使う場合や、一時的なテストの場合は false でも大丈夫。

PAPERCLIP_SECRET= SECRET_KEY_BASE= OTP_SECRET= この3つは、rake secret を3回動かして、出てきた値をコピって貼り付けます。

/home/mastodon/live/.rbenv/shims/bundle exec rake secret

メールサーバの設定はmailgun にアカウントを作成してもいいですし、自分のところで使えるメールサーバがあるならそちらを使っても大丈夫です。 また、おひとりさまインスタンスであれば、コマンドラインからアカウントの確認ができるので、なくても何とかなります。

minioとの接続設定もしておきましょう。

S3_ENABLED=true S3_BUCKET=mstdn AWS_ACCESS_KEY_ID=******************** AWS_SECRET_ACCESS_KEY=******************************** S3_REGION=us-east-1 S3_PROTOCOL=http S3_HOSTNAME=mastodon_minio S3_ENDPOINT=http://mastodon_minio:9000 S3_SIGNATURE_VERSION=s3
上記の設定だと、あとでちょっと問題が出るかもしれませんが、ひとまず確認に。

あとは特に変更しなくても大丈夫。 最後に DBの設定とassetのprecompileをします。

RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec rails db:setup RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec rails assets:precompile
いろいろと表示が出てきますが、エラーがなければ準備OKです。 では、動かしてみましょう。
RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb

なにかエラーが出なければ、接続待ちの状態になってます。 ブラウザを開いて http://mastodon_web:3000 にアクセスしてみてください。 ここで新規にアカウント作成を選択して必要事項を記入して登録すると、指定したメールアドレスに確認のメールが 飛びます。そこに記載されているURLを開くと、アカウントが無事作成されます。 さきほどメールサーバを設定していなかった場合でも大丈夫。 mastodon_webのコンソールを開いて、

RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec rails mastodon:confirm_email USER_EMAIL="登録したメールアドレス"
で、認証済みに変更できます。また、管理者権限も与えておきましょう。
RAILS_ENV=production /home/mastodon/.rbenv/shims/bundle exec rails mastodon:make_admin USERNAME="登録したユーザー名"
これで、ブラウザ画面の「プロフィールを編集」から「管理」を選んでサイトの設定ができるようになります。 「管理」から「サイト設定」を選んで、新規登録を受け付けるを一旦無効にしておきましょう。設定の途中で入ってこられてしまうと、あとあと面倒なことになるかもしれません。

ここで一旦railsサーバを停止します。mastodon_web のコンソール画面に戻って[ctrl]+[C]で止めましょう。

残りの設定です。Production guideを見ていくと、systemd用に自動起動のサンプルが書いてあります。 これをもとに、FreeBSD用にrcファイルを作成しました。

$ sudo qjail console -z mastodon mastodon_web # git clone https://github.com/takemontakashi/mastodon_etc.git # cp mastodon-* /usr/local/etc/rc.d # sysrc mastodon_web_enable="YES" # sysrc mastodon_sidekiq_enable="YES" # sysrc mastodon_node_enable="YES" # service mastodon-node start # service mastodon-sidekiq start # service mastodon-web start
これで、webとnodeとsidekiqの3つが動き出します。
# service mastodon-node stop # service mastodon-sidekiq stop # service mastodon-web stop
で一旦止めておきましょう。

最後はnginxを設定して、外からもつながるようにしましょう。 というところで、今回はおしまい。お疲れさまでした。

(2017-05-11 14:45追記 node と npm のインストールが抜けていました。パッケージから入れてください。上記は修正済み)

タグ: FreeBSD Minio Redis Install Jail Mastodon Postgresql Qjail