はじめに Symbol ノードを運営していて、https-portal で HTTPS化している運営者の方は多いと思います。筆者もその1人です。 https-portal の導入方法は うにやさん の記事を参考にしました。 https://www.u2yasan.com/ja/content/20210...
過去記事: この記事はWordPress版から移行した当時の記録です。仕様・画面・外部サービスの状態は現在と異なる場合があります。
はじめに
Symbol ノードを運営していて、https-portal で HTTPS化している運営者の方は多いと思います。筆者もその1人です。
https-portal の導入方法はうにやさんの記事を参考にしました。
https://www.u2yasan.com/ja/content/20210323/109
この方法でHTTPS化していると、そのままではあひきさんのSymbol Node Listに情報掲載してもらうための80番ポートを掴んでいるので、そのままの設定以下の要求に対応できないのです。
各ノードのHTTP(80番ポート)のルートURLに「nodeSetting.json」を配置してください。
https://symbol-tools.com/symbolTools/view/tool/nodeList.html
この記事では 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": "your_account",
"comment": "★ノード#1★10%還元!/"
}
nginx用config作成
https-portal 配下に nginx-conf ディレクトリを作成します。この中にhttps-portalが使用する nginx の config を上書きする設定ファイル
~/https-portal$ mkdir nginx-conf
~/https-portal$ cd nginx-conf
~/https-portal$ vi symbol-node.harvest-xym.com.conf.erb
また、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 を開き、先程作成した
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://
HTTPでノードに接続できることを確認してください。
http://
HTTPSでノードに接続できることを確認してください。
https://
おまけ
想定どおり動作しない場合、environment に以下の設定を追加し、フォアグラウンドで実効することでリクエストが着弾しているか、などを確認することができます。
https-portal:
# ...
environment:
ERROR_LOG: stdout
ACCESS_LOG: stderr