ここ数日すごく話題になっているMastodon。
ボクも興味が湧いちゃってインスタンス立ててみました。
https://leaf.style
そのインスタンスを立てる時にやったことをまとめてみようと思います。
Mastodonってなによ?な方はこちらへどうぞ!
「Mastodon(マストドン)」の基本的な使い方や用語解説など
この記事の目次
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インスタンスにアクセスできるようになりました。
取得したドメインにアクセスしてみてください(^ ^)
【作成中】ユーザー登録と管理者設定について
作成中
【作成中】送信メールサーバの設定
作成中
おわりに
オープンソースで誰でもインスタンスが立てられるとはいえ、やはり様々な設定などが必要で、今はまだそうそう簡単に出来るものでもないですね。
正直、疲れました・・・(^^;;