ZEALOTエンジニアブログ

さくらVPSのUbuntu16.04でMastodonを立てる(Docker版)

Pocket

Mastodon というものが流行っているらしいので、立ててみました。

  1. Ubuntuのアップグレード
  2. Dockerのインストール
  3. docker-composeのインストール
  4. Mastodonのインストール
  5. nginxの設定
  6. アカウント登録と管理者権限の設定

1. Ubuntuのアップグレード

しばらく放置されていたさくらVPSのインスタンスが1台あったんですが、12.04とだいぶ古いのでアップグレードしました。Mastodonとは関係無いので、読み飛ばしてもらって結構です。

一旦、12.04の状態を最新に更新します。

do-release-upgrade で順番にアップグレードしていきます。今回は 12.04 → 14.04 → 16.04 という段階を経てアップグレードしました。

14.04 から 16.04 にアップグレードする時に以下のようなエラーが出ました。

以下のフォーラムに解決策がありました。

https://ubuntuforums.org/showthread.php?t=2328729

つぎの環境変数付きで実行することで解決しました。

2. Dockerのインストール

以下の公式のドキュメントがあるのでその通りにインストールしました。

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

Dockerのインストールに必要となるツール等をインストールします。

GPGキーをインストールします

Docker用のaptリポジトリを追加しましす

apt-get update しておきます

Docker本体をインストールします。バージョン指定もできるようですが今回は最新のDockerが取得できれば良いので、以下のコマンドでインストールしています。

以下のコマンドで正常にインストールできたか確認します。

sudo して docker コマンドを入力しなくていいように以下のコマンドで自分自身を docker グループに追加しておきます。

3. docker-composeのインストール

Mastodon は docker-compose を使っているようなので、これもインストールします。

docker-composeをダウンロードしてきて、実行権限つけるだけです。

4. Mastodonのインストール

GitHubからクローンしてきます。

取得してきたら、.env.production, docker-compose.ymlの2つのファイルを編集します。まず、.env.productionをコピーして編集します。

  • LOCAL_DOMAIN: サーバのドメインを指定します(social.zealot.co.jp)
  • LOCAL_HTTPS: true
  • PAPERCLIP_SECRET: 次に説明するシークレットを設定
  • SECRET_KEY_BASE: 次に説明するシークレットを設定
  • OTP_SECRET: 次に説明するシークレットを設定
  • DEFAULT_LOCALE: ja (日本語をデフォルトにしました)
  • SMTP_SERVER: smtp.gmail.com (Gmailを使って送信するようにしました。その他のSMTP_*の設定も変更します)

上記3つのSECRETを生成するコマンドも用意されているので、以下のコマンドを3回実行してSECRETを取得します。(最初にイメージの取得などを行うのでちょっと時間がかかります)

DBにPostgreSQL、Redisを利用しているようです。データを永続化するには、以下のファイルのコメントアウトされている volumes の設定を有効にしておきます。

このあたりです。

テーブルの作成と、アセットファイル(CSSやJS)のプリコンパイルを実行します。

docker-compose run で起動します。PostgreSQL, Redis、Mastodonのアプリケーション本体等のコンテナが起動します。(-d でデーモンとして起動します。最初は、-dなしでフォアグラウンドで起動して問題なければ -d で起動しっぱなしにすると良いです)

5. nginxの設定

SSL経由でアクセスしたいので、nginxをインストールして設定します。

まず、nginxをインストールします。

以下に、nginxの設定例があったので持ってきます。

https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md

日本語でコメントしているところを変更しています。

sudo vi /etc/nginx/sites-available/mastodon

シンボリックリンクをはります。

nginxを起動します

6. アカウント登録と管理者権限の設定

ここまで出来たらセットアップは完了です。

今回は、 social.zealot.co.jp としてセットアップしたので、 https://social.zealot.co.jp にアクセスします。以下の新規登録画面が表示されたらインストール成功です。

適当にアカウントを登録します。アカウント登録が出来たら、以下のコマンドを実行して管理者権限をつけておきます。(存在するユーザに権限を付けているだけなので、最初にアカウントを作成しておく必要があります)

以下のURLで管理画面にアクセスできます。

https://ホスト名/admin/settings

以上でインストールの完了です。Dockerだと簡単にインストールできて良いですね。

Pocket