HTTPS通信できない環境でmastodonのインスタンスを建ててみました。
docker利用でのインスタンスの作成です。
インスタンス作成の準備
dockerユーザーを作成する。
##環境
Ubuntu 19.04
マストドン導入前の準備
###パッケージのアップデート
まず最初にパッケージのアップデートを行う。
$ sudo apt update
$ sudo apt upgrade
###DockerとDockercomposeのインストール
DockerとDockercomposeをインストールする。
$ sudo apt install docker-compose
$ docker-compose -v
$ sudo apt install docker.io
$ docker -v
###dockerユーザーの作成
インスタンス管理用ユーザーのdockerを作り、Dockerグループに所属させる。
$ sudo adduser --ingroup docker docker
以降の作業はdockerユーザで行う
$ su - docker
$ docker version
##マストドンの導入
マストドンを導入する。オレオレ証明書を用いることもできるが、今回はHTTPSを使わなくてもよいバージョンでインスタンスを建てた。
$ git clone -b v2.0.0 https://github.com/tootsuite/mastodon mastodon (ここでgit checkoutをしろと出る場合があるが無視してよい。)
$ cd mastodon
$ git checkout refs/tags/v2.0.0
次にdocker-compose.ymlを編集する。
- バージョンを3から2に変更する。
1 version: '3'
1 version: '2'
以下のコメントを4か所外す
8 # volumes:
9 # - ./postgres:/var/lib/postgresql/data
15 # volumes:
16 # - ./redis:/data
8 volumes:
9 - ./postgres:/var/lib/postgresql/data
15 volumes:
16 - ./redis:/data
次に環境設定ファイルのサンプルをコピーして用意し、必要なモジュールを入手してビルドする。
$ cp .env.production.sample .env.production
$ docker-compose pull
$ docker-compose build
3種類のシークレットキーの生成を行い、環境ファイルに打ち込む。また、同ファイルのLOCAL_DOMAINとLOCAL_HTTPSを編集する。
$ docker-compose run --rm web rake secret
xxxxxxxxxx
$ docker-compose run --rm web rake secret
yyyyyyyyyy
$ docker-compose run --rm web rake secret
zzzzzzzzzz
$ vi .env.production
15 LOCAL_DOMAIN=example.com <- (自分の持っているIP):3000に変更
16 LOCAL_HTTPS=true <- falseに変更
30 PAPERCLIP_SECRET=xxxxxxxxxx <- 1回目のdocker-composeの結果
31 SECRET_KEY_BASE=yyyyyyyyyy <- 2回目のdocker-composeの結果
32 OTP_SECRET=zzzzzzzzzz <- 3回目のdocker-composeの結果
43 # DEFAULT_LOCALE=de <- コメントを外してja(日本語)に変更
ローカルで試したい場合はLOCAL_DOMAINの値をlocalhost:3000に変更する。
最期にDBの初期化とアセットのプリコンパイルを行う。
$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile
mastodon起動
以下のコマンドを打ち込みMastodonのサービスを起動する。
$ docker-compose up -d (起動)
$ docker-compose ps (起動確認)
http://(LOCAL_DOMAIN):3000/ にアクセスできれば起動成功である。
ログは以下のコマンドで確認できる。
$ docker-compose logs -f
##管理者ユーザーの追加
mastodonを起動した後、ユーザー登録画面にユーザー名、メールアドレスとパスワードを打ち込む。
メールサーバーの設定をしておらずメールが送られないため、コマンドでユーザー追加を行う。
今回はそのユーザーを管理者ユーザーとして登録する。
$ docker-compose run --rm web rails mastodon:confirm_email USER_EMAIL=(設定したメールアドレス)
$ docker-compose run --rm web rails mastodon:make_admin USERNAME=(設定したユーザー名)
このコマンドを行うとログイン画面からログインができるようになる。
##メールサーバーの設定
最後にメールサーバーの設定を行う。gmailを用いた方法を今回は用いる。
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_LOGIN=(自分の所有しているgmail)@gmail.com
SMTP_PASSWORD=(そのメールアドレスのパスワード)
SMTP_FROM_ADDRESS=(おそらく任意。私はSMTP_LOGINのメールアドレスを書いた)
ちなみにgmailを使う場合はここで安全性の低いアプリのアクセスを許可する必要がある。(もっと安全な方法はあるが今回はこの方法を用いる。)
詳しくはこのリンクを参照してほしい。
##停止、再開等のコマンド
$ docker-compose stop
$ docker-compose start
$ docker-compose down
$ cd ..
$ sudo rm -rf mastodon
##終わりに
HTTPSなし環境なのに最新バージョンでmastodonのインスタンスを建てようとしてハマってしまったため、この記事を書いた。
オレオレ証明書を発行してインスタンスを作成することも多分可能であると思う。
##参考にしたサイト
Dockerを使ってMastodonのインスタンスを作る | 人と情報
https://www.tmp1024.com/articles/mastodon-docker-install
Mastodonインスタンスをローカルに立てる簡単な手順
https://l-w-i.net/t/mastodon/init_local_001.txt
Gmail を使って Net::SMTPAuthenticationError が出力される場合の解決法
http://karur4n.hatenablog.com/entry/2015/03/07/234600