2017/04/14(金)mastodonのインスタンスを立ててみる

なんか探してみてもインスタンス立ててる日本語記事がなかったので…

マストドンってなんだよ聞いたことねえ

  • mastodon.social - Mastodon公式はこちら
  • ついに出た(知らなかっただけかもしれんが)?TwitterのOSSクローン
  • 今まであったTwitterライクなサービスとの違いは分散型ということ。
    • つまりTwitter社とかその他一人にサービスを握られていないということ
    • あとノン広告(作者に投げ銭はできるらしい)
  • 他のサーバのユーザも(制限がかかっていなければ)フォローできる
  • 他のサーバに移ることもできる(フォロー関係を持ち越せる…感じ?)

なんか、サーバではなくインスタンスというそうだがまあ、僕もよくわかってない。

詳しくはこのへんとかこのへんとかこのへんを読むといいです。

とりあえずサクッと立ててみる

必要なもの
  • Docker
  • Docker-compose
  • 安定した回線
  • サーバ
立てる

とりあえずgithubからクローンしてくる

user@ubuntu-docker:~$ git clone https://github.com/tootsuite/mastodon
Cloning into 'mastodon'...
remote: Counting objects: 25063, done.
remote: Total 25063 (delta 0), reused 0 (delta 0), pack-reused 25062
Receiving objects: 100% (25063/25063), 34.07 MiB | 450.00 KiB/s, done.
Resolving deltas: 100% (15003/15003), done.
Checking connectivity... done.

*追記*

  • ここでリリースタグの付いているコミットをチェックアウトしておく。
  • git checkout {sha1}
  • sha1はここの、使いたいバージョンのタグのものを指定する。

そしてこのまま意気揚々とdocker-compose up -dすると…

user@ubuntu-docker:~/mastodon$ docker-compose up -d
ERROR: Couldn't find env file: /home/reyman/mastodon/.env.production

と、怒られるのでれあどめをよく読んで…

user@ubuntu-docker:~/mastodon$ cp .env.production.sample .env.production
user@ubuntu-docker:~/mastodon$ vi .env.production

として、設定ファイル(.env.production)を作りましょう。そして編集です。編集する前にどんなもんかサクッと読んで見る。 (ちょっとブログの挙動がおかしいのでおかしくなってますが大目に見て) @を付けた部分は「最低限編集が必要」、だそうです。

# Service dependencies(デフォルトで使う場合はここをいじってはいけないようです。docker-compse.ymlとかDockerfileをいじりたい人は編集。)
REDIS_HOST=redis
REDIS_PORT=6379
DB_HOST=db
DB_USER=postgres
DB_NAME=postgres
DB_PASS=
DB_PORT=5432

# Federation(ドメイン名とか)
LOCAL_DOMAIN=example.com@
LOCAL_HTTPS=true@

# Application secrets(最低限編集が必要、と書いてあるが、後述するコマンドで生成して書き込む)
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=@
SECRET_KEY_BASE=@
OTP_SECRET=@

# Registrations(シングルユーザモードは、1インスタンスを一人で使いたい人向け?)
# Single user mode will disable registrations and redirect frontpage to the first profile
# SINGLE_USER_MODE=true
# Prevent registrations with following e-mail domains(サインアップ時にメールのドメインで弾いたり弾かなかったりする設定。した方がいいかな?)
# EMAIL_DOMAIN_BLACKLIST=example1.com|example2.de|etc
# Only allow registrations with the following e-mail domains
# EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc

# Optionally change default language(でほるとらんげーじ)
# DEFAULT_LOCALE=de

# E-mail configuration(メール設定。サインアップにメール認証が必要なため。)
# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers
SMTP_SERVER=smtp.mailgun.org@
SMTP_PORT=587@
SMTP_LOGIN=@
SMTP_PASSWORD=@
SMTP_FROM_ADDRESS=notifications@example.com@
#SMTP_AUTH_METHOD=plain
#SMTP_OPENSSL_VERIFY_MODE=peer
#SMTP_ENABLE_STARTTLS_AUTO=true

# Optional asset host for multi-server setups(わっかんないや!)
# CDN_HOST=assets.example.com

# S3 (optional)(この先はAWSで使うときの設定かな?)
~以下略~

そんな感じです。

Application secretsにつかう暗号化キー?はdocker-compose run --rm web rake secretで生成できるので、コピペしてかきこんでください。

あと、最初にたちdocker-compose runするときビルドが走るのでちょっと時間がかかります。

僕は

  • LOCAL_DOMAIN
  • LOCAL_HTTPS
  • PAPERCLIP_SECRET
  • SECRET_KEY_BASE
  • OTP_SECRET
  • DEFAULT_LOCALE
  • SMTP_SERVER
  • SMTP_PORT
  • SMTP_LOGIN
  • SMTP_PASSWORD
  • SMTP_FROM_ADDRESS
  • SMTP_AUTH_METHOD を編集しました。

ついでにdocker-compose.ymlをいじってポートを変更しました。これは特に意味は無いです。

*追記*

docker-compose upする前にこちらの記事を読んでDBの永続化をしてください。

んでんで

user@ubuntu-docker:~/mastodon$ docker-compose run --rm web rails assets:precompile
中略
user@ubuntu-docker:~/mastodon$ docker-compose run --rm web rails db:migrate
中略
reyman@ubuntu-docker:~/mastodon$ docker-compose up

でデータベース作製して起動。-dを付けてないのは、とりあえず動作することを確認したいため

そんでもってアクセスしてみると…

スクリーンショット 2017-04-13 22.45.14.png
ウーン…

web_1        | [605d4154-8204-460b-8e2e-a1ccf910b593] method=GET path=/ format=html controller=HomeController action=index status=500 error='I18n::InvalidLocale: "jp" is not a valid locale' duration=7.47 view=0.00
web_1        | [605d4154-8204-460b-8e2e-a1ccf910b593]   
web_1        | [605d4154-8204-460b-8e2e-a1ccf910b593] I18n::InvalidLocale ("jp" is not a valid locale):
web_1        | [605d4154-8204-460b-8e2e-a1ccf910b593]   
web_1        | [605d4154-8204-460b-8e2e-a1ccf910b593] app/controllers/concerns/localized.rb:23:in `set_locale'

DEFAULT_LOCALEにjpを指定することは出来ないようです。はい。

気を取り直して立ち上げてアクセスしてみるとログイン画面は見える…んだが

ログインしても真っ暗な画面が表示されて終わりである。

…間違ったかな?

一度落として、コンテナ、イメージを消して、公式れあどめの手順を頭から。

こういう強引なやり直しがサクッと効くのはdockerのいいところ。

そして起動しても同じ症状。なんでじゃ…

と、もしかしてポート設定かえたからじゃ…

もどしてもうごかん…なんでじゃ…

ということで、時間が来てしまったので今日はここまで

作業再開

布団の中でふと思ったのだ。

「あれ、もしかして落としてきたのリリース版じゃない可能性?」

そう、何も考えずにマスターブランチから落としてきたので、リリース版かどうか定かではない。

なのでリリースタグの付いているバージョンを指定してクローン、設定類はそのままコピーして立ち上げてアクセスすると…

スクリーンショット 2017-04-14 20.31.10.png

わーい

というわけで簡単にインスタンスを立てることが出来ました。

教訓

git cloneするときはタグとブランチに気をつけよう!

終わりに

土日に再チャレンジします。→金曜日に再チャレンジしました

とりあえずざっくりと立てることが出来ました。

マストドンを始めたいけど他所の人にメールアドレスとか持っていかれるのは…と言う人は立ててみてはいかがでしょうか

これから設定とかつめていくので、とりあえずここまでにします。

ではでは

OK キャンセル 確認 その他