ハーベスト用ノードURL

symbol-node.harvest-xym.com

https-portal 利用者向け、Symbol Node List 対応方法

symbol tech Tech

はじめに

Symbol ノードを運営していて、https-portal で HTTPS化している運営者の方は多いと思います。筆者もその1人です。

https-portal の導入方法はうにやさんの記事を参考にしました。

この方法でHTTPS化していると、そのままではあひきさんのSymbol Node Listに情報掲載してもらうための80番ポートを掴んでいるので、そのままの設定以下の要求に対応できないのです。

各ノードのHTTP(80番ポート)のルートURLに「nodeSetting.json」を配置してください。

この記事では https-portal を起動しつつ、80番ポートの /nodeSetting.json へのリクエストを受け付ける設定を紹介します。

試行錯誤しながらたどり着いた方法ですが、当ノード3機ともにこの設定で動作しております。

この記事では「symbol-node.harvest-xym.com」の設定をサンプルとして記載しております。FQDNは適宜ご自身のものに変更してください。

nodeSetting.json 配置

以下のように https-portal 配下に nodeSettings.json を作成します。

~/https-portal$ ls
docker-compose.yml  nginx-conf  nodeSetting.json

nodeSetting.json の中身はこんな感じです。仕様については前述のあひきさんのサイトで確認してください。

~/https-portal$ cat nodeSetting.json
{
        "limitHarvesterCount": "30",
        "twitterAccount": "broccoin",
        "comment": "★ノード#1★10%還元!https://harvest-xym.com/"
}

nginx用config作成

https-portal 配下に nginx-conf ディレクトリを作成します。この中にhttps-portalが使用する nginx の config を上書きする設定ファイル <FQDN>.conf.erb を配置するためです。

~/https-portal$ mkdir nginx-conf
~/https-portal$ cd nginx-conf
~/https-portal$ vi symbol-node.harvest-xym.com.conf.erb

<FQDN>.conf.erb の中身はこんな感じです。https-portal が使用するデフォルトの設定にnodeSetting.json のリクエストのalias設定を追加しています。(12~14行目)

また、nginxがファイルの更新を検知できずにキャッシュをレスポンスしてしまうため、sendfile off を追加します。(16行目)
これにより、nodeSetting.json を変更するだけですぐに反映されるようになります。

server {
    listen       80;
    <% if ENV['LISTEN_IPV6'] && ENV['LISTEN_IPV6'].downcase == 'true' %>
    listen       [::]:80;
    <% end %>
    server_name  <%= domain.name %>;

    location / {
        return    301 https://$server_name$request_uri;
    }

    location /nodeSetting.json {
        alias /var/www/vhosts/symbol-node.harvest-xym.com/nodeSetting.json;
    }

    sendfile off;

    <%= acme_challenge_location %>
}

docker-compose.yml 設定変更

https-portal の docker-compose.yml を開き、先程作成した <FQDN>.conf.erb と nodeSetting.json のマウント設定を追加します。(3行目以降)

        volumes:
            - 'https-portal-data:/var/lib/https-portal'
            - './nginx-conf/symbol-node.harvest-xym.com.conf.erb:/var/lib/nginx-conf/symbol-node.harvest-xym.com.conf.erb:ro'
            - './nodeSetting.json:/var/www/vhosts/symbol-node.harvest-xym.com/nodeSetting.json'

ここまでできたら、https-portal を再起動してください。

起動できない場合は 80番ポートを他のプロセスが使用していないか確認してください。

sudo lsof -i :80

私の場合、試行錯誤した残骸のapacheやnginxがポートを掴んでいたために起動失敗しておりました。

確認

一通りの設定が完了したら nodeSetting.json に外部からアクセスすることを確認してください。

http://<FQDN>/nodeSetting.json

HTTPでノードに接続できることを確認してください。

http://<FQDN>:3000/node/health

HTTPSでノードに接続できることを確認してください。

https://<FQDN>:<https-port>/node/health

おまけ

想定どおり動作しない場合、environment に以下の設定を追加し、フォアグラウンドで実効することでリクエストが着弾しているか、などを確認することができます。

https-portal:
  # ...
  environment:
    ERROR_LOG: stdout
    ACCESS_LOG: stderr
タイトルとURLをコピーしました