1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bratサーバーをGCPのVM(Ubuntu 20.04)に作成し、Webブラウザを使ってアノテーションを始めるまでの手順

Posted at

はじめに

アノテーションの方法として、oxを判定する比較的簡単なデータ分析はグーグルスプレッドシートで対応していました。

しかし、最近系列ラベリングなどのアノテーションが必要になり、グーグルスプレッドシートでは厳しくなってきたので、何かしらのアノテーションツールを導入することにしました。

要件としては以下のとおりです。

  1. OSによらず(特にWindowsは必須)、極力複雑な手順を含めずに、かつ複数ユーザーからアクセス可能にする
  2. サーバーはGCPのVMを使い、データはサーバ上で管理する(クライアントにデータを置かない)

今回は利用経験があるということもあり、bratを使うことにしました。

ただ、bratサーバを立てる記事は少なめ(ローカルでとりあえず使うというのは結構ある)なので、「VM作成〜クライアントからbratへアクセスしてexampleにタグ付け」までの流れを忘備録としてまとめることにしました。

手順

0. 前準備: gcloudをインストールする

GCPのVMへ接続する上で、クライアントPCにgcloudをインストールしておくと、色々はかどります。

以下のクイックスタートからOSに応じたgcloudをインストールしておきましょう。

1. GCPでbratを導入するVMを作成する

まずbratをインストールするサーバーを作ります。今回はGCP computer engingのVMを使います。

ポイントは以下のとおりです。

  • スペックは軽めで問題ない(アノテーション対象のデータが乗る程度のディスク容量は確保しておく)
  • bratサーバーへHTTPでアクセスできるようにするためのファイアウォールの設定が必要
  • セキュリティを高めるために外部IPは付与しない(エフェメラルIPもなし)

今回は、例として以下のようなサーバーを作成しました

  • OS: Ubuntu 20.04
  • スペック: 適当(ディスクは一応20G用意)
  • サーバー名: brat-server
  • project名: test
  • zone名: asia-east1-a
  • 外部IP: なし
  • ファイアウォール: tcp:8888を開ける(ポートは他と重複しなければ自由。接続元IPアドレスの範囲は適宜調整)
  • サービスアカウント: アクセス予定のユーザーを詰め込んだものを設定しておく

2. dockerをインストールする

今回はbratのdockerコンテナを利用するため、先にdockerをインストールします。

といっても、brat用に特別な対応は必要なく、普通にdockerをインストールすればよいだけです。

記述する必要性も薄いですが、一応手順を掲載しておきます


# gcloud ssh を使って(1)で作成したサーバーへ接続(ブラウザからのアクセスでも問題ない)
gcloud compute ssh --project "test" --zone "asia-east1-a" brat-server

# とりあえずupdate
sudo apt update

# インストールに必要なアプリケーションをインストール
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 承認用のキーを取得・確認し、dockerのリポジトリ情報をインストール
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# dockerのインストールとテスト
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run --rm run-test
sudo docker rmi run-test #イメージの削除

3. bratをインストールする

brat用のdockerコンテナを作成している方がいますので、それをそのまま利用します。

今回はコメントなどを日本語化しているroy29fuku様のコンテナを使いました。

bratコンテナとそのデプロイ方法は、コンテナ作成者の以下のサイトを参考にさせていただきました(というかほぼそのまま)。


# docker volumeの作成と確認(brat関係のデータ置き場になります)
sudo docker volume create --name brat-data
sudo docker volume create --name brat-cfg

sudo docker volume ls

# bratコンテナDL〜起動まで
git clone https://github.com/roy29fuku/brat-docker.git
cd brat-docker/

### 注意: Dockerfileの書き換えが必要 ###
# `FROM ubuntu` 以降の近いところに `ENV DEBIAN_FRONTEND=noninteractive` を追加

# build
sudo docker build . -t roy29fuku/brat
# 確認
sudo docker images

# docker コンテナの初回起動
sudo docker run --name=brat-dev -d -p 8888:80 -v brat-data:/bratdata -v brat-cfg:/bratcfg -e BRAT_USERNAME=brat -e BRAT_PASSWORD=brat -e BRAT_EMAIL=hogehoge@xxx.com roy29fuku/brat

注意点としては、ubuntu18以降の環境だとdocker buildがうまく通らないことです(タイムゾーン選択で詰まる)。

対処方法として、DockerfileにENV DEBIAN_FRONTEND=noninteractiveを書き加えることで解決できます。

原因については以下の記事を参照してください。

4. クライアントからブラウザ上でbratサーバーにアクセスする。

gcloud ssh でローカルフォワーディングし、ブラウザから設定したポートへアクセスすることで比較的安全にbratサーバーへアクセスできます(設定したprojectおよびサービス アカウントに関するGoogleの認証が必要になります)。

# ポートフォワーディング(ローカルのポートは他のポートと被らないなら何でも良い)
gcloud compute ssh --project "test" --zone "asia-east1-a" brat-server -- -N -L 2222:localhost:8888

# Chromeなどのブラウザ上で localhost:2222 にアクセス(bratサーバーにつながる)# 右上のbratのアイコンからログインする(ユーザー名とパスワードは(3)で設定したもの)# example のデータでタグ付けができればOK

5. その他

本記事ではbrat自体の設定については省略します。以下のページが参考になると思います。

おわりに

今回はGCPのVMにUbuntuサーバーを作成し、bratをdockerインストールして、ローカル環境からexampleをアノテーションするところまでを解説しました。

やっぱりアノテーション専用のツールを使うと作業が快適になりました。皆様もぜひ導入してみてはいかがでしょうか?

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?