- 投稿日:
GitHub Pagesにドメインを紐付ける
# ルートドメイン, cnameだとメールが届かなくなるのでaliasを使う
alias @ example-user.github.io.
# サブドメイン
cname sub example-user.github.io.
メールサーバーは分けたい
メールサーバーがさくらインターネットの場合はこんな感じで行ける
mx xxx.xxx.xxx.xxx. 10
txt xxx.xxx.xxx.xxx. v=spf1 a:wwwXXXX.sakura.ne.jp mx ~all
a mail xxx.xxx.xxx.xxx
Let’s EncryptのDNS-01チャレンジの設定方法
- サブドメインのケースで書いてる
- ワイルドカード証明書の設定も確かできたはずだが、今ん所使える環境がないので書いてない
- @lycolia/value-domain-dns-cert-registerで自動更新できる
a sub xxx.xxx.xxx.xxx txt _acme-challenge.sub XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- 投稿日:
パターンを思い付く都度に更新される予定。
yyyy-MM-dd HH-mm-ssをyyyy-m-dに変換
s/(\d{4})-0?(\d{1,2})-0?(\d{1,2}).+/$1-$2-$3/
3桁区切りカンマ
s/(\d)(?=(\d{3})+(?!\d))/$1,/g
直後に\d{4}でなく、\d{3}のパターンのある\dをキャプチャし、カンマを付与
ネストプロパティの2段目(bar)以降を配列に置換
s/(?<=\$request->.+?)->((?<!\$request->)(?<=->)([a-z_]+))+/['$2']/gi
- まず
(?<=\$request->.+?)
はキャプチャされず、この次に->
があるのが前提、->は削除するので先読み・後読み・キャプチャはしない - 次に式などで文章が両辺にあることを考慮して、文字列内に
\$request->
が再度含まれないことを(?<!\$request->)
として条件にする- これを入れてないと一行中の一文と解釈されるので、別の文と解釈させるため
- 次にプロパティ名の前には
->
が来るので、それを(?<=->)
として条件付けする - 最後に
([a-z_]+)
でプロパティ名であろうものを指定する - 2-4の繰り返し(ルートにある2個目のカッコ)に対して置換を掛けることでプロパティ名を配列に置換できる
- 但し1で指定している
->
単体は繰り返し対象外なのに繰り返し適用されているが、この理由はよくわかってない- 恐らく単純に
(?<=\$request->.+?)
の後ろにある->
が全部消えている?
- 恐らく単純に
// source text
$request->foo
$request->foo;
$request->foo->bar;
$request->foo['bar'];
$request->foo->bar->fb->fBfb;
$arr = [
'bar' => $request->foo->bar
];
if ($request->foo->bar->fb= $request->foo->bar->fb) {
$request->foo->bar->fb = $request->foo->bar->fb;
}
// replaced text
$request->foo
$request->foo;
$request->foo['bar'];
$request->foo['bar'];
$request->foo['bar']['fb']['fBfb'];
$arr = [
'bar' => $request->foo['bar']
];
if ($request->foo['bar']['fb']= $request->foo['bar']['fb']) {
$request->foo['bar']['fb'] = $request->foo['bar']['fb'];
}
但しメソッドは対象外にしたい場合
s/(?<=\$request->.+?)->((?<!\$request->)(?<=->(?![a-z_]+\(\)))([a-z_]+))+/['$2']/gi
->
の後に来るメソッド構文を除外するために、(?![a-z_]+())
を追加(?<=->(?![a-z_]+()))
とすることで->
の後に来る(?![a-z_]+())
を除外しつつ、->
の後に来る([a-z_]+)
をキャプチャできる
// source text
$request->foo
$request->foo;
$request->foo->bar;
$request->foo['bar'];
$request->foo->fooBar();
$request->foo->bar->fooBar();
$arr = [
'bar' => $request->foo->bar
];
if ($request->foo->bar->fb= $request->foo->bar->fb) {
$request->foo->bar->fb = $request->foo->bar->fb;
}
// replaced text
$request->foo
$request->foo;
$request->foo['bar'];
$request->foo['bar'];
$request->foo->fooBar();
$request->foo['bar']->fooBar();
$arr = [
'bar' => $request->foo['bar']
];
if ($request->foo['bar']['fb']= $request->foo['bar']['fb']) {
$request->foo['bar']['fb'] = $request->foo['bar']['fb'];
}
参考
- 投稿日:
WindowsからのRDP接続を前提として主にSSDブート、リモート環境構築、Let's Encrypt、LAMP、Nodeの環境構築を行う
🌏 環境
Windows側の環境は省略
環境 | バージョン |
---|---|
Raspbian | 2020-05-27-raspios-buster-arm64 |
acme.sh | 2.8.7 |
PHP | 7.3.19-1 |
MariaDB | 10.3.23 |
phpMyAdmin | 5.0.2 |
Node.js | 10.21.0 |
npm | 5.8.0 |
Yarn | 1.22.4 |
📜 Raspberry Pi 4をUSB SSDからブートする
まずはここから
📞 リモート環境の構築
本体操作によるセットアップ
Headlessでできるならよしなにしてもいい気はする
- ラズパイにモニタ、キーボード、電源の通ったUSB-Cケーブルを接続
- 数分待つとセットアップウィザードが出てくるので適当に進める
- この途中でWiFiルーターに繋がるように設定しておく
- セットアップウィザードが終わったらWinKeyでメニューを出し設定> Raspberry Piの設定でSSHとVNCを有効
- シャットダウンする
- 電源USB以外を全部抜く
パッケージ情報の更新
sudo apt-get update
XRDPのインストール
Windows10からのRDP接続で現状操作不能だが一応書いておく
sudo apt-get install xrdp
- Windows 10のリモートデスクトップ接続から接続確認
SSHD設定
待受ポートの変更と認証方式の変更
待受ポートの変更と外部接続
sudo nano /etc/ssh/sshd_config
Port 22
を適当なポートに変更
認証方式の変更
- RLoginの機能で認証キーを生成
sudo nano /etc/ssh/sshd_config
で以下の設定に変更
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
~/.ssh/authorized_keys
を作る
mkdir ~/.ssh/
nano ~/.ssh/authorized_keys
- 公開鍵をコピーして
~/.ssh/authorized_keys
の一行目に貼り付ける sudo /etc/init.d/ssh restart
でSSHDを再起動- RLoginから再接続できたらOK
AndroidからSSH接続
- RLoginから秘密鍵を吐く
- JuiceSSHで秘密鍵を読む
- 終わり
Uncomplicated Firewallのインストールと設定
sudo apt install ufw
systemctl start ufw
sudo ufw enable
でFirewallを有効化SSHの穴をあける
sudo ufw allow SSHのポート番号
VNSの穴をあける
WindowsRDPからラズパイに接続
蹴られるので
cat /var/log/ufw.log
でログを見る蹴られている
DPT
が3389
だったのでsudo ufw allow 3389
- help.ubuntu.comによると
SPT
がSource Port、DPT
がDestination Portということらしい
- help.ubuntu.comによると
sudo ufw status numbered
で設定内容を確認SSHとRDPの接続確認
🔐 Let's Encrypt! DDNS Challenge
💡 LAMP環境構築
MariaDB, Apache, PHPのインストール
この環境でのApacheはphpMyAdminを動かすためだけに使用(外部公開しない)
sudo apt install -y mariadb-server apache2 php php-mysql libapache2-mod-php
MariaDBの設定
外部接続しないケース
sudo mysql_secure_installation
sudo mysql
CREATE USER 'id'@'localhost' IDENTIFIED BY 'pw';
GRANT ALL PRIVILEGES ON *.* TO 'id'@'localhost' WITH GRANT OPTION;
外部接続するケース
sudo mysql_secure_installation
sudo mysql
CREATE USER 'id'@'%' IDENTIFIED BY 'pw';
GRANT ALL PRIVILEGES ON *.* TO 'id'@'%' WITH GRANT OPTION;
quit
sudo nano /etc/mysql/my.cnf
で最終行に以下を追加
[mysqld]
skip-networking=0
skip-bind-address
Apacheの設定
sudo nano /etc/apache2/apache2.conf
で既存の設定をコメントアウトして適当にルートを追加
<Directory /home/pi/Public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
sudo nano /etc/apache2/sites-available/000-default.conf
も同様に変更
Apacheを動かすユーザーの変更
sudo nano /etc/apache2/envvars
export APACHE_RUN_USER=www-data
をexport APACHE_RUN_USER=pi
に変えるsudo /etc/init.d/apache2 reload
でここまで反映
phpMyAdminのインストール
何故かaptでインストールできなくなってるので手動インストール。Windowsマシンからブラウザを利用して設定する
- https://www.phpmyadmin.net/ からphpMyAdminをダウンロード
- Apacheの公開ディレクトリに置く
sudo ufw allow 80
sudo ufw reload
http://192.168.xxx.xxx/phpmyadmin/setup
へアクセス- 適当に設定し、ダウンロードボタンを押すと設定ファイルが落ちてくるのでphpmyadminのルートに置く
http://192.168.xxx.xxx/phpmyadmin/setup
へアクセスしエラーになることを確認http://192.168.xxx.xxx/phpmyadmin
へアクセスし、MariaDBのIDPWでログインできることを確認- この環境では80番ポートは外部公開してないので問題ないが、外部公開する場合は.htaccessをおいてローカル以外のアクセスを蹴ると良い
📈 Node.jsのインストール
sudo apt install -y nodejs npm
sudo npm i -g n yarn
🎈 おまけ
- Gitのインストール
sudo apt install -y git
で2.20.1が入ることを確認(微妙に古い)
- composerのインストール
sudo apt install -y composer
で1.8.4が入ることを確認(かなり古い)
- 投稿日:
まずこのマザーはチップセットの上にM2スロットがあり、明らかにヤバそうです。実際ヤバいです。
なので、このマザーでM2SSDをなるべくお金をかけずに冷やせないかというのを試してみたのでそのレポート。
結果的には当たり前ですがチップセットから引き離せば冷えます。
熱源 on SSD
一枚目のASUSと書かれた板はチップセットのヒートシンクです。そしてその上にM2スロットがあります。
正直この配置はだめでしょーって買う前から思ってました。そしてやっぱりだめでした。
改善のために用意したもの
玄人志向のM.2(Type.M)→PCI-Express x4 変換基板を手配しました。
こいつは下手なファンステーやケースファンより安い上、チップセットから物理的に隔離できるため一番現実的かなというところですね。
実際に装着してみるとこんな感じになりました。なんか行けそうな気がしますね。
温度比較
チップセット上
アイドル51度、CrystalDiskMark中の最大温度64度。
およそヒートシンクが付いているとは思えない温度です。
拡張カード上
アイドル31度、CrystalDiskMark中の最大温度48度。
びっくりするほど温度下がりましたし、至って普通という感じの温度ですね。
この状態なら普通に運用できそうです。やはりチップセットの上にNVMeSSD乗せるのは良くなさそうです。
もしチップセットの上にNVMeSSD乗せるとしたらこれくらいはやる必要がありそうな気がしますね...。
- 投稿日:
AMD SocketAM4 A320 チップセットマザー、ASUS PRIME A320I-Kを使ってみての感想です。
M2SSDが認識不能になる
このマザーは M2 スロットの真下にチップセットがあるという構造上、M2 が熱を持ちやすい特徴があり、そのためか起動ドライブにしていると M2SSD が認識不能になるケースが多々有りました。ヒートシンクなしだと運用不能なレベルだと思います。ヒートシンクがあっても冷却していないとすぐ止まります。この状態になっていると火傷するくらいの熱になっているので最悪壊れても不思議ないレベルだと思います。
ケースファンを止めたら起動中にブルスクになった挙げ句、BIOS からも認識不能に。扇風機で強制的に冷やしたら、その場はなんとかなりました。
但し調べた限り ASRock と BIOSTAR 以外の Mini-ITX 規格の SocketAM4 マザーはどれもチップセットの上にスロットを実装しているのでなかなか厳しいなと感じました。
逆に ASRock と BIOSTAR はマザー裏面にスロットがあるので、比較的冷却面ではマシではないかと思いますが、検証してないので不明です。裏にあるということはケースに SSD を密着させることで結構大きな冷却をできるのでは?という気はしてます。
因みに Crystal Disk Mark 程度の負荷では落ちなかったので、Windows 10 起動時程度の大きな負荷が必要なようでした。
この点は致命的な欠点とは言えないかもしれませんが、いつ落ちるか予想できないので厳しいですね。取り敢えずこの点はPCIeM2 拡張を買ってきて解決を図るつもりです。下手にファンステーとか買ったほうが高くなっちゃう...
因みにケースファンを回しても止まるときは止まるので、多分スロットの手前にメモリが刺さっていること、側面には PCIe スロットがあることで風の周りが良くないんでしょうね...。
たぶんこの構造でもROG Strix X570-I Gamingほどの冗談みたいなクーラーがついてれば大丈夫だとは思います。
ファンコンなどのUtilityを使うには付属DVDが必要
ASUS 公式でも AI Suite III が配布されているのですが、何故か温度モニター程度しか付属していないようです。なんでかは不明です。
付属 DVD には、上図のような Utility インストーラーが付属しており、ここからインストールすることでファンコンなどの各種 Utility の導入が可能となりました。