アレコレ・ティプス

これ便利だな〜と思ったことなど

HAproxy BASIC 認証設定 version 2.6.7

HAproxy BASIC認証設定

(ブラウザで閲覧するユーザー向けのBASIC認証 HAproxy設定)

 

自分で書いたこちらの記事が古くなっていたので、

HAproxy で Basic 認証を使う際の パスワード文字列 エンコード - アレコレ・ティプス

改めて書きます。

 


 

主に3点 行う。

  1. パスワードを生成 エンコード
  2. ユーザー定義
  3. Backend に アクセス制限を定義

動作確認環境:

HAproxy docker コンテナ version 2.6.7

 


 

1、パスワード生成エンコード

mkpasswd コマンドが使えるLinuxマシンなどで以下コマンドを打つ。

printf "生成したいパスワードを半角英数で" | mkpasswd --stdin --method=sha-256

 

55zkY5oZnIhmM7wrJ$sRdh1DFp1zBHoyEHPwhcPSL5hBmGjqCqYAq5lDZvxkB

と sha-256 で エンコードされたハッシュが生成される。 これを以下で用いる。

2、ユーザー定義

haproxy.cfg など HAproxyで使っている設定ファイルを編集する。

"defaults"項目の定義後あたりに userlist 定義を行う。

## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist user_group1
  user   usr1	password	$5$zkY5oZnIhmM7wrJ$sRdh1DFp1zBHoyEHPwhcPSL5hBmGjqCqYAq5lDZvxkB

( 先ほどパスワードからハッシュ生成したものを上記のように "password" の後に挿入する )

ーー

3、Backend に アクセス制限を定義

ーーー

"Backend"項目 に アクセス制限を追加 例

 

haproxy.cfg など HAproxyで使っている設定ファイルを編集する。

backend gui_server
        balance roundrobin
        acl auth_usr_ok http_auth(user_group1)
        http-request    auth if !auth_usr_ok
        server          gui_service     888.88.8.88:1881 check

http_auth のところでは 定義したユーザーグループ単位で指定できる。

これで、usr1 ユーザーで 設定したパスワードで、BASIC認証の設定ができた。

 


 

昔のバージョンでは、パスワードエンコードが、DES だったかもしれないが、現在 HAproxy の BASIC認証では、SHA-256 がデフォルトのようである。

23/02/20

ーーー

Solana チェーンで NFT MINT 。 Metaplex 。candy machine

Solana チェーンで NFT MINTしたい のでメモ

 

 

まずは環境構築編として、本記事のゴールは、candy-machine コマンドが打てるようになるところまで。

 

solana

 

  • Metaplex
  • MACOS ユーザー向け
  • brew インストール済み
  • yarn インストール済み

 

目次

 

metaplex

前提知識

こちらが詳しい

https://self-development.info/solana上でnftを発行する【candy-machine】/

Candy Machineは、Solana上でNFTを発行するためのツールです。 Metaplexによって、Candy Machineは開発・公開されています また、Metaplexは、最も速く、最も安いNFTエコシステムと呼ばれています。

 

環境構築

brew install git

git version

git version 2.32.1 (Apple Git-133)

ーーー

nodejs インストール (環境確認)

node --version

v16.15.0

** nodejs が インストールされていない方は、 LTS である version 16.xx.xx をインストール

ーーーー

npm インストール

npm install -g npm

npm -v

8.12.1

(これより新しければ問題ないかも)

ーーー

yarn インストール

自分の環境では、別用途で nodejs を使用していたため、念の為 --ignore-dependencies オプションを採用

brew install yarn --ignore-dependencies

情報はこちらが詳しい

https://qiita.com/niwa1903/items/fb1d37c180d6cbc696c8

--ignore-dependenciesをつけておくと、複数nodeの依存関係を無視させることができる。

 

yarn -v

1.22.19

ーーーー

typescript と 実行ツール ts-node を グローバルにインストール

npm install -g typescript

npm install -g ts-node

ーー

ts-node -v

v10.8.1

タブ補完 されなくてもインストールされている。

ーーー

MACOS M1チップのマシンは以下コマンドも必要

brew install pkg-config cairo pango libpng jpeg giflib librsvg

brew_install_00

結構長い

ーーー

 

Metaplex のインストール

 
cd ~
(作業ディレクトリは問題のある開発環境以外は、どこでもよいかも)
 
git clone https://github.com/metaplex-foundation/metaplex.git ~/metaplex
 
インストール完了したら、
metaplex がインストールされていることが確認できる。
 
ls ~/metaplex
 

ARCHITECTURE.md DISCLAIMER.md LICENSE docs rust

CHANGELOG.md Dockerfile README.md js

 
ーーー
この配下に 依存関係をインストールして補完。
環境準備 作業としてはこれで終わりか。
 
yarn install --cwd ~/metaplex/js/
 

yarn_metaplex_js_env


ーーー
 

ここで Candy マシンのコマンドが動くか確認

 

ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts --version

 

0.0.2

 

すごいそっけない。けど動いた!

ここで candy-machine コマンドが実行できることをよく確認しておくこと。

version の番号が返ってこなければ、インストール作業のどこかでミスがある。

ーーー

続編へ

ラズパイに Go言語 をインストールする。

Raspberry pi へ Go lang をインストール

ラズパイは、armv6 の go パッケージを使うため、

そこの部分だけ公式ドキュメントの通りにいかないので、一応 備忘録。

インストール環境

Raspberry pi 3B+

まず ラズパイ にインストールする go 言語のファイルを 以下サイトで確認

https://golang.org/dl/

f:id:asuki_y:20210903134610p:plain

go top

 

ラズパイは、 ARMv6 で 調べる。

f:id:asuki_y:20210903134637p:plain

go lang package list

 

2021/9/3 の最新安定版 go1.17.linux-armv6l.tar.gz  を扱う

右クリックで ダウンロードURLをコピーしておく。

 

ラズパイ ターミナル操作

sudo rm -rf /usr/local/go

( さきほどコピーした ダウンロードURL で wget )

wget https://golang.org/dl/go1.17.linux-armv6l.tar.gz

sudo tar -C /usr/local -xzf go1.17.linux-armv6l.tar.gz

vim ~/.bashrc

90行目あたり、あたり触りのないところに追加。

< 記述内容 >

( ・・中略・・ )

#export GCC_COLORS= ***省略

# Go言語のPATH  以下 1行を追加しておく
export PATH=$PATH:/usr/local/go/bin

# some more ls aliases
( ・・省略・・ )

sources ~/.profile

これで準備完了!

動作するか確認する

go version

go version go1.17 linux/arm

この結果が帰ってくればインストール OK

 

ーーー

適切なパッケージを 選ばないと go version コマンドを使ったときに、

ーーー

go version

-bash: /usr/local/go/bin/go: バイナリファイルを実行できません: 実行形式エラー

ーーー

となる。

ラズパイにインストールするパッケージは、 armv6 のものを選ぼう。

 

 

ラズパイに NodeRED version 2 を インストールする方法 2021 年 秋 版

Raspberry pi  に NodeRED 2.0.x をインストールさせる。

https://www.i-cafe.info/wp/wp-content/uploads/2020/03/Node-RED.png

2021/9/1 現在、これまで使っていた、以下 スクリプトが 使用できなくなっていたため。

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

 

上記スクリプトでは、いろいろエラーで落ちる。

一部エラー内容は記録をとれなかった。

 

( ラズパイへの NodeRED version 2 インストール 成功に至るまでに躓いたエラー内容 )

ーーーー

$ sudo npm install -g --unsafe-perm node-red

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-linux-arm-glibc.tar.gz 
node-pre-gyp WARN Pre-built binaries not installable for bcrypt@5.0.1 and node@14.8.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp) 
node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-linux-arm-glibc.tar.gz

 

ーーーー

 

環境

Raspbian GNU/Linux 10 (buster)

Linux raspberrypi 5.10.52-v7+ #1441 SMP Tue Aug 3 18:10:09 BST 2021 armv7l GNU/Linux

nodejs 14.8.0

npm 6.14.7

いつもの準備

apt-get update

apt-get upgrade 

 

インストール方法

mkdir node_inst

cd !$

wget https://unofficial-builds.nodejs.org/download/release/v14.8.0/node-v14.8.0-linux-armv6l.tar.gz

tar xvzf ./node-v14.8.0-linux-armv6l.tar.gz

cd ./node-v14.8.0-linux-armv6l

rm CHANGELOG.md LICENSE README.md

sudo cp -R * /usr/local/

インストールされた nodejs のバージョン確認

node -v

ーーーー

sudo apt install node-pre-gyp

sudo npm install -g --unsafe-perm node-red

ーーー

サービス化

cd /etc/systemd/system/

sudo vim  ./nodered-pi.service

 

( 記載内容 )

[Unit]
Description=node-red-pi
After=udev.target
After=syslog.target
After=network.target
After=remote-fs.target
[Service]
ExecStartPre=/bin/sleep 3
Type=simple
## サービス起動 フルパス 絶対パスで。
ExecStart=/usr/local/lib/node_modules/node-red/bin/node-red-pi

Restart=always
RestartSec=4
User=pi
Group=pi

##作業ディレクトリを定義 ( ここ重要 )
WorkingDirectory=/home/pi/.node-red/
[Install]
WantedBy=multi-user.target

 

ーーーー

sudo systemctl  daemon-reload 

サービス 停止状態であることを確認

sudo systemctl  status nodered-pi.service

NodeRED デーモン起動

sudo systemctl  start nodered-pi.service 

sudo systemctl  enable nodered-pi.service 

起動状態に異常がないかを確認

journalctl -u nodered-pi.service -f

問題なければ ctrl + c で リアルタイムログの監視を停止

ーーー

これで インストールでき、NodeRED 2.0.5 が 正常に起動できた。2021/9/1 

 

便利だったスクリプトが使えなくなったのが痛いですね。

そのうちあのスクリプトもバージョンアップすれば、このようなやり方をせずとも、すんなり、実行できればいいですね。

 

参考記事に感謝🙏

Raspberry Piにnode.jsをインストトールする方法 – あきらのぶろぐ

iOS14 で クラウドを使わない 電話帳 連絡先 を移行・復元する方法

 なんとかできたので、記録。
連絡先データだけ復旧したい場合とか、クラウドを一切使いたくない場合は、便利かも。
 
キーワード
vCard , vcf , iOS , iPhone ,  iOS14 , 連絡先 , 電話帳 , MyContactsBackup , クラウド , クラウド不使用 , アドレス帳 , 移行 , バックアップ , 復元
 
 

できた環境

復元先 iOS 14.6  /  iPhoneSE ( 2020 )

(かつても使ったことがあるアプリなので、おそらく iOS14.6 以前のものでも可能かも)

ーーー

( 復元元は、iPhoneSE (初代) だったが vcfファイル vCard データがエクスポートできればおそらくどれでも可 )

macOS Catalina 10.15.7

chrome ブラウザ 2021/8/12 時点最新 (バージョン: 92.0.4515.131)

ーーー

扱うデータ

vCard 、 vcf データ。

使うアプリ

MyContactsBackup Pro (無償バージョンでも可能かもしれない)

!注意点!

促されるが 不要なので、このアプリからメール送信機能を一切使わない。


連絡帳データのバックアップ

まずは、バックアップ元 iPhoneを操作して連絡先データをバックアップする。

  • MyContactsBackupPro をインストール。
  • アプリを開く。
  • 緑色の " Backup " ボタンを押して 連絡先データをバックアップ

 

以上でバックアップ完了。

バックアップした連絡帳データの取得

  • 右下 歯車のマークを押して、Settings 画面へ。
  • Type は、 vCard であることを確認。
  • WI-FI MANAGEMENT の Server を ON
  • URL が表示される。 192.168.xxx.xxx:8080 など
    • ( クラウドを使わないローカルエリアアクセスである )
  • 手元の WI-FI 環境の Macbook のブラウザからその URL へ アクセス

  • Wi-Fi Download を クリック

 

  • vcf ファイル = vCard データ = 連絡帳データをダウンロードし、取得。
 
このデータから復旧する。

以上で、バックアップしたデータ、vcfファイル ( vCard データ ) の取得が完了。


新しい端末で、vCardデータから連絡帳を復元

新しい iPhone に MyContactsBackup Pro をインストール。

新しい iPhoneMacBook を つなげる。

 
Finder で 接続状態を確認
 

場所:自分のiPhone名 : "ファイル" タブをクリック
すると、インストールされたアプリ一覧が出るので、
 

 
MyContactsBackupPro が  リストに上がっていることを確認
 

 

ここで、先ほど取得した vcf ファイルを MyContactsBackupPro の配下へドラッグアンドドロップ

 
以下のようになる。
 

 

 
vcfデータのコピーが完了したら、 新しい iPhoneを操作。
( ケーブル接続したままでOK )
 
アプリ : MyContactsBackupPro を開く。
 
右下 歯車マークをタップして、Settings 画面へ。

( この際に決して、緑のバックアップボタンを押さない )

 

 
Type : vCard であることを確認

 
 
緑色のボタン " In App vCard Restore " をタップ! これは復元ボタン。

 

 
そうすると、さきほどドラッグアンドドロップした vcf データ の存在を確認できるので、そこをタップ。
 
3つ選択肢が出るので "Restore" を選択
 

 

 

 
すると、復元先の指定として、" 連絡先 " アプリが選択できるので、" 連絡先 " を選択。

 

 
すると、自動で 「 連絡先 」 アプリが開き、、
 
「 xxx件すべての連絡先を追加 」 と出るので、右上の「 保存 」 文字をタップ
 

 
これにて完了!
何年も昔から使っているこのアプリがまだ使えていてよかった。
 

HAproxy  BASIC認証 REST API 用 と ブラウザ GUI 認証で 処理を切り分ける

HAproxy の BASIC 認証で、REST API 用 に適した処理の 記述 と ブラウザから ユーザー パスワードを手入力させるBASIC 認証では、適した書き方が違うようなので、処理を書き分けた。
 

 
 

( 動作環境メモ )
 
Ubuntu 18.04.4 LTS
HA-Proxy version 1.8.8-1ubuntu0.11 2020/06/22
 

 
 
 
## ( 上段 global のコンフィグ等は 略します。 )
## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist 管理者_user
  user   管理者     password   ハッシュ化したパスワード
userlist panpy_user
  user   一般usr   insecure-password   パスワード平文    
 
# ---------------------------------------------------------------
# フロントエンドを定義
# port : 80  で待ち受け
# ---------------------------------------------------------------
frontend http-in
 
        bind    *:80
 
        # forntend 内に BASIC認証を記述しない。
        # backendの定義で記述し、BASIC認証の処理を用途で分ける。
 
        # DashBoard GUI
        acl url_gui        path_beg    /gui
        use_backend        gui_servers    if    url_gui
 
        # API SERVER 
        acl url_api        path_beg    /api
        use_backend        api_servers    if    url_api
 
        default_backend        get_away
 
# -------------------------------------------
# バックエンドを定義
# -------------------------------------------
backend gui_servers
 
#       GUI用のBASIC認証処理
        acl auth_一般_ok http_auth(panpy_user)
        http-request     auth if !auth_一般_ok
        server        gui-app        127.0.0.1:1880 check
 
backend api_servers
 
#       REST API用のBASIC認証処理
        acl auth_管理者_ok http_auth(管理者_user)
        http-request    deny unless auth_管理者_ok
        server        api-svr        127.0.0.1:1881 check
 
# -------------------------------------------
# Good-bye
# -------------------------------------------
backend get_away
    http-request deny
 
# -----------------------------------------------
# 上記、漢字のところは適宜 半角英数に修正すると使えるかと思います。
 
 
ーーー
 
ポイントは、
 
・フロントエンド定義のところで BASIC認証を記述しない。
・バックエンド定義のところで、BASIC認証を記述する。
 
こうすることで、 それぞれに意図したBASIC認証が動作してくれるようになりました。
 
HAproxy は、フロントに立たせると、 NodeRED のセキュリティを高めてくれたり相性いいと思うので、どんどん積極的に組み合わせて 使っていきたい!
 
 

 
参考:
 
 

iOS13 に アップデートしたら、無駄通信が異常に増え、通信制限くらう 問題

iOS12 から iOS13 にアップデートしたら、しばらくして通信制限をくらいました。

アプリで通信状況を調べると、明らかに、異常に無駄な通信が増えました。

結構、問題解析が地道で大変だったので、誰かの助けになれれば、、

ここに共有します。

nsdev.jp/img/iOS13.png

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

( 環境メモ )

・ iOS12.x.x から iOS13.1あたりにアップデートして 生じた問題

・iPhone SE2

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

OSが最新でも改善しない。。

 

どのアプリだ?

 

本気になってiOS13端末内通信状況と、ひとつひとつアプリをwifi以外通信禁止設定にして調べたところ、 iOS13 の音楽アプリ が勝手に何かをダウンロードしてしまうような挙動を観測。

 

iOS 13 の音楽アプリの通信に制限をかけたところ、問題は改善されました。

通信は、3G 4G 回線を使わないようにさせて、wifi のみに。

 

> 設定アプリ起動

> "設定"

> "ミュージック"

> "モバイルデータ通信"    <= これをOFFに!

 

-> 無駄な通信が大幅に改善しました。

 

自分は、よく楽曲を単体で購入するので、そのバックグラウンドダウンロードが iOS13から 勝手に多く働くようになってしまったのだろうか。という 気がする。

 

ギガ残量 通信量チェッカー

ギガ残量 通信量チェッカー

  • Rigato, inc.
  • ユーティリティ
  • 無料

apps.apple.com

 

このアプリは 見やすいし、めちゃくちゃ助かりました。

用途は違うとは思いますが、また、通信過多な問題が出たらこれで解析しようと思います☺️