Ubuntu18にOpenSTFを入れてみた
openSTFとは
Androidの実機をブラウザ経由で遠隔から操作できるアプリ
なぜこの記事を書くのか
公式に書いてある通りに実行したら、全然インストールができなかったので、誰かの役に立つかなって思って。
今回の前提
- OSから新規でインストールする。
- 2018年7月での話です。今後アップデートされるとサクッとインストールできるかもしれないです。
はまったポイント
- rethinkdbがインストールできない。
- ubuntu16にするとサポート切れでupgradeできない。
- Ubunsu以外のディストリビューションに入れようとするも、同じようにどっかでエラーが起きる。
動くまでにやった手順
ともあれ、Ubuntu16をインストール
rethinkdbのmakeがUbuntu18ではコンパイルでエラーを出すので、Ubuntu16をインストール。
17ではなく16を選んだのは、ネットで調べていたら17でもエラーが出て困っている人がいたからです。
Ubuntu 16.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team
rethinkdbをインストールする
公式Install RethinkDB on Ubuntu - RethinkDBにある通りインストールする。
source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list wget -qO- https://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add - sudo apt-get update sudo apt-get install rethinkdb
Ubuntu18にアップグレードする
Ubuntu17のサポートが切れているので
apt-get dist-upgrade
でアップグレードできなかったので、下のサイトサイトを参考にアップグレードを実行する。
いくつか方法が紹介されているが、サーバーを立てるのが面倒くさかったので
歯抜け状態でのアップグレード その2. sources.list を書き換えて、A → (飛んで) → C へ
を実行しました。
wikipediaのUbuntu - Wikipediaからコードネームを引っ張ってきて、
sudo vi /etc/apt/sources.list
で開いてコードネームを下のように変更する。
Yakkety -> Bionic
で、アップグレードをする。
sudo apt-get dist-upgrade
注意
アップグレード中にサスペンドするとログインができなくなって、アップグレードの進捗がわからなくなって、いつ再起動すればいいのかわからなくなってしまうので、設定でサスペンドしないように変更して置いたほうが良いです。
STFに必要な他のアプリをインストールする
色々インストール
sudo apt-get update sudo apt-get install git android-tools-adb python autoconf automake libtool build-essential ninja-build libzmq3-dev libprotobuf-dev graphicsmagick yasm stow
gitをインストール
git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags` echo "source ~/.nvm/nvm.sh” >> ~/.bashrc
LTSのバージョンを確認して、それを使用する。
nvm ls-remote nvm install [バージョン]
ZeroMQをインストール
cd ~/Downloads wget http://download.zeromq.org/zeromq-4.1.2.tar.gz tar -zxvf zeromq-4.1.2.tar.gz cd zeromq-4.1.2 ./configure --without-libsodium --prefix=/usr/local/stow/zeromq-4.1.2 make sudo make install cd /usr/local/stow sudo stow -vv zeromq-4.1.2
protocolbufferをインストール
cd ~/Downloads git clone https://github.com/google/protobuf.git cd protobuf ./autogen.sh ./configure --prefix=/usr/local/stow/protobuf-`git rev-parse --short HEAD` make sudo make install cd /usr/local/stow sudo stow -vv protobuf-* sudo ldconfig
OpenSTFをインストール
cd mkdir openstf cd openstf/ git clone https://github.com/openstf/stf.git cd stf sudo npm install -g stf --unsafe-perm
OpenSTFを起動する
#DBを起動 rethinkdb #起動 stf local
途中で、ADBサーバーでエラーが起きるとき
一旦stfを止めて、手動で起動すれば良いみたいです。
adb start-server
画面を表示してみる
起動した端末で http://127.0.0.1:2100 にアクセスして、ログイン画面が表示されれば成功。
FIDOの基礎情報
FIDOの基礎
TL;DR
実装方法ではなく、FIDOがどんなものか?なぜ使われるようになってきそうか?の説明。
FIDOの背景
現在の認証はパスワードで行うことが一般的だが、パスワードが漏れただけで第三者にログインされてしまう。 その対策として現在は下の2つが主に使われる様になっってきた。
- on time password(OTP)
- 指紋認証などの生態認証
OTPの問題
- ジェネレータを使ったサービスを複数使うと、キーを沢山管理しないといけなくなり、大変。
- 有効期限などがあり、タイミング悪く使用できない時がある。
- 手入力というアナログ手法なのでミスが多い。
これらの問題に対して、どうにかしようって事で、FIDOを使いましょう。
FIDO Allianceとは
FIDOの特徴と必要性
- ハードウエアトークンなどが作成する公開・秘密キーをサーバーに送り、端末を登録する。
- 一度登録したら、パスワードなどの情報を送らなくても認証が完了するので、よりセキュアに使える。
- サーバーの情報が漏洩しても、ハードウエアトークンが無ければログインできないので、漏洩対策にもなる。
- 一つのキーがあればどのサービスにもログインできる。
- パスワードを覚える必要がない。
- トークンさえ作れれば、ハードが無くても使えるはず。(未確認)
- yahoo!、楽天、Amazon、google等の多くの企業がworking groupに入っている。ログインのデファクトになると思われるので、ほか案件をする上で知っておかないと辛い目に合うかも。
1.0
- U2F(Universal 2nd Factor)
- 多要素認証を導入する仕様
- UAF(Universal Authentication Framework)
- 信頼した端末でパスワード無しで認証する仕様
- 自分の端末の指紋認証を他のサービスのログインに使用する
- 信頼した端末でパスワード無しで認証する仕様
の仕様を決めている。
2018/05では1.2が最新で、NFCやBLEに対応している。
2.0
w3cと決めてるよう。web authentication api の事かな。
やってる事
クライアントとサーバー間で公開キーと秘密キーの交換をする。 webサービスだけじゃなく、android、iOSでも使える。 クライアントは何でもいいが、jsが多くなるかな。
今後のプラットフォームの対応
これからの動き
仕様が頻繁にアップデートされると思われる。 色んな機器が対応してくると思われる。
Linux(EC2)にUpsourceをインストールしてみた
EC2にUpsourceをインストール
しました。
# アプリのダウンロード wget https://download.jetbrains.com/upsource/upsource-2017.3.2888.zip unzip upsource-2017.3.2888.zip rm upsource-2017.3.2888.zip cd upsource-2017.3.2888/bin # 8080ポートを使いたくないので、変更 sh upsource.sh configure --listen-port 11111 # 起動 sh upsource.sh start
特に何も問題なく簡単にインストール&起動ができました。 流石、JetBrains。
唯一の注意点
t2.micro(無料枠のEC2インスタンス)だと、メモリが足りなくてインストールはできるけど起動しませんでした。
t2.mediumぐらいは必要だと思います。
backlogのwikiを自動で作成するツールを作った
プロジェクトが立ち上がるたびに、同じ事をしていた
それはきっと無駄な時間だ。
と思って、そういえば、backlogはAPIがあるから定型文作ったら、
ボタンぽちればwikiを自動で作れるんじゃない?とふと思ったので、作ってみた。
作ってみて
いま、勝手に進めているプロジェクトで使用してるVue.jsを使って作ってみたんだけど、
こういうの作るのにはすごい向いてるね。
楽に作れましたよ。
サーバーとの通信にはAxiosを使ったんだけど、これもあんまり細かいこと考えなくても使えてとても便利。
sourceはGitHubに上げたのでcloneなどして使ってください。
webpackを使ってローカルサーバーを立ち上げれるので、ローカルからでも使えるし、
サーバーに挙げてもらっても使えます。
使い方はREAD MEを見てください
画面イメージ
最初の状態
ツールの画面
追加した時の状態
RDSを作るとデフォルトの文字コードがlaten-1になってしまう
ポチポチとRDSを作るとデフォルトの文字コードがlaten-1になってしまう問題
ポチポチとOKOKでRDSを作成すると文字コードがlaten-1になってしまって、困るという話。
原因
そもそも、パラメータグループで設定をしないといけなかった。
対処
パラメータグループを作成する
左のメニューからパラメータグループを選ぶ。
適当に入力していく。
パラメータの絞り込みができるので、 character
で絞り込む。
とりあえず、絞り込みがされたものを選択をする。
UTF-8と1 を設定する。
RDSの作成
いつものように作成する。
適当に入れる。
パラメータグループに先ほど作成したものが出てくるので、それを選ぶ。 出てこなかったときは、パラメータグループ作るときに指定したバージョンを確認する。
もうインスタンスとかテーブルとか作っちゃってたら
インスタンス作たけど、テーブルは作ってないとき
インスタンスの画面がから変更ができます。
テーブル作っちゃったとき
DBの文字コード変換機能を使えばOK。
EC2に作ったNginxにLet's Encryptを導入する
オレオレ証明からLet's Encriptに変更する
前提
yakisaba.hatenablog.jp の通りにサーバーが立っている事。
注意
EC2のパブリックDNSだと登録できないそう。
適当にドメインを取ってみて試してみる
ドメインを取得して、Route53にAレコードを追加する
- お名前.comとかでDNSを取得する。
- EC2のダッシュボードを開き、左側にあるElastic IPを選択する。
- 新しいIPの割り当てを選択して、IPを取得する。
- 作成したものを右クリックして、アドレスの割り当てを選択して、EC2インスタンスに割り当てる。
- 作成されたIPアドレスをメモしておく。
- Route53を開き、Hosted Zoneを開く。
- create hosted zoneを選択して、Domain Nameに作成したドメインをいれて、作成をする。
- 作成したゾーンを選択してgo to recordを選ぶ。
- create recordを選択して、下のように設定して作成する。
- NSレコードの内容をコピーして、取得したドメインのネームサーバーに設定する。
- nslookup www.ドメイン でIPアドレスと紐づいているかチェックする。
必要なツールをインストール
# gitのインストール $ sudo yum install git # Let's Encryptのツールをインストール $ git clone https://github.com/certbot/certbot ~/certbot $ cd ~/certbot
証明書の発行
# ドメイン名、メアドは取得したものを使う $ sudo ./certbot-auto certonly --webroot -w ドキュメントルート -d 取得したドメイン名 -m 自身のメールアドレス --debug
証明書が出来上がるので、それを /etc/nginx/conf.d/default.conf に登録する。
/etc/nginx/conf.d/default.conf
ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;
確認
nginxを再起動して接続してみて、https + http2で繋がっていればOK
継続的に取得するようにする
# 毎月1日の1時に強制的に更新する。 0 1 1 * * root /nome/ec2-user/certbot/certbot-auto renew --force-renewal && service nginx restart