Skip to content

Instantly share code, notes, and snippets.

@unak
Last active April 22, 2017 09:35
Show Gist options
  • Save unak/66ce11dfb60e0480eb1003d419e15fdc to your computer and use it in GitHub Desktop.
Save unak/66ce11dfb60e0480eb1003d419e15fdc to your computer and use it in GitHub Desktop.
Installation of local test mastodon

Installation of local test mastodon

手元の仮想マシンにテスト用のmastodonインスタンスを立ててみるための手順メモ。 なおこの手順でできるのはテスト用インスタンスなので外に出さないように。

Setup Ubuntu 16.04 on VMware

まず手元の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/.

Setup mastodon

まず取ってくる。

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

ローカル環境用にブランチを切ってそれを使うことにする。

$ git checkout -b local_env

docker-compose.ymlの修正

デフォルトのままでは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

具体的にはここを書いてある通りコメントアウトする。

dockerイメージ作成

以下の通り。

$ 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_HTTPStrueから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

おつかれさまでした。

Run mastodon!

さあ、動くでしょうか?

$ sudo docker-compose up -d

確認。

$ sudo docker-compose ps

うまくいってれば5つ全部がUpになっている、はず。

あとは、ブラウザで実際に http://<仮想マシンのIPアドレス>:3000/ に接続してみればOK。 https にリダイレクトされて、それで繋がるはず。

Operation

止め方。

$ 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 になる。

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment