Mastodon(マストドン)のインストール手順を解説!ConoHaのVPSでインスタンスを運用する
MastodonはTwitterによく似たサーバーインストール型のSNSだ。独自ドメインとVPS(仮想サーバー)を組み合わせることで、自分だけのMastodonを開設し、外部からユーザーを招待することができる。今回は、「お名前.com」のドメインを設定したConoHaのVPSにMastodonをインストールする手順を解説していくぞ。
■ MastodonをConoHaのVPSに導入する
前回は、「お名前.com」で取得したドメインを、ConoHaのサーバーに登録する作業を行った。今回はConoHaのサーバーにMastodonを導入する手順を解説していく。
Mastodonの利用には、コンテナ管理ソフトの「Docker」を利用するのが、設定項目が少なく済むのでオススメ。「Docker-Compose」とサーバーソフトの「Nginex」を合わせて導入し、それぞれの設定を行っていく。注意したいのはメール機能。Mastodonではユーザー登録の際にメール認証を行うが、そのメール発送を行う「SparkPost」などのSMTPサービスとの連携が必要になる。ドメインを登録してDNSレコードをドメイン側に登録すると、APIキーが発行されるので、Mastodonの設定ファイル(.env.production)に登録すればOKだ。
それ以外にもポートの開放や暗号化キーの発行、SSLサーバー証明書の設定といった作業が必要になるので、ひとつずつクリアしていこう。
■ Mastodonに必要なソフトをVPSにインストールする
[root]# yum update |
インストール作業を始める前に「yum update」を実行しyumをアップデートし最新版にしておこう
[root]# yum -y install git |
まずはyumで「Git」をインストールする
[root]# git clone https://github.com/tootsuite/mastodon.git |
[root]# cd mastodon |
続いてGitHubから「Mastodon」をダウンロードしよう。インストールが完了したら生成されたMastodonのフォルダに移動
[root]# yum -y install nginx |
MastodonではサーバーソフトにApacheではなく「Nginx」を利用する。yumからNginxをインストールする
[root]# yum -y install yum-utils[root]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | [root]# yum install docker-ce | |
次にDockerをインストールする。Dockerは2017年3月より商用版の「Docker EE」と無償版の「Docer CE」に分かれている。今回は無料の後者をインストール
[root]# curl -L https://github.com/docker/compose/releases/download/1.11.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
[root]# chmod +x /usr/local/bin/docker-compose |
Dockerで複数のサービスを管理するため、「Docker-Compose」を導入する。
■ Mastodonが利用するポート番号を開放する
[root]# firewall-cmd --add-port=80/tcp --zone=public --permanent |
[root]# firewall-cmd --add-port=443/tcp --zone=public --permanent |
[root]# firewall-cmd --add-port=3000/tcp --zone=public --permanent |
[root]# firewall-cmd --reload |
ファイアウォールの設定を行う「80」(HTTP)、「443」(HTTPS)、「3000」(Mastodon)のポート番号を開放。最後にリロードして設定を反映させよう
■ Sparkpostの設定を行う
「Sparkpost」を開いてアカウントを作成。ログインしたら、「ACCOUNT」から「SENDING DOMAINS」を開き、「Sending Domain Name」に取得したドメインを入力。「ADD DOMAIN」をクリックしよう
次に「ACCOUNT」の「API KEYS」を開く。「NEW API KEY」をクリックしてAPIキーを生成しよう。このAPIキーは後で利用するので、コピペでメモ帳などに保存しておく
次に「Settings」をクリック。「Hostname」「Valus」の値が表示されたのを確認
「お名前.com」の「ドメインNavi」にログインし、「ドメイン設定」から「DNS関連機能の設定」をクリックする
Mastodonのメール送信に利用したいドメインを選択して「次へ進む」をクリック
「DNSレコード設定を利用する」の「設定する」をクリックする
「ホスト名」にSpeakpostの「Hostname」を入力。Speakpostの値はドメイン名が含まれているのでそれ以外の部分を選択して貼り付けよう。「TYPE」で「TXT」を選択し、「VALUE」にSpeakpostの「Value」を入力
画面下の「確認画面へ進む」をクリック。内容を確認した上で設定しよう
Speakpostに戻り、「Test」をクリック。DNSが正しく設定されたか確認しよう。正しく登録されていれば「Verified」と表示される
■ Mastodonの設定を行う
[root]# cp .env.production.sample .env.production |
Mastodonの設定ファイルのサンプルは「.env.production.sample」だ。コピーして「.env.production」にリネームする。これがMastodonの設定ファイルとなる
[root]# systemctl start docker |
[root]# systemctl enable docker |
「systemctl start docker」でDockerを起動、「systemctl enable docker」で自動起動の設定を行う。
[root]# docker-compose run --rm web rake secret |
Dockerを使って暗号化キーを生成する。上記のコマンドを実行してしばらく待機すると、文字列が出力される。3回繰り返して3つの文字列を生成。
[root]# vim .env.production |
Vimで「.env.production」を開いてMastodonの設定を入力する。取得したドメインを青字の箇所に設定。緑の箇所に任意のユーザー名、データベース名、パスワードを入力する(後で利用するのでメモしておこう)。Dockerで生成した3つの暗号化キーは赤字の箇所に設定。Speakpostで取得したAPIキーは黄色の箇所に入力しよう
# Service dependencies |
REDIS_HOST=redis |
REDIS_PORT=6379 |
# REDIS_DB=0 |
DB_HOST=db |
DB_USER=ユーザー名 |
DB_NAME=DB名 |
DB_PASS=パスワード |
DB_PORT=5432 |
# Federation |
LOCAL_DOMAIN=取得したドメインを設定 |
LOCAL_HTTPS=true |
# Use this only if you need to run mastodon on a different domain than the one used for federation. |
# Do not use this unless you know exactly what you are doing. |
# WEB_DOMAIN=mastodon.example.com |
# Application secrets |
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose) |
PAPERCLIP_SECRET=暗号化キー1 |
SECRET_KEY_BASE=暗号化キー2 |
OTP_SECRET=暗号化キー3 |
# Registrations |
# 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.sparkpostmail.com |
SMTP_PORT=587 |
SMTP_LOGIN=SMTP_Injection |
SMTP_PASSWORD=取得したAPIキー |
SMTP_FROM_ADDRESS=好きな文字列@取得したドメイン |
#SMTP_DELIVERY_METHOD=smtp # delivery method can also be sendmail |
SMTP_AUTH_METHOD=plain |
SMTP_OPENSSL_VERIFY_MODE=none |
SMTP_ENABLE_STARTTLS_AUTO=true |
■ Nginxの設定を行う
[root]# vim /etc/nginx/conf.d/mastodon.conf |
次に、Nginxの設定ファイル(mastodon.conf)を作成し、以下の設定をコピペし、青色の箇所を取得したドメインに書き換えて、保存する
map $http_upgrade $connection_upgrade { |
default upgrade; |
'' close; |
} |
server { |
listen 80; |
listen [::]:80; |
server_name 取得したドメインを入力; |
return 301 https://$host$request_uri; |
} |
server { |
listen 443 ssl; |
listen [::]:443 ssl; |
server_name 取得したドメインを入力; |
ssl_protocols TLSv1.2; |
ssl_ciphers EECDH+AESGCM:EECDH+AES; |
ssl_ecdh_curve prime256v1; |
ssl_prefer_server_ciphers on; |
ssl_session_cache shared:SSL:10m; |
ssl_certificate /etc/letsencrypt/live/取得したドメイン/fullchain.pem; |
ssl_certificate_key /etc/letsencrypt/live/取得したドメイン/privkey.pem; |
keepalive_timeout 70; |
sendfile on; |
client_max_body_size 0; |
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 @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://localhost: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; |
} |
[root]# git clone https://github.com/letsencrypt/letsencrypt |
[root]# cd letsencypt |
[root]# ./letsencrypt-auto certonly --standalone -d 取得したドメイン |
「Let's Encrypt」でSSLサーバー証明書を取得しよう。取得したドメイン名を使って設定。メールアドレスの入力を求められるので利用できるものを入力。あとは「Agree」(同意)を指定すればOK
■ Mastodonを起動する
[root]# systemctl start nginx |
[root]# systemctl enable nginx |
Nginxを「systemctl start」で起動しよう。続けて「systemctl enable」で自動起動の設定もしておく
[root]# docker-compose pull |
[root]# docker-compose build |
[root]# docker-compose up -d |
「Docker-Compose」の「Pull」(取得)「build」(構築)「up -d」(バックグラウンドで起動)を実行して立ち上げる
[root]# docker exec -it mastodon_db_1 /bin/bash |
bash# su - postgres |
$ createuser -P ユーザー名 |
Enter password for new role:パスワード |
Enter it again:パスワード |
$ createdb DB名 -O ユーザ名 |
$ exit |
bash# exit |
Dockerが立ち上がったらデータベースの設定を行う。「.env.production」に設定したユーザー名、DB名、パスワードを登録しよう。
[root]# docker-compose run --rm web rails db:migrate |
[root]# docker-compose run --rm web rails assets:precompile |
[root]# docker stop $(docker ps -a -q) && docker-compose up -d |
完了したらデータベースのマイグレーションを行い設定を反映させ、コンテナを再起動する
ブラウザで取得したドメインのURLを開こう。Mastodonのログインページが表示される
■ MastodonとNginxの設定に注意
Mastodonの設定で難易度が高いのが、Mastodonの設定ファイル(.env.production)とNginx(mastodon.conf)の設定だ。Nginxは公式サイトの設定をそのまま使えばいいが、Mastodonの設定ファイルは、暗号化キー、ドメイン、メールの設定を行う必要があるので注意が必要だ。
「お名前.com」では税抜30円の安いドメインも提供している(数量限定)し、「ConoHa」も期間限定のVPSを無料利用できる新規登録キャンペーンを実施しているので、“とりあえず”Mastodonを始めてみたいという方にもおすすめ!
国内ユーザーだけでもユーザー数5万人を超え、新たなソーシャルネットワークサービスとして定着しつつあるMastodon。まだ利用者が少ないうちにインスタンスを立てて、巨大コミュニティを目指してみよう。