2020年4月16日木曜日

V6プラスのインターネットならNECルーター一択という話。

私はとくとくBBのV6プラスで光ファイバーのインターネットを使っており、最初エレコムの無線LANルータWRC-2533GST2

https://kakaku.com/item/K0001095003/
をレンタルしていたのだが、どうもIPoE認証に不具合があるのか、インターネットの接続が不安定で繋がらない事が多かった。(LANとしては使える)
仕方がなく、IPoE対応無線LANルーターを探し、次にTP-LinkのArcher A10

https://kakaku.com/item/K0001215737/
を使ったのだが、これはV6プラスではポート開放ができないという致命的な欠点があり、サーバーを置いている身としては使えなかった。(このあたりしっかり明記しておいてほしい。当初はファームウェアアップデートで対応予定とのことだったが、私がメールで問い合わせた際は、もうアップデートでの対応予定も無いとの回答だった)

結局、やや足元見られてるような価格のNECのルーター
Aterm WG2600HP3 PA-WG2600HP3
https://kakaku.com/item/K0001059859/
を買って、無事安定したインターネット環境が整った。当然ながらポート開放もできた。
IPoEの策定に関わっているからか、NECの安定性が高いのは確かだが、この独自規格のせいで海外ルーターは対応してくれないし、国内もNECのものしか実質使い物にならないのでなんだかなぁ。と思う。

2020年1月27日月曜日

WinSshFsを使い、SSHサーバーをWindowsでネットワークドライブとしてマウントする方法。

WinSshFsで公開鍵認証のSSHサーバーに接続する方法

Puttyで生成した鍵はAES-256-CBCで出力されるが、win-sshfs(Dokan .Net library)はDES-DES3-CBCでないと読み込めないため、変換する必要がある。
そのままの鍵を使おうとすると
test could not connect:Invalid private key file.
とエラーが出てしまう。

変換はまずPuttyGenを起動し、作成した鍵ファイルを読み込む。
そして、Conversions→Export OpenSSH keyを選択し、秘密鍵を出力する。(ここではaes_newkeyとする)

そのファイルをサーバーに安全な方法でアップし(opensslが入った環境ならどこでも良い)、サーバー上で下記コマンドを実行する。
$ cat aes_newkey | openssl rsa | openssl rsa -des3 > des3_newkey
コマンド入力時にパスフレーズの入力を求められるため任意の文字列を入力する。
そして出力されたdes3_newkeyをローカルマシンに持ってきて、WinSshFSのSshfs Managerで図のように設定する。そうしてSAVEしてMountすれば任意のドライブレターにローカルドライブのようにSFTP環境でマウントできる。

参考:
win-sshfsで鍵を使ってログインする方法
Windows10からLinuxにSSHで接続し、ネットワークドライブとしてマウントして使うとすごく便利だった

2020年1月17日金曜日

FreeBSDでLet'sEncryptをMyDNSのDNS認証で自動更新させる

超下書き記事。後で清書予定。
ほとんどLet’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法のコピー記事ですが(ごめんなさい)、自分の環境(FreeBSD12.1)に合わせて一部補足しています。
この方法であれば、80番や443のポート開放しなくてもLet'sEncryptの更新ができる。
V6プラスで任意のポートが使えない場合に有効だと思われる。

まず、MyDNSがリリースしたDNS認証の公式スクリプトはPHPで書かれているため、それが動くように下記の3つをインストールする。
# pkg search php
php74-7.4.1                    PHP Scripting Language
php74-openssl-7.4.1            The openssl shared extension for php
php74-mbstring-7.4.1           The mbstring shared extension for php

# pkg install php74-7.4.1
# pkg install php74-openssl-7.4.1
# pkg install php74-mbstring-7.4.1

ターミナルを開き、次のコマンドをroot権限で実行します
# cd ~ #ホームフォルダなどの作業スペースへ移動
# wget 'https://github.com/disco-v8/DirectEdit/archive/master.zip' -O DirectEdit-master.zip #MyDNSの自動更新スクリプトをダウンロード
# unzip master.zip #ダウンロードしたZipを解凍
# mv DirectEdit-master /opt/ #解凍したフォルダを/opt/に移動

次に、自動DNS書き換えの設定をしていきます。
# vi /opt/DirectEdit-master/txtedit.conf

内容を下記のように書き換えます。
$MYDNSJP_URL       = 'https://www.mydns.jp/directedit.html'; //そのまま
$MYDNSJP_MASTERID  = 'mydnsXXXXXX'; //MyDNSユーザーID
$MYDNSJP_MASTERPWD = 'yourmydnspasswd'; //MyDNSパスワード
$MYDNSJP_DOMAIN = 'example.com'; //MyDNSに登録したドメイン名

PHPのパスを確認
# which php
/usr/local/bin/php
FreeBSD12.1のphp7.4はここにbinのパスがあるため、
/DirectEdit-master/内のtxtregist.phpとtxtdelete.phpのbin/phpのパスを設定する。(1行目)
# vi /opt/DirectEdit-master/txtregist.php
#!/usr/local/bin/php
(txtdelete.phpも同様に行う)

権限を変更します。
# cd /opt/DirectEdit-master
# chown root:root ./
# chmod 700 ./*.php //DNS自動更新プログラム
# chmod 600 ./*.conf //設定ファイル

これで下準備はOKです。
既にLetsEncryptの証明書ファイルが有る場合はエラーの原因となるため、リネームして排除しておく。
# mv /usr/local/etc/letsencrypt /usr/local/etc/old_letsencrypt


それではMyDNS自動更新スクリプトを使ってdns-01認証でワイルドカード証明書を取得してみます。
# certbot-auto certonly --manual \ #certbot-autoコマンドは環境によって名前が異なる場合があります。
--preferred-challenges=dns \
--manual-auth-hook /opt/DirectEdit-master/txtregist.php \
--manual-cleanup-hook /opt/DirectEdit-master/txtdelete.php \
-d example.com -d *.example.com \ #※左記以外のサブドメイン(たとえばa.example.com)はMyDNSのスクリプトではエラーになるため指定できません。サブドメインのSSLを取得する場合は別途従来のhttp-01認証で取得してください。
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos -m hoge@example.com \ #Let'sEncryptからの通知を受け取るアドレスを指定します。
--manual-public-ip-logging-ok

更新ができるか確認
# certbot renew --dry-run

成功したらCrontabに登録
# crontab -u root -e
00 04 01 * * certbot renew
自動でApacheのリロードも行う。
01 04 01 * * /usr/local/etc/rc.d/apache24 reload

参考
Let’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法
Let’s Encrypt の証明書の更新を自動化する手順 (cron)

2020年1月9日木曜日

FreeBSDメジャーアップグレード

個人用忘備録。
FreeBSDのメジャーアップグレード(11.2→12.1)はここの記事の内容で全てOK!
FreeBSD 11.2 を FreeBSD 12.0 に更新
https://qiita.com/psaxuww/items/4f14414999fc1b31ca11
上記記事の完全引用です。書いてくださった方有難うございます。

12.1にしたいなら下記の順で進めていく。
アップグレードファイルダウンロード
# freebsd-update upgrade -r 12.1-RELEASE
カーネルのインストール
# freebsd-update install
再起動 
# reboot

再起動後ユーザランドのインストール
# freebsd-update install

古いサードパーティソフトのリビルドをするよう促されるので、パッケージアップグレード 

# pkg upgrade -y

仕上げ(soファイルの削除)
# freebsd-update install
バージョン確認 
$ uname -a
FreeBSD  12.1-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC  amd64
 と表示されればOK。詳細は上記リンク先記事で。

メインテナンスはこちら
https://maimokumemo.blogspot.com/2016/05/microserver-freebsd103nasweb5.html

【備忘録】Windowsタスクスケジューラのタスクを削除できない問題の解決方法

 自分で作ったタスクなのに、削除しようとしたら
「ユーザーアカウントにタスクを削除する権限がありません」
と表示されてしまい、削除はおろか、権限エラーで設定変更もできない。それを解決できたのでメモ。

完璧に下記の記事のコピーです。忘備録として個人的にメモします。
【備忘録】Windowsタスクスケジューラのタスクを削除できない問題の解決方法

1タスクのスケジュールの実体が/windows/system32/Tasksに保存されているので、その中で削除したいタスク名のものを削除。
2タスクスケジューラを起動しタスクを削除。

上記の通りみたらすんなりと削除できた。

2019年11月19日火曜日

録音ファイルを自動で文字起こしする方法


長時間の録音ファイルを効率よく文字起こししたかったのでメモ
Google Cloud Speech-to-Textを使う自動文字起こしだが、結論から言うと、少なくとも日本語の長時間音声に関して現段階では精度が低く、文字エンコードを正しく出力ができないので(私のスキル不足かも)実用上難しいと思う。
ただ、なんとか方法としては分かったので方法を記載する。2019年11月19日超下書き記事

GoogleCloudPlatformを有効にしてプロジェクトを作成する
APIでCloud Speech APIを有効化する
メニュー→ストレージ→バゲットの作成で外部公開のバゲットを作る。(外部公開しないとFlacファイルへのアクセスエラーになる)
外部公開するには一旦バゲットを作った後、メンバーの追加でallUsersを追加し、ストレージ→オブジェクト閲覧者に設定する
バゲットにFLAC音声ファイルをアップロードする。モノラルFLAC形式限定。
形式変換はこのサイトを使うと手軽。

https://audio.online-convert.com/convert-to-flac
コンソールから下記のように入力する
gcloud ml speech recognize-long-running 'gs://バケット名/音声.flac' --language-code='ja-JP' --async
処理が開始すると固有の16桁が出てくるので、進捗状況はこれで確認する。
gcloud ml speech operations describe 16桁の番号
完了すると、JSON形式で表示される。
これをテキスト化して保存したかったが、コンソールから直接コピペする以外にうまくいく方法が見当たらなかった。2019年11月19日現在
ここで表示されたJSON形式の文字列をコピーし、下記サイトに貼り付けてCSVでダウンロードする。
https://konklone.io/json/
ダウンロードしたCSVをメモ帳で開いてANSI形式でエンコードして保存→Excelで開く。

本来ならば、
gcloud ml speech operations describe 16桁の番号 > speech.json
gsutil cp speech.json gs://バケット名/
でバケットに出力し、それをダウンロードすれば良いはずだが、うまく行かなかった。(どうやってもjsonで出力される段階で日本語が正しくエンコードされない。バイナリエディタで開いても明らかにダメだった)
うまく変換できる方法を見つけた人コメント頂けると有り難いです。


参考
https://gigazine.net/news/20180824-speech-to-text-gcp-cloud-mojiokoshi/

2019年10月25日金曜日

Windows10アップグレード時に46%で停止する際の解決法

公式には無料アップグレード期間を過ぎているが、実は2019年10月24日現在、まだWindows7→10のアップグレードインストールができる。
ただし、通常の方法で行うと更新プログラムのチェックの画面が46%の状態で停止し、進行しないのでアップグレードの際は下記の設定を変更する必要がある。

①Windows7の重要な更新プログラムを確認しないに変更

②インストール時の更新プログラム、ドライバー、オプション機能の入手で「今は実行しない」を選択。
 あとは通常通りインストールすれば無料アップグレードできる(今のところは)。

アップグレードした後は、ライセンス認証も通り、通常通り更新プログラムも入手できる。