【ICP】UbuntuでInternet Identityを動かす方法

インターネットコンピューターの魅力の一つInternet Identityをローカルで動かしたい人向けの記事です。

実際にUbuntu 20.04を使ってローカル環境でInternet Identityを動かしてみたので、本記事では、その手順をまとめてみました。

なお、dfxは0.8.4、0.9.3の両方で動作確認しております。

Internet Identityはインターネットコンピューターで無料で使用できる認証プロバイダーです。アプリを作るときに、アカウントを簡単に識別できるようになるので、興味のある方はご覧ください。

環境の確認

前提となる環境を最初に確認します。

  • ubuntu 20.04
  • dfx 0.8.4 or 0.9.3

UbuntuでInternet Identityを動かす方法

最初に全体像を説明します。Internet IdentityがRustで書かれていて、dfxをインストールしただけでは動かすことができません。

  • Rustのインストール・設定
  • Rustのライブラリ(クレート)を使うためのパッケージ準備

そこでRustをまずインストールします。続いてic-cdk-optimizerというRustのライブラリをビルドするのですが、まだ環境設定が足りていないのでビルドするための追加パッケージをUbuntuにインストールしていきます。

そして、Rust周りの設定が完了したら、続いて起動方法を紹介します。

  • ローカルICへのデプロイ
  • フロントエンドの起動

全体像は以上です。割とまっさらな状態からinternet Identitiyをうごかしているので事前準備は不要な方は適宜手順を省略ください。

それではみていきましょう。

Rustのインストール・設定

汎用ビルドツールインストール

Rustを使うためにgccを追加します。すでにgccがある方は飛ばしてください。

sudo apt update
sudo apt install build-essential

Rustインストール

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

インストール確認
source ~/.profile
rustc --version

WebAssemblyにコンパイルするための設定

インターネットコンピューターではWebAssemblyを動かすので、WebAssemblyにコンパイルできるようにしておきます。

rustup target add wasm32-unknown-unknown

設定済みかどうかはこれで確認できます。

rustup target list

installedとなっていればOKです。

ic-cdk-optimizerを使うためのパッケージ準備

Internet Identityはic-cdk-optimizerというライブラリ(crate)を使用するのですが、このライブラリを使用するためにさらに追加のインストールとしてlibssl-devとcmakeをいれていきます。

libssl-devのインストール

OpenSSLの一部開発機能を使います。

sudo apt install libssl-dev

cmakeをインストール

cd /tmp
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0.tar.gz
tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0
sudo ./bootstrap
sudo make
cmake --version

Internet Idenitityを動かす手順

Internet Idenitityのクローン

git clone https://github.com/dfinity/internet-identity.git

ローカルICネットの開始

cd internet-identity
dfx start

Internet Identityの展開

II_FETCH_ROOT_KEY=1 dfx deploy --no-wallet --argument '(null)'

ic-cdk-optimizeのエラーが発生する場合の対処法

deployコマンド実行時に、次のようなエラーメッセージが表示されているかもしれません。

ic-cdk-optimizer version 0.3.1 is needed, please run the following command:

エラーメッセージで一緒にでてきているcargoコマンドを実行して指定されたバージョンを入れます。

cargo install ic-cdk-optimizer --version 0.3.1

バージョンは今後は変わる可能性があるので、表示された指示に従います。なお、「ic-cdk-optimizer version」以外がでるなら、事前準備の手順をご確認ください。

Webページへのアクセス確認

それでは展開したInternet Identityにアクセスしてみます。開発環境では画面上部にメッセージが表示されます。

ローカルICのInternet Identityに接続

まずはキャニスターのIDを確認します。

dfx canister id internet_identity

取得したIDを使って次のURLにアクセスします。

http://キャニスターID.localhost:8000/

もしくは、

http://localhost:8000/?canisterId=キャニスターID

でアクセス可能です。

フロントだけnpmで動かして確認

キャニスターIDを使ってアクセスする方法では、環境をクリーンにしたときにIDが変更されてしまうこともあるので、npmでフロントだけ立ち上げるのもありです。

CANISTER_ID=$(dfx canister id internet_identity) npm start

デフォルトのポートで立ち上がるなら

http://localhost:8080/

でアクセス可能です。

Internet Identityの使い方

本番環境での使い方ですが、ローカル環境でも同じです。

>>【Internet Identity】 Internet Computerのアカウントを作ろう

おわりに

ローカル環境でInternet Identityを動かす方法は以上です。インターネットコンピューターの魅力のひとつはInternet Identityではないでしょうか。だれでも簡単に生体認証などデバイスを元にした認証が可能になります。

今後もInternet Identityを使ったアプリが増えていくことでしょう。

では。