Mastodon(マストドン)インスタンスをConoHaで立ち上げる方法

ここ数日すごく話題になっているMastodon。

ボクも興味が湧いちゃってインスタンス立ててみました。

https://leaf.style

そのインスタンスを立てる時にやったことをまとめてみようと思います。

Mastodonってなによ?な方はこちらへどうぞ!

「Mastodon(マストドン)」の基本的な使い方や用語解説など

◆Mastodonの解説◆ (@sameanko)

この記事の目次

ConoHa上にサーバーインスタンスを立ち上げる

まずConoHaのアカウントを持ってない方はここからアカウント登録するとプレゼントクーポンがもらえるので是非どうぞ(^ ^)

ConoHaコントロールパネルからサーバー追加します。

今回ボクはCentOS7.3で立てました。

インスタンスのサイズは、とりあえず立ててみたいだけならメモリ512MBの最小サイズで十分かな?

ここで設定したrootパスワードは絶対忘れないようにね!

ネームタグはお好みで。

サーバー上にMastodonを構築する

基本的な流れはこちらのサイトを参考にさせてもらったんだけど、まだまだひよっこのボクには足りない情報が多すぎた(^^;;

http://jtwp470.hatenablog.jp/entry/2017/04/15/174036

なので、大幅な補足含めて書き留めておこうと思う。

準備

まずはConoHaに立てたインスタンスへログイン。

Macならコンソールからsshでいいと思う。

$ ssh root@<ConoHaに立てたインスタンスのIPアドレス>

ログインしたら一般ユーザーmastodon を作って、パスワードを設定しておく。

# useradd mastodon
# passwd mastodon

sudoコマンドをパスワードなしで実行できるようにしておくと便利なのでそうする。

# usermod -G wheel mastodon
# visudo

-----
## Same thing without a password
%wheel        ALL=(ALL)       NOPASSWD: ALL ←この行のコメントを外す

あと、やっぱり日本語の方がわかりやすいのでロケール変更しとく。

# localectl 
   System Locale: LANG=en_US.UTF-8

# localectl set-locale LANG=ja_JP.utf8

# localectl
   System Locale: LANG=ja_JP.utf8

必要なものをインストールする (追記あり)

公式ページを見ると必要なものがいろいろあるのでそれぞれインストールする。

追記(2017/04/18 23:15):
@ttanimichiさんにご指摘いただきました。
Docker使う場合はNginx以外不要みたいです。
追記ここまで

Ruby (Docker使用時は不要)

ここを参考にしてインストール

http://qiita.com/r-tamura/items/b9b085fc0f9f1073c64c

インストールできる最新版を入れておけばいいと思う。

ボクは2.4.1を入れた。

-devと付いてるやつは開発版なので使わない。

PATHの設定した後は、一度ログアウトするか.bashrc を読み込み直すこと。

インストール完了まではそれなりに時間がかかるみたい。

Node.js (Docker使用時は不要)

yumコマンドでインストールすればいいみたい。

$ sudo yum -y install nodejs npm

$ node -v
v6.10.1

PostgreSQL (Docker使用時は不要)

こちらのサイトを参考にインストール

http://vdeep.net/centos7-postgres

$ sudo rpm -iUvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

$ sudo yum -y install postgresql96-server postgresql96-devel postgresql96-contrib

$ psql --version
psql (PostgreSQL) 9.6.2

インストールしたらスタート&インスタンス起動時に立ち上がるように設定

$ sudo systemctl start postgresql-9.6
$ sudo systemctl enable postgresql-9.6

Redis (Docker使用時は不要)

こちらもyumコマンドでインストール

$ sudo yum -y install redis

スタート&自動起動設定

$ sudo systemctl start redis.service
$ sudo systemctl enable redis.service

Redisの動作確認

$ redis-cli ping
PONG

Nginx

こちらのサイトを参考にインストール。お世話になります(^ ^)

http://vdeep.net/centos7-nginx

必要なリポジトリ追加して

$ sudo vi /etc/yum.repos.d/nginx.repo

-----
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

yumコマンドでインストール&確認

$ sudo yum -y install nginx

$ nginx -v
nginx version: nginx/1.11.13

Docker & Docker-Composeのインストール

Dockerのインストール

ここを参照してインストール。

https://docs.docker.com/engine/installation/linux/centos/

英語だけど頑張って読んだ(笑)

DockerはEEではなくCEを入れましょう。

yum-config-manager でリポジトリを追加。

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yumのパッケージインデックスをアップデートしてからインストール

$ sudo yum makecache fast
$ sudo yum install docker-ce

スタート&自動起動設定

$ sudo systemctl start docker
$ sudo systemctl enable docker

rootユーザーでなくてもdockerコマンドを使えるようにする

$ sudo usermod -aG docker $USER

いったんログアウトしてログインし直す。

(ログインし直すことでdockerコマンドが使えるようになる)

Dockerの動作確認

$ sudo docker run hello-world

Docker-Composeのインストール

ここを参照。英語です(笑)

https://docs.docker.com/compose/install/

Docker-Composeのインストールはrootユーザーでやらないとエラー出ます。

$ sudo -i
# curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# exit

ドメインを準備する

Mastodonインスタンスを外部公開したいなら、ドメインを用意する必要があります。

外部公開をしないならドメイン取得は不要なので読み飛ばしてください。

ドメインを取得する

お名前.comなどで取得してください。

ボクの場合はもちろん leaf.style です(^ ^)

Aレコードの設定

取得したドメインのAレコードにConoHaに立てたサーバーインスタンスのIPアドレスを設定しておきます。

Mastodonのインストール

ここまで来てやっとMastodonのインストールです。

基本的には公式のREADME通りに進めるだけなんだけど、英語です。

https://github.com/tootsuite/mastodon

gitからパッケージをダウンロードして、そのディレクトリへ移動する。

$ git clone https://github.com/tootsuite/mastodon
$ cd mastodon/

docker-compose.yml の編集

dbセクションとredisセクションのvolumesのコメントアウトを外す。

これをやらないとインスタンス再起動時などにデータが全て消えます。

  db:
    restart: always
    image: postgres:alpine
### Uncomment to enable DB persistance
    volumes:
      - ./postgres:/var/lib/postgresql/data

  redis:
    restart: always
    image: redis:alpine
### Uncomment to enable REDIS persistance
    volumes:
      - ./redis:/data

環境設定ファイル.env.production を作成・編集する。

$ cp .env.production.sample .env.production
$ vi .env.production

-----
# Federation
LOCAL_DOMAIN=leaf.style ← 取得したドメインに書き換える
LOCAL_HTTPS=true ← trueのままで

# Application secrets
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=xxx ← あとで書き換える
SECRET_KEY_BASE=xxx ← あとで書き換える
OTP_SECRET=xxx ← あとで書き換える

SMTP_* の設定も必要って書いてあるけど、外部公開しないとかでメール送信が不要であれば設定しなくても問題無いです。

ちなみにDEFAULT_LOCALE のコメントを外してjaに設定しておけば、標準で日本語になるみたいです。

ビルドして設定反映させます。

$ docker-compose build
$ docker-compose run --rm web rake secret

このコマンドを実行したら、長〜いランダム文字列が表示されるので、コピペして.env.production のxxxのところ3箇所に貼り付けます。

データベースのマイグレーションとフロントエンドのプリコンパイルを実施。

$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile

Mastodonインスタンスを起動する

$ docker-compose up -d

おめでとうございます。

これでMastodonが立ち上がりました!

が、しかし・・・

このままではアクセスができません(^^;;

あと少し、設定が必要です。

NginxとFireWallを設定する

SSLの設定

Let’s EncryptでSSL証明書を生成します。

Certbotを使います。

https://certbot.eff.org/all-instructions/#centos-rhel-7-nginx

$ sudo yum install certbot
$ sudo certbot certonly --webroot -w /usr/share/nginx/html -d <取得したドメイン>

メールアドレスを求められるので入力してください。

Nginxの設定

デフォルトの設定ファイルを読み込まれないようにリネームします。

sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.orig

公式ドキュメントから設定をコピペして新しい設定ファイルを作成します。

$ sudo touch /etc/nginx/conf.d/mastodon.conf
$ sudo vi /etc/nginx/conf.d/mastodon.conf

-----
server {
  listen 80;
  listen [::]:80;
  server_name test.leaf.style; ← 取得したドメインに書き換える
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name test.leaf.style; ← 取得したドメインに書き換える

~~

  ssl_certificate     /etc/letsencrypt/live/test.leaf.style/fullchain.pem; ← 取得したドメインに合わせて書き換える
  ssl_certificate_key /etc/letsencrypt/live/test.leaf.style/privkey.pem; ← 取得したドメインに合わせて書き換える

~~

  root /home/mastodon/mastodon/public; ← 書き換える

firewalldの設定

firewalldにhttpとhttpsの通信を許可します。

$ sudo firewall-cmd --list-service
dhcpv6-client ssh

$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --add-service=https

$ sudo firewall-cmd --add-service=http --permanent 
$ sudo firewall-cmd --add-service=https --permanent 

$ sudo firewall-cmd --list-service
dhcpv6-client ssh http https

お疲れ様でした。

これでようやくMastodonインスタンスにアクセスできるようになりました。

取得したドメインにアクセスしてみてください(^ ^)

【作成中】ユーザー登録と管理者設定について

作成中

【作成中】送信メールサーバの設定

作成中

おわりに

オープンソースで誰でもインスタンスが立てられるとはいえ、やはり様々な設定などが必要で、今はまだそうそう簡単に出来るものでもないですね。

正直、疲れました・・・(^^;;

スポンサーリンク
レクタングル広告(大)
レクタングル広告(大)

フォローする

スポンサーリンク
レクタングル広告(大)