ConoHaのVPSでMastodonインスタンスを作る


久しぶりに書く気になったので。今流行のMastodonの作り方です。

こんな人向けを想定してます
��Debian/Ubuntuでサーバー建ててる
��VPSやドメインを持ってる
��Apache使いである(Nginx分からないのです)

環境はこんな感じで
��VPSはConoHa
��Ubuntu 16.04 LTSをインストール
��メールサーバーがConoHaのアプリケーションサーバー

では手順の方を

Certbot、Apache、Gitが入っていない人は入れておいてください
Certbotはletsencryptパッケージで入ります

  • Docker-EngineとDocker-Composeをインストール
    aptでインストールするとバージョン古いので、build通りません。公式レポジトリから新しいのを入れます。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

鍵を追加したらレポジトリを追加
$ sudo add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

そしたらdocker-ceパッケージを入れておきます
$ sudo apt update ;sudo apt install docker-ce

次はdocker-composeをインストール

https://github.com/docker/compose/releases/
で最新リリースをチェックしておきます。(2017/05/05では1.13.0)
# curl -L https://github.com/docker/compose/releases/download/VERSION/docker-compose-`uname -s` `-uname -m` > /usr/local/bin/docker-compose" $ sudo chmod +x /usr/local/bin/docker-compose

VERSIONは最新リリースのバージョンに書き換えてください。

  • Mastodonをクローンする
    /var/www/mastodonに置くこととしてますが適宜変えてください。
    あと、最新のコミットにすると色々面倒になるかも思います。

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

cloneが終わったら設定ファイルを作ります
$ sudo cp .env.production.sample .env.production

テンプレをコピーしたら適当なエディタで開きます

L12
LOCAL_DOMAIN="動かすドメイン名"

L40~
SMTP_SERVER="コンパネで見られるsmtpサーバー"
SMTP_PORT=587SMTP_LOGIN="作ったアドレス"
SMTP_PASSWORD="設定したパス"
SMTP_FROM_ADDRESS="作ったアドレス"
L49コメントインして
SMTP_OPENSSL_VERIFY_MODE=none

ここで一旦保存して、docker-compose.ymlを編集。
L8,9,15,16をコメントインします。

ここまで来たらイメージを作ります
$ sudo docker-compose build

終わったら、.env.productionのL21-23に使うシークレットを生成します
$ sudo docker-compose run --rm web rake secret

を3回実行して貼り付けます。

終わったらDBの生成とアセットのプリコンパイルをします
$ sudo docker-compose run --rm web rails db:migrate
$ sudo docker-compose run --rm web rails assets:precompile

では起動しましょう
$ sudo docker-compose up -d

とりあえずの動作チェック
$ curl -o /dev/null -S http://localhost:3000/

異常がなければ一瞬で終わるはずです

設定ファイルのサンプルがあるのでこれを参考にDocumentRootやらを書き換えます。
あと、proxy_wstunnelのModを有効にしろとあるのでa2enmodで有効にします。
SSLの証明書はcertbotで取ります。
$ sudo letencrypt certbot --standalone -d "domain"

次にアカウントを登録してメール認証を通します。管理者になるには
$ sudo docker-compose run --rm web rails mastodon:make_admin USERNAME="ユーザー名。メールアドレスではない"

cronも設定します。設定しとかないとインスタンス間の接続が切れたり、マッハでディスクフルになったりとろくなことがないです。

24 25 4,17 * * * /bin/bash -l -c 'cd /var/www/mastodon && docker-compose run --rm web rake mastodon:daily'
25 45 4,17 * * * /bin/bash -l -c 'cd /var/www/mastodon && docker-compose run --rm web rake mastodon:media:remove_remote'

  • アップデート
    アップデートしたい時は

$ sudo git pull
$ sudo docker-compose build
$ sudo docker-compose up -d

とりあえずこんな感じで。あと、これ書いている間にアップデートかけたら手順を間違えてDB飛びました。下手な運用すると大惨事です。気をつけましょう。(あと間違えてDockerでDownしたりとかもしないように)

コメント