Docker のインストール
Docker がまだインストールされていない場合は、以下の手順に従ってインストールしてください。
GPG キーの追加
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
リポジトリを追加します。
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker のインストールコマンドの実行
以下のコマンドを実行して Docker をインストールします。
docker-compose は使用する予定はありませんが、念のためインストールしておきます。
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
Docker を使用するユーザーを docker
グループに追加します。
sudo usermod -aG docker $USER
シェルを再起動して変更を反映させます。
exec $SHELL -l
explorer 用ディレクトリの作成
任意の場所に explorer 用のディレクトリを作成します。
さらに設定ファイルを格納する workdir
ディレクトリを作成します。
sudo mkdir -p /opt/explorer/workdir
sudo chown -R $(id -u):$(id -g) /opt/explorer
cd /opt/explorer
設定ファイルの作成
workdir
ディレクトリに、default.json
を作成します。
vi workdir/default.json
メインネット
{
"endpoints": {
"marketData": "https://min-api.cryptocompare.com/",
"statisticsService": "https://symbol.services"
},
"networkConfig": {
"namespaceName": "symbol.xym",
"divisibility": "6",
"namespaceId": "E74B99BA41F4AFEE"
},
"footer": {
"link": [
{
"href": "https://github.com/symbol",
"text": "GitHub",
"icon": "IconGithub"
},
{
"href": "https://discord.com/invite/xymcity",
"text": "Discord",
"icon": "IconDiscord"
},
{
"href": "https://twitter.com/thesymbolchain",
"text": "Twitter",
"icon": "IconTwitter"
}
]
},
"timezone": "Local"
}
テストネット
{
"endpoints": {
"marketData": "https://min-api.cryptocompare.com/",
"statisticsService": "https://testnet.symbol.services"
},
"networkConfig": {
"namespaceName": "symbol.xym",
"divisibility": "6",
"namespaceId": "E74B99BA41F4AFEE"
},
"footer": {
"link": [
{
"href": "https://github.com/symbol",
"text": "GitHub",
"icon": "IconGithub"
},
{
"href": "https://discord.com/invite/xymcity",
"text": "Discord",
"icon": "IconDiscord"
},
{
"href": "https://twitter.com/thesymbolchain",
"text": "Twitter",
"icon": "IconTwitter"
},
{
"href": "https://testnet.symbol.tools/",
"text": "Faucet",
"icon": "IconCurrencyUsd"
}
]
},
"timezone": "Local"
}
statisticsService
の URL は、デフォルトでは Symbol の公式サービスを指していますが、必要に応じて自分で用意した statistics-service の URL に変更することも可能です。これにより、独自の統計データを提供するサービスを利用できます。
起動シェル作成
workdir
ディレクトリに run.sh
を作成します。
vi workdir/run.sh
#!/bin/bash
set -e
echo "Starting explorer $1"
cp default.json /app/src/config/default.json
cd /app
npm start
compose.yml の作成
compose.yml
を作成します。
vi compose.yml
services:
symbol-explorer:
container_name: symbol-explorer
restart: always
image: symbolplatform/symbol-explorer:1.3.0-amd64
working_dir: /workdir
entrypoint: ash -c "/bin/ash /workdir/run.sh explorer"
volumes:
- ./workdir:/workdir:ro
ports:
- "4100:4000"
サービス化
/etc/systemd/system
に explorer.service
ファイルを作成します。
sudo vi /etc/systemd/system/explorer.service
[Unit]
Description=Symbol Explorer
Requires=network.target
[Service]
Type=idle
ExecStart=/usr/bin/docker compose up
ExecStopPost=/usr/bin/docker compose stop
TimeoutStopSec=300
User=<実行ユーザー名>
Group=<実行グループ名>
WorkingDirectory=/opt/explorer
StandardOutput=journal
StandardError=journal
SuccessExitStatus=130
[Install]
WantedBy=multi-user.target
User
と Group
には、サービスを実行するユーザー名とグループ名を設定してください。
WorkingDirectory
には、作成した explorer 用ディレクトリのパスを指定してください。
Systemd に変更を適用して、サービスを起動します。
sudo systemctl daemon-reload
sudo systemctl enable explorer
sudo systemctl start explorer
なお、以下のコマンドでサービスを停止します。
sudo systemctl stop explorer
動作確認
http://localhost:4100
をブラウザで開き、Symbol Explorer が正しく表示されることを確認してください。
ログの参照
ログはジャーナルに記録されているため、-f
オプションを使用してリアルタイムで確認できます。
以下のコマンドを実行すると、explorer サービスのログをリアルタイムで参照できます。
sudo journalctl -f -o cat -u explorer