手元の仮想マシンにテスト用のmastodonインスタンスを立ててみるための手順メモ。 なおこの手順でできるのはテスト用インスタンスなので外に出さないように。
まず手元のVMwareにUbuntu 16.04をインストールする。今回は16.04.02 Serverを用意した。 インストール自体は特に言うことなし。 ただし、使いたくもないdockerのせいでアーキテクチャ縛りがあるので、amd64を入れること(i386はダメ)。死ね。 リソースはHDD20GB、メモリ1.5GB、CPU2coreにしたが、これでいいのかどうかはわからぬ。
JPキーボード使ってるなら必要。
sudo dpkg-reconfigure keyboard-configuration
あとは、Generic 105-key (Intl) PC → Japanese → Japanese → The default for the keyboard layout → No compose key で。
最初に、パッケージリストを更新しておく。
$ sudo apt-get update
……とやると失敗するので、先にソースリポジトリのリストからCD-ROMの行(なぜかある)を消しておかなければならない。
$ sudo vi /etc/apt/sources.list
5行目の deb cdrom:[... の行を # でコメントアウト。
#
# deb cdrom:[Ubuntu-Server 16.04.2 LTS _Xenial Xerus_ - Release amd64 (20170215.8)]/ xenial main restricted
deb cdrom:[Ubuntu-Server 16.04.2 LTS _Xenial Xerus_ - Release amd64 (20170215.8)]/ xenial main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
これね。
$ sudo apt-get update
まず最初はsshd。 おもむろにインストール&実行。
$ sudo apt-get intall -y openssl-server
$ sudo systemctl restart ssh
あとは、~/.ssh/authorized_keys
を作ればsshでログインできるようになるので一気にハッピーになる。
次はgit。
$ sudo apt-get install -y git
入れたくないけどdocker。
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
docker-composeとかいうの、最新のをいちいち手で持ってきて入れないといけないらしい。 そして「最新」っていうURLはないので死ねばいいと思う。この例では1.12.0を使う。
$ curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > docker-compose
$ sudo chown root:root docker-compose
$ sudo chmod a+x docker-compose
$ sudo mv docker-compose /usr/local/bin/.
まず取ってくる。
$ git clone https://github.com/tootsuite/mastodon.git
$ cd mastodon
ローカル環境用にブランチを切ってそれを使うことにする。
$ git checkout -b local_env
デフォルトのままではdockerを止めるたびにPostgresとRedisのデータが飛ぶので(!)、ちゃんとそこを修正する。
### 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
具体的にはここを書いてある通りコメントアウトする。
以下の通り。
$ cp .env.production.sample .env.production
$ sudo docker-compose pull
$ sudo docker-compose build
最後のbuildはものすごく時間がかかるので、コーヒーでも飲んでのんびりゆったり待つ。
まず「ひみつのあたい」を作成する。3つ必要なので、
$ sudo docker-compose run --rm web rake secret
これを3回実行。数秒ずつかかる。
できた「ひみつのあたい」を.env.production
の所定の位置に記入する。
$ vi .env.protection
# Application secrets
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
具体的にはここ。
また、テスト環境でSSLは必要じゃないので(てゆか証明書もないわけだし)、SSLは殺しておく。 これも .env.produciton の冒頭付近を変更する。
# Federation
LOCAL_DOMAIN=example.com
#LOCAL_HTTPS=true
LOCAL_HTTPS=false
ご覧の通り、LOCAL_HTTPS
をtrue
からfalse
に。
さらに、このままだとメールをよそ様(Mailgun)さんに投げようとするので、その設定も殺しておく。 テストでメール送信が必要ならちゃんと設定すること。
#SMTP_SERVER=smtp.mailgun.org
コメントアウト。
最後にDBのmigrateとassetsのプリコンパイル。Railsのいつものやつ。
$ sudo docker-compose run --rm web rails db:migrate
$ sudo docker-compose run --rm web rails assets:precompile
おつかれさまでした。
さあ、動くでしょうか?
$ sudo docker-compose up -d
確認。
$ sudo docker-compose ps
うまくいってれば5つ全部がUpになっている、はず。
あとは、ブラウザで実際に http://<仮想マシンのIPアドレス>:3000/ に接続してみればOK。 https にリダイレクトされて、それで繋がるはず。
止め方。
$ sudo docker-compose stop
再開。
$ sudo docker-compose start
設定(.env.production)いじったりコードいじったりした後の再起動。
$ sudo docker-compose stop
$ sudo docker-compose up -d
ユーザーの手動confirm(メール殺してるから当然必要)。
$ sudo docker exec -it $(sudo docker ps -q -f name=mastodon_web_1) bundle exec rake mastodon:confirm_email USER_EMAIL=めーるあどれす
指定ユーザーのadmin化。
$ sudo docker exec -it $(sudo docker ps -q -f name=mastodon_web_1) bundle exec rake mastodon:make_admin USERNAME=ゆーざーめい
admin用ページURLは http://<仮想マシンのIPアドレス>:3000/admin/settings になる。