目次

Mastodon(マストドン)は、Twitterのような投稿ができる分散型ソーシャルネットワークを実現するオープンソースソフトウエアです。

ConoHaでは2017年5月からMastodonを簡単に構築できるテンプレートイメージを提供してきました。

Mastodonテンプレートイメージは2018/11/06に最新の2.6系への更新を行い、初期設定方法が変化しました。

2018/11/06以降にMastodonイメージからVPSを作成された方は上記目次の2の項目をご確認ください。

2018/11/05以前にMastodonイメージからVPSを作成された方は上記目次の3~7の項目をご確認ください。

1.Mastodonアプリケーションイメージインストール方法

[1] 「サーバー追加」ボタンをクリックします。

STEP1

[2] イメージタイプから「アプリケーション」を選択し、Mastodonを選択してVPSを作成します。

STEP2

2.セットアップ方法

こちらの項目については2018/11/06以降にMastodonイメージからVPSを作成された方向けのものとなります。

Mastodonテンプレートイメージでは、Mastodonの動作に必要なソフトウェアを一通りインストール・DBの設定を済ませた状態で提供しています。
そのため、Mastodonイメージから作成したVPSで実際にMasotodonを動かすには、初期設定を済ませる必要があります。

基本的には公式のインストール方法にしたがって操作します。

前述のとおり、必要なソフトウェア類のインストールとPostgreSQLの設定を済ませているため、「nginx Configuration」の章から進めていきます。

1. nginxの設定

以下の内容を /etc/nginx/sites-available/Mastodonで使うドメイン名.conf として保存してください。

「Mastodonで使うドメイン名」の部分にはMastodonのサーバに設定するドメイン名を記入します。

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name Mastodonで使うドメイン名;
  root /home/mastodon/live/public;
  # Useful for Let's Encrypt
  location /.well-known/acme-challenge/ { allow all; }
  location / { return 301 https://$host$request_uri; }
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name Mastodonで使うドメイン名;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/letsencrypt/live/Mastodonで使うドメイン名/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/Mastodonで使うドメイン名/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 80m;

  root /home/mastodon/live/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }

  location /sw.js {
    add_header Cache-Control "public, max-age=0";
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;
}

上記ファイルの作成が完了したら、nginxがこの設定を実際に使うようにシンボリックリンクを貼ります。

cd /etc/nginx/sites-enabled
ln -s ../sites-available/Mastodonで使うドメイン名.conf

以上でnginxの初期設定は完了です。

2. Let’s Encryptの設定

Let’s EncryptでTLSの証明書を取得・設定します。
以下の手順でコマンドを実行してください。

systemctl stop nginx
certbot certonly --standalone -d Mastodonで使うドメイン名
systemctl start nginx
certbot certonly --webroot -d Mastodonで使うドメイン名 -w /home/mastodon/live/public/

「証明書の期限切れ時や緊急時の連絡に使用されるメールアドレスの入力(必須)」「利用許諾への同意(必須)」「入力したメールアドレスの電子フロンティア財団への共有の可否(オプション)」が聞かれますので適宜返答してください。

「Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):」 と聞かれた際は2を入力してください。

続いてTLS証明書の自動更新の設定をします。
/etc/cron.daily/letsencrypt-renew に以下を書き込んで保存してください。

#!/usr/bin/env bash
certbot renew
systemctl reload nginx

その後、以下のコマンドでcronによる定期実行を有効にします。

chmod +x /etc/cron.daily/letsencrypt-renew
systemctl restart cron

以上でLet’s Encryptの設定は完了です。

3. Mastodonの設定

Mastodonの設定を行います。
以下のコマンドを実行して、設定ウィザードを起動してください。

sudo su - mastodon
bash
cd ~/live
RAILS_ENV=production ~/.rbenv/versions/3.0.4/bin/bundle exec rake mastodon:setup

設定ウィザードではいくつかの入力が求められます。お客様の環境に併せて入力してウィザードを進めてください。
以下に典型的な設定時の入力項目を説明します。

設定する値 説明
Domain name: Mastodonで使用するドメイン名 nginxの設定やlet’s encryptの設定で入力したドメインと同じものを入力してください。
Do you want to enable single user mode? (y/N) シングルユーザモードとして設定を行うか?
何も入力せずエンターキーを押すとNとして進みます。
Are you using Docker to run Mastodon? (Y/n) DockerのコンテナとしてMastodonを起動しているか?
ConoHaのMastodonイメージではDockerは使用していないのでnを入力します。
PostgreSQL host: (/var/run/postgresql) PostgreSQLのデータベースサーバのホスト名
そのままエンターキーを押せばOKです。
PostgreSQL port: (5432) PostgreSQLサーバへの接続に使用するポート番号
そのままエンターキーを押せばOKです。
Name of PostgreSQL database: (mastodon_production) PostgreSQL内のMastodonのデータベース名
/etc/motdの「PostgreSQL mastodon db name」の項目の値を入力してください。
Name of PostgreSQL user: (mastodon) PostgreSQLのMastodonデータベースに接続するユーザ名
/etc/motdの「PostgreSQL mastodon user name」の項目の値を入力してください。
Password of PostgreSQL user: PostgreSQLのMastodonデータベースに接続する際のパスワード
/etc/motdの「PostgreSQL mastodon user password」の項目の値を入力してください。
Redis host: (localhost) Redisサーバのホスト名
そのままエンターキーを押せばOKです。
Redis port: (6379) Redisサーバのポート番号
そのままエンターキーを押せばOKです。
Redis password: Redisサーバに接続する際のパスワード
そのままエンターキーを押せばOKです。
Do you want to store uploaded files on the cloud? (y/N) Mastodonに投稿された画像や動画等のファイルをクラウドサービスのオブジェクトストレージにアップロードするか?
必要に応じて選択してください。Yを選ぶとオブジェクトストレージへアップロードする際に必要な認証情報等が追加で求められます。
Do you want to send e-mails from localhost? (y/N) Mastodonのアカウント作成や各種通知を送るメールをlocalhostから送信するか?
適切なメールサーバから送信することが望ましいため、そのままエンターキーを押せばOKです。
SMTP server: (smtp.mailgun.org) SMTPサーバー名
ご利用になるSMTPサーバにあわせて入力してください(※)。
SMTP port: (587) SMTPサーバに接続する際のポート番号
ご利用になるSMTPサーバあわせて入力してください(※)。
SMTP username: SMTPサーバへの接続に使用するユーザ名
ご利用になるSMTPサーバあわせて入力してください(※)。
SMTP password: SMTPサーバへの接続に使用するパスワード
ご利用になるSMTPサーバあわせて入力してください(※)。
SMTP authentication: (plain) SMTPの認証方法
ご利用になるSMTPサーバあわせて入力してください(※)。
SMTP OpenSSL verify mode: (Use arrow keys, press Enter to select) SMTPサーバのSSL/TLS証明書の検証設定
ご利用になるSMTPサーバあわせて入力してください(※)。
E-mail address to send e-mails “from”: (Mastodon ) Mastodonからメールが送信される際のFROMに表示されるメールアドレス
適宜入力してください。
Send a test e-mail with this configuration right now? (Y/n) 入力したメールの設定でテストメールを送信するか?
メールの設定に失敗しているとMastodonのアカウントが作成できなくなりますので、Yを選んで確認することをお勧めします。
Send test e-mail to: テストメールを送信する宛先アドレス
適宜入力してください。
Save configuration? (Y/n) 入力してきた値をファイルに保存するか?
テストメールの配信状況等に問題が無ければ、Yを選んで保存してください。
Prepare the database now? (Y/n) Mastodon用のデータベースを構築するか?
Mastodonイメージではデータベースは空の状態ですので、Yを押してデータベースの構築を行ってください。少々時間がかかる場合があります。
Compile the assets now? (Y/n) Mastodonのウェブ表示で使用するアセットのコンパイルを行うか?
実稼動時の負荷等に影響しますので、Yを押してコンパイルを行います(VPSのスペックにもよりますが、数分程度時間がかかります)。
Do you want to create an admin user straight away? (Y/n) Mastodonの管理者アカウントを作成するか?
管理者アカウントが無くても正常に動かすことができますので、必要に応じて選んでください。


※ConoHaのメールサーバを使用する場合、メールサーバの詳細情報のページから以下の画像を参考に設定してください。

STEP3
設定する値 説明
SMTP server: (smtp.mailgun.org) ③のアドレスを入力してください。
SMTP port: (587) デフォルトの587で問題ないのでそのままエンターキーを押してください。
SMTP username: ①のアカウント名を入力してください。
SMTP password: ②で設定したパスワードを入力してください。
SMTP authentication: (plain) デフォルトのplainで問題ないのでそのままエンターキーを押してください。
SMTP OpenSSL verify mode: (Use arrow keys, press Enter to select) noneを選択してください。


4. Mastodonのデーモン化

最後に、Mastodonをデーモンとして使用するための設定を行います。

rootのシェルに戻って以下の3つのファイルをそれぞれの内容で作成してください。

/etc/systemd/system/mastodon-web.service

[Unit]
Description=mastodon-web
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/home/mastodon/.rbenv/versions/3.0.4/bin/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

/etc/systemd/system/mastodon-sidekiq.service

[Unit]
Description=mastodon-sidekiq
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/home/mastodon/.rbenv/versions/3.0.4/bin/bundle exec sidekiq -c 5 -q default -q push -q mailers -q pull
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

/etc/systemd/system/mastodon-streaming.service

[Unit]
Description=mastodon-streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/usr/bin/npm run start
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

最後に以下のコマンドで、Mastodonデーモンを有効化・起動します。

systemctl enable --now /etc/systemd/system/mastodon-*.service
systemctl enable --now nginx

以上で設定完了です。

Mastodonはすでに起動していますので、Webブラウザで設定したドメインに接続してみましょう。

STEP4

3.Mastodonアプリケーションイメージの利用方法

こちら以降の項目については2018/11/05以前にMastodonイメージからVPSを作成された方向けのものとなります。

Mastodonは仕様としてドメインとメールに関する設定が必須となっています。

ConoHaのMastodonアプリケーションイメージは原則Dockerを使用しない公式のインストール手順に従っていますが、これらの設定が含まれていませんので、サーバーを作成後お客様自身で設定していただく必要があります。

ConoHaのMastodonイメージではドメインの設定・データベースの設定・Let’s EncryptによるSSL証明書を簡単に設定できる初期設定スクリプトを同梱しています。

ここでは、初期設定スクリプトの使用方法について紹介します。

※初期設定スクリプトを使用せず、直接設定ファイルを編集してMastodonをセットアップすることもできます。

4.初期設定スクリプトの編集方法

初期設定スクリプトではConoHaのAPIを使用してDNSにドメインを登録し、AレコードにVPSのIPアドレスを設定するため、ConoHaのAPIに関する情報が必要となります。

API情報はコントロールパネルメニューの「API」から確認できます。

STEP5

[1] API情報が確認できましたら、コンソールやSSHクライアントソフトからVPSへ接続しrootアカウントでログインします。

[2] 初期設定スクリプトは[/root/setup.sh]に設置されていますのでviエディタなどテキストエディタで3~8行目を下記の内容に沿って編集します。

API_TENANT_ID:テナントID
API_USERNAME:APIユーザー名
API_PASSWORD:APIユーザーに設定されたパスワード
DOMAIN_NAME:設定したいドメイン名
MAIL_ADDRESS:Let's Encrypt の証明書の期限切れ通知等の受信のために使用するメールアドレス

[3] ここではまだsetup.shは実行しません。

5.メール配信の設定方法

次にメール配信の設定をします。

[/home/mastodon/live]にMastodonがインストールされており、設定ファイルは同ディレクトリ内の[.env.production]です。
viエディタなどテキストエディタで[.env.production]を編集します。

SMTP_SERVER, SMTP_LOGIN, SMTP_PASSWORD

の値が最低限必須となります。ご利用のメールサーバに合わせて適宜設定してください。

ConoHaメールサーバーを利用するお客様はこちらの記事をご確認ください。

6.初期設定スクリプトの実行方法

最後に、[/root/setup.sh]を実行します。

# bash /root/setup.sh

これでMastodonの設定が完了し、必要なデーモンも自動的に起動します。

7.ブラウザでアクセスする

ブラウザで https://設定したドメイン にアクセスしてアカウント作成画面が出たらMastodonのセットアップは完了です。

本ガイドはConoHaにて提供しているMastodonのテンプレートイメージで作成されたVPSの操作の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用状況に応じて必要な設定や操作をおこなってください。

なお、本ガイドに掲載しております設定や情報につきましては、実際の仕様とサポートページの更新状況に差が出る場合がございますので、ご利用の際はお客様にてサービス開発元やサービス提供元の公式サイトやWikiなどで最新情報をご確認ください。

問題は解決できましたか?

お役立ち情報

ConoHaではサポートコンテンツの他にも以下のようなお役立ち情報をご用意しております。ぜひご活用ください。