HAproxy BASIC 認証設定 version 2.6.7
HAproxy BASIC認証設定
(ブラウザで閲覧するユーザー向けのBASIC認証 HAproxy設定)
自分で書いたこちらの記事が古くなっていたので、
HAproxy で Basic 認証を使う際の パスワード文字列 エンコード - アレコレ・ティプス
改めて書きます。
主に3点 行う。
- パスワードを生成 エンコード
- ユーザー定義
- Backend に アクセス制限を定義
動作確認環境:
HAproxy docker コンテナ version 2.6.7
1、パスワード生成エンコード
mkpasswd コマンドが使えるLinuxマシンなどで以下コマンドを打つ。
printf "生成したいパスワードを半角英数で" | mkpasswd --stdin --method=sha-256
zkY5oZnIhmM7wrJ$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 コマンドが打てるようになるところまで。
目次
- 前提知識
- 環境構築
- nodejs インストール (環境確認)
- npm インストール
- yarn インストール
- typescript と 実行ツール ts-node を グローバルにインストール
- Metaplex のインストール
- ここで Candy マシンのコマンドが動くか確認
前提知識
こちらが詳しい
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
結構長い
ーーー
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/
ーーー
ここで 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 言語のファイルを 以下サイトで確認
ラズパイは、 ARMv6 で 調べる。
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 をインストールさせる。
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
便利だったスクリプトが使えなくなったのが痛いですね。
そのうちあのスクリプトもバージョンアップすれば、このようなやり方をせずとも、すんなり、実行できればいいですね。
参考記事に感謝🙏
iOS14 で クラウドを使わない 電話帳 連絡先 を移行・復元する方法
できた環境
復元先 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 " ボタンを押して 連絡先データをバックアップ
以上でバックアップ完了。
バックアップした連絡帳データの取得
- Wi-Fi Download を クリック
- vcf ファイル = vCard データ = 連絡帳データをダウンロードし、取得。
以上で、バックアップしたデータ、vcfファイル ( vCard データ ) の取得が完了。
新しい端末で、vCardデータから連絡帳を復元
新しい iPhone に MyContactsBackup Pro をインストール。
HAproxy BASIC認証 REST API 用 と ブラウザ GUI 認証で 処理を切り分ける
## ( 上段 global のコンフィグ等は 略します。 )
## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist 管理者_user
user 管理者 password ハッシュ化したパスワード
userlist panpy_user
user 一般usr insecure-password パスワード平文
# ---------------------------------------------------------------
# フロントエンドを定義
# port : 80 で待ち受け
# ---------------------------------------------------------------
frontend http-in
bind *:80
# forntend 内に BASIC認証を記述しない。
# backendの定義で記述し、BASIC認証の処理を用途で分ける。
# API SERVER
default_backend get_away
# -------------------------------------------
# バックエンドを定義
# -------------------------------------------
backend gui_servers
acl auth_一般_ok http_auth(panpy_user)
http-request auth if !auth_一般_ok
backend api_servers
acl auth_管理者_ok http_auth(管理者_user)
http-request deny unless auth_管理者_ok
# -------------------------------------------
# Good-bye
# -------------------------------------------
backend get_away
http-request deny
# -----------------------------------------------
# 上記、漢字のところは適宜 半角英数に修正すると使えるかと思います。
|
・フロントエンド定義のところで BASIC認証を記述しない。
・バックエンド定義のところで、BASIC認証を記述する。
|
iOS13 に アップデートしたら、無駄通信が異常に増え、通信制限くらう 問題
iOS12 から iOS13 にアップデートしたら、しばらくして通信制限をくらいました。
アプリで通信状況を調べると、明らかに、異常に無駄な通信が増えました。
結構、問題解析が地道で大変だったので、誰かの助けになれれば、、
ここに共有します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
( 環境メモ )
・ iOS12.x.x から iOS13.1あたりにアップデートして 生じた問題
・iPhone SE2
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
OSが最新でも改善しない。。
どのアプリだ?
本気になってiOS13端末内通信状況と、ひとつひとつアプリをwifi以外通信禁止設定にして調べたところ、 iOS13 の音楽アプリ が勝手に何かをダウンロードしてしまうような挙動を観測。
iOS 13 の音楽アプリの通信に制限をかけたところ、問題は改善されました。
通信は、3G 4G 回線を使わないようにさせて、wifi のみに。
> 設定アプリ起動
> "設定"
> "ミュージック"
> "モバイルデータ通信" <= これをOFFに!
-> 無駄な通信が大幅に改善しました。
自分は、よく楽曲を単体で購入するので、そのバックグラウンドダウンロードが iOS13から 勝手に多く働くようになってしまったのだろうか。という 気がする。
このアプリは 見やすいし、めちゃくちゃ助かりました。
用途は違うとは思いますが、また、通信過多な問題が出たらこれで解析しようと思います☺️