LoginSignup
89
85

More than 5 years have passed since last update.

お一人様のMastodon

Last updated at Posted at 2017-04-14

Mastodonを見ていたら、SINGLE_USER_MODEという設定項目があった。

  • トップページはアカウントID=1のストリームに固定(リダイレクト)される
  • /aboutからサインアップできない。(入力はできるけど、トップに戻り何も起きない)
  • Adminの管理はできる

公開インスタンスリストにも3つばかりSingleな奴がいますし、作ってもいいんじゃないかと。

List-of-Mastodon-instances

SINGLE_USER_MODEをセットアップする

まずは普通に立ち上げよう。準備。

  • cp .env.production.sample .env.production
  • vim .env.production
    • rake secretを埋めたり。
    • 手元でやってみる場合、LOCAL_DOMAINはとりあえずlocalhost:3000を入れとくとよいです。

Rails的な色々をしつつ起動。

  • docker-compose build/up
  • rake db:migrate
  • rake assets:precompile
    • Webにスタイルが当たってなかったらVolume失敗してるのでdocker-compose upしなおせばOK

サインアップします。

http://localhost:3000/about で適当に入力。メールは送信できなくてもよい。

メール強制confirmationと管理者に昇格

サインアップ後のメール認証はタスクでもできるのでします。お一人なので管理者にもしておきましょう。

docker-compose run --rm web rails mastodon:confirm_email USER_EMAIL=sawanoboly@example.com
docker-compose run --rm web rails mastodon:make_admin USERNAME=sawanoboly

一旦railsのコンテナを止めて、

設定からSINGLE_USER_MODE=trueとします。

これでもう一度起動しすれば、たいていのアクセスはhttp://localhost.local:3000/@sawanobolyにリダイレクトされるようになります。

sawanoboly_-_Mastodon.jpg

Tootするときには、 http://localhost:3000/auth/sign_in に直接訪れれば自分はログインできるので/web/*でやりましょう。

Mastodon.jpg

  • 管理画面にはOpen registrationの項目があるので、Disabledにすれば登録フォームが消えます。

フェデレーション用のTCP/4000はどうなるのかまでを見てないですが(試すにはもう1セット立ち上げればよいのかな?)、シングル運用のインスタンスでもフォロー・フォロワーの数はあるしなんとかなるんでしょう。

運用

スキーマ定義にenable_extension "plpgsql"ってあったから、RDBはPostgreSQLしかダメなのかなってなると、ホスティングしてるPaaSがよいなあと思う次第。
SideKiq用のRedisもいるし、公式デモに習ってscalingoやらherokuが楽かなって思いますが、web+workerになるのはなーと。

画像などはローカルのほかにAmazon S3が使えます。S3のほうは互換性があれば他でもよさそう(rubygemsのPaperclipを使ってた。)。S3_ENDPOINT(API),S3_HOSTNAME(配信ドメイン)が環境変数から指定できるようになっているので、国内でも色々選択肢はあったはず。
手間とお金が安く運用できそうな組み合わせを考えてみるのもよいね。

ちなみにメールはサンプル設定にもあるように、Mailgunで不自由しないと思います。それか場所によってはSMTP_METHODをsendmailにしときゃ十分。

意外と反応が多いので追記:

docker-composeでそのまま起動して運用もそこそこできますが、補足しておきます。

  • docker-compose.ymlでは、volumeのコメントアウトを外して、(少なくとも)volumeをローカルのホストに書き出しておくとdocker-compose rmしても残ります。
  • 3000, 4000はこのようにnginxでリバースプロキシをつけましょう。
  • この例そのまま、localhostでやっては意味がないので、それがよくわからなかったらやめとく方が無難です。

なお、データをエクスポートできるようなので飽きたら止めて移住できそう。フォロワーから見てドメインがどうなるんだろうという点は気になりますけど。

89
85
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
89
85