屑籠というかゴミ箱

主に家のサーバーの遍歴と使った製品のレビュー

Ubuntu Proの登録

Ubuntu Pro

Ubuntu Proがこれまでベータ版?で動いていたようですが一般向けに提供されたので登録する。
news.mynavi.jp

個人だと5台まで無料で使えるようで個人で試して企業で導入させるよくあるエンジニアパターン

Anyone can use Ubuntu Pro for free on up to 5 machines, or 50 if you are an official Ubuntu Community member.
Ubuntu Pro | Ubuntu

ユーザ名、パスワード、メールアドレス登録したら問題なく完了

Ubuntu Pro

とりあえずはテスト用のサーバにつっこんでみる
仮想化しているサーバのUbuntuにつっこんで見るってことで、トークンを貼り付けたらエラーになった。
Machine typeがPhysicalになってるのが問題なのかな?
→エラーになったけど、再度ウインドウ出したらアクティベートできていた

設定後

メインの物理サーバ

試したところエラーが出たので、エラーに従って追加のサービスをaptでインストール
これでもエラーになるので対象のドメインをCloudflareZeroTrustのGatewayフィルタでNotInspect設定にしてOKに

$ ua status

で状態確認ができる

IntelNUCを買ったので検証環境を構築する冬休みの課題

忘れないうちのメモ

ひとまず最低限の確認は出来たので忘れないうちにメモするものはメモしておく
あとでちゃんとまとめる

購入したもの

第8世代IntelNUC NUC8i5BEH
M.2だけじゃなくてSATA接続のSSDも収納できる大きい方のやつ
64GBまでメモリ非公式に対応してるみたいだけどとりあえず公式の32GBにしてSSDを2TB積んでみた。
検証用にスナップショットとかとりまくるかな?という思惑もあり購入。2TBで2万ちょいくらいなので使わなくてもそのうちどこかで使うでしょう

はまりどころ

ESXiは7.0 Update3を入れてみた。初のESXiなので詰まるかなと思ったけど、一番詰まったのrootパスワードだったどれ入れてもポリシー違反で進めず困った

録画サーバの検証環境用の想定なので、USBタイプのチューナとスマートカードリーダーをつけたんだけどどっちもハマった

スマートカードリーダー

一回作ったときは問題なくゲストOSにパススルー設定出来たのに、何故か2回目から怒られるようになって設定できなくなった。理由調べたら公式に理由が書かれていて対処法も記載があった

Resolution
USB スマート カード リーダーをパススルーするには、次の手順を実行します。

注:手順を続行する前に仮想マシンをパワーオフします。

テキスト エディタを使用して、仮想マシン ディレクトリにある vmx 構成ファイルを開きます。
次のエントリを vmx 構成ファイルに挿入し、USB スマート カードのパススルーを有効にします。
usb.generic.allowCCID = "TRUE"
次のコマンドを実行して pcscd プロセスを停止します。
sudo /etc/init.d/pcscd stop
次のコマンドを実行して、pcscd プロセスが実行していないことを確認します。
ps | grep pcscd

VMware Knowledge Base

直接ファイル編集したけど、後で調べたらWeb GUIから設定できるみたい
qiita.com

チューナー(PX-Q1UD)

ドライバ入って/dev/dvb/以下にちゃんといるのに、zapv5とか使っても確認できなくて困った。
ログを見るとエラーが出ていてファームウェアが読み込めないとのこと

[ 4.870235] usb 1-4.1: Direct firmware load for isdbt_rio.inp failed with error -2
[ 4.870240] smsmdtv:smscore_load_firmware_from_file: failed to open firmware file 'isdbt_rio.inp'

公式からドライバを落としてきて入れる必要があるよう

mkdir ~/working_directory && \
cd ~/working_directory && \
curl -O http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip && \
unzip PX-S1UD_driver_Ver.1.0.1.zip && \
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
hirooka.pro

PX-Q1UDは内部でPX-S1UDを4台USBハブ接続しているだけということなので、PX-S1UDのファームウェアでOKと

まずは繋がって表示も出来たのでここから試していく
やっぱり安定性に問題ありそうなので今後どうするかは要検討

何故か受信がうまくいくときといかないときが

Mirakurun動かしていると、チャンネルを取得できるときとできないときがあって原因がよくわからなかったので調査
電波状況問題なさそうだしな…と思ってレビューを見ていると、チューナーに個体差があるという記載があったので4つ調べてみるとチューナー0だけレベルが高い。ブーストしすぎて取りこぼしている可能性が高いのでチューナー0だけ除外してテスト…したらおおよそうまくいった
アッテネーター買ってきます

[2023/01/02追記]
結局色々調べたところチューナー4台のうち1台が死んでるくさいので交換申請した
A階層だけ取れてたんだけど、再起動したらA階層すら取れなくなった
アッテネーター通したり、分波・分配器を通したり直通させたりでレベルが変わることを確認しつつ試したけど、どれもこの1台だけまともに受信できなかったのでおそらく故障かノイズがあったのかな
最悪3台運用でもいいんだけどちゃんと交換しよう

Cloudflare Zero Trustの導入

きっかけ

Twitterで以下のツイートを見て、Yubikeyほしぃ…ということでCloudflare Zero Trustを試してみることに。


ちょっとずつ試しているので、追記していく
試した端末は

Cloudflare Zero Trustとはなにか?

Cloudflareが提供するゼロトラスト実現のための環境郡という言い方がいいのか、いわゆるゼロトラストソリューション。
ZTA、ZTNAって差がわかりにくいけどCloudflareのはZTNAベースかな
www.cloudflare.com

機能群としては

あたりがメイン機能っぽい感じだけど、説明見るとCASBとかの機能もありそう。
このあたりの基本機能が、なんとFreeプランで大体使えるという太っ腹戦略なので個人で試してみるのにも良さそうということで登録。

Cloudflare登録している人はダッシュボードからZeroTrustを選択して進む。残念ながら英語のみっぽいけど下手な日本語にされるよりよっぽどマシ。

Cloudflare Zero Trust

ダッシュボードにやることが出ているはずなので読んでいけばいいけどマニュアルはこれ

  • Access Groupsにユーザとして登録するメールアドレスを含めるように作成
  • Cloudflareのルート証明書をインストール
  • Warpアプリをインストール
  • 最初に登録したメールアドレスでログイン

と言った感じで進める。特に何も指定しないとメール宛にワンタイムコードが送られてくるので、それでログインするとTLSでCloudflareと接続しトンネルを使って各種サービスにアクセスする…という流れ
ログインに関しては各種サービスと連携もできるし、AzureADとの連携が一番良さそうな感じ

使ったときに遭遇した問題

  • Androidで何故か証明書入れなくても動いた。でも再ログインしたら全くダメに

これについては原因が大体わかっていて、AndroidのアプリケーションはCA証明書をどのように使うか指定する必要があって、おそらく殆どのアプリがシステムにデフォルトで入っている証明書のみを利用している。なので、証明書エラーでほとんどのアプリがまともに使えなくて諦めた。
まともに使えたのChromeくらいかな

  • iOSはほぼ問題無しに使えている

問題が出たのはウマ娘くらい? CloudflareZeroTrustはIPが北アメリカのものになるのでこれが原因で弾かれていそう
SplitTunnel通してもいいかなと思ったけど、iOSAndroidはSplitTunnelのドメイン指定でサブドメインの指定が出来ない(反映されない)みたいなのでまともに運用できずってことでここだけ課題か

  • Windowsは本当に問題に遭遇してい…Zwiftだけ駄目だったわ。ZwiftはGatewayのフィルタに*.zwift.comをDo Not Inspectで指定してやったら通るようになったので、もしかしたらこれも証明書エラーかな?あと、ウマ娘と同じ原因っぽいのがサーバから応答が帰ってこないケースがあっておそらくIPアドレスで弾かれているのだと思われるページがいくつかあったのでそこは課題。対象のページをNot InspectにしてもProxy自体は通ってるからIPアドレスは変わらないんだよなー

VGMdbとMusicBrainzの連携

VGMdbとMusicBrainzへの連携スクリプト

MusicBrainz、手で入力するには結構大変なので他のデータソースからインポートを補助するユーザースクリプトが色々出ています。
wiki.musicbrainz.org
github.com


その中でVGMdbから情報を転載することが多かったのでImport VGMdb releases to MusicBrainzをこれまで利用していました。
このスクリプトを利用すると、VGMdbのアルバムページの右上にMusicBrainzへのインポート用ボタンが出てきて、これを押すとVGMdbの登録内容がMusicBrainzの入力に反映された状態で登録を進めることができます。

Import VGMdb releases to MusicBrainzの表示

これを利用することでサウンドトラック等の曲数が多いCDのデータの転載を簡単にしていました。
他にいいやり方あれば教えてほしいです…

本題:使えなくなった

このユーザースクリプトが2022/10/21時点で使用できなくなりました
その数日前もボタンが表示されなくておかしいけどちょっとまってみるか、位の感じでしたが数日間表示されなくなったので調査を開始。

原因:VGMdb.infoのホストが落ちている?

スクリプトの動作を調べるために初めてwebのjavascriptの動作確認しましたがChromeデベロッパーツール便利ですね
ブレイクポイント指定して実行したり変数の値見れたり
普通のコード追いかけるとの変わらない感じでした

そんな感じで調べたところJSONをパースするところで例外が発生している
じゃあもとのJSON見るとJSONファイルじゃなくてHTML突っ込んでる
なぜHTML突っ込んでいるか中身見ると、エラー522返ってて、エラーをパーサーに突っ込んでいたのでエラーになって止まっていた形

では、なぜエラーが返ってきているのか?と思って調べてみると、vgmdb.infoというドメインJSONを要求しているんだけど、ここがvgmdb.netの非公式APIサイトと言う形になっていて何らかの事情でサーバー落ちている模様。

代替案

数日待って使えるようになったら良いんですが、連携していない非公式のサーバということなので確実に復活するかは怪しげ
ということで、代替案としてこのサイト構築しているソースはOSSとしてGitHubに公開されているのでこれを利用して自分だけが使えるAPIサーバを建てることにして、そちらをユーザースクリプトから参照させるようにする

サーバ建設

公開されているソースを見るとdocker-composeファイルも用意されているので少しいじれば行けそうだったので、vgmdb.infoが帰ってこなかったときに向けて自宅の環境使って実行できるかテスト実施

結果としては問題なく動作している

実施したこととして

  • docker-composeファイルを環境に合わせて修正
  • iptablesの設定でDOCKER-USERにステートフルインスペクション設定を追加(外と通信するものなかったので基本的に全部遮断してた)

くらいで、ユーザースクリプトのapiUrlのアドレス置換を建てたAPIサーバに変更して完了

問題なく動作していそうなので、返ってこなかったらこのままにするか様子見て自宅のサーバで厳しそうならラズバイ買ってくるか、AWSに持っていって動かすかな

追記

GitHubのISSUE立ってた
github.com

Ubuntu LTSのアップデート(20.04→22.04 LTS)

アップデート方法の調査

どのような手段でアップデートするかを検討

  • クリーンインストール → ほとんどdockerでサービス構築しているとはいえ面倒
  • update-manager-coreを使う → 上げた後問題出るかも?

ということで、この2通り。
そろそろサーバを仮想化したほうがいいかなーとは思いつつもなかなか踏ん切りがつかないのでこのままアップデートする
おかしくなったらクリーンインストールにするって形で進める

確認

まずは現状

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ sudo apt dist-upgrade 
~~~略~~
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

終わってた

$sudo apt install update-manager-core 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
update-manager-core はすでに最新バージョン (1:20.04.10.10) です。
~~略~~
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

インストールされてた

$ sudo vi /etc/update-manager/release-upgrades

16行目: Prompt=lts

Promptの項目がltsになっていることを確認して進める

実行

$ sudo do-release-upgrade -d

コマンドの意味はman参照
Ubuntu Manpage: do-release-upgrade - upgrade operating system to latest release

失敗

失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した

原因は簡単で、xrdp環境からやってて適当にポチポチしてたら追い出されてどうしようもなくなった
とりあえず再起動してみたところエラーが吐かれてサービスがいくつも起動しない
幸いCUIは叩けたので、ここから復旧を試みる

$ sudo apt update
$ sudo apt upgrade

失敗する。文字化けする環境で読むと以下を実行しろとのことなのでやる

$ dpkg --configure -a

文字化けが苦しいので.bashrcを修正。文末に以下追加してひとまず英語で表示させる

case $TERM in
      linux) LANG=C ;;
      *)       LANG=ja_JP.UTF-8;;
esac

qiita.com

これでパッケージを更新できそうなので実行

$ sudo apt upgrade

まだ、apt updateでエラーが出るものの後回しにして確認
ひとまずupgrade終わったらエラーはapt updateのエラーも消えたので進める

XRDPの接続で手間取ったけど、コンフィグ最新にしてプロセス殺したらつながった
Gnomeのオプションとかは入れ直しかな?
一個ずつ確認していく

最後

$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

完了
XRDP経由で作業してたので、途中接続切られてログインできなくなって詰んだわけですがなんとかエラー状態から復旧できました。

補足

Dockerで動かしていたGraylogが何故かログインできなくなっていた
調べてみるとバージョンが新しいものがあったので、そちらに入れ替えて起動したら動いたのでバグに引っかかってたのかも

なろう上位のタイトル長傾向確認(短歌を超えたその後)

2021年の傾向確認

なろう小説APIを試してみた - Qiita
において小説家になろうにおけるタイトル長の傾向分析があったものの2021年の状況がなかったのでなろうAPI試すついでに調べてみた。

基本的な方針としては

  • APIで全件のデータを取得する
  • APIからのデータ取得時点における総合ポイントの年間上位N位までを集計対象にして調査
  • 初回投稿を投稿年とする。タイトル変更はしらん(APIだと多分拾えない

といった感じですすめる。
なろう小説APIを試してみた - Qiita
↑の集計方法とはサンプルデータが違うので違う結果が出てくるかと思ったけどちゃんと同じ傾向だったのでこのまま進めた。
全件のデータ取得方法については以下を参考に実施
karupoimou.hatenablog.com

TOP100、500、1000、2000、10000で調べた
それにしても、なろうの小説件数が80万件を超えていて驚いた。(取得した1月末時点で86万件超)最近は短編が粗製乱造されているので件数の伸びも激しいのではないかと予想しているが100万件が早くて今年、遅くても再来年くらいには達成されそうな感じか

結論/感想

ほぼ前年通りの結果が見えたが、上位陣の傾向がこれまでと異なりタイトル長の増加に陰りがあり、飽和状態へ?

上位1000位までだと、前年減になっている。
上位陣はタイトル長を昨年よりも短くする傾向が現れているものの、全体的な傾向としてはまだ伸びている
2021年の傾向を受けて2022年は全体傾向としても減るのではないかと予想するが、さてどうなるだろうか(2022/02/12コメント)

結果

2004年あたりは上位10000だとサンプルが満たない可能性あるのでそのあたりはあるデータでチェックしたと思ってもらえれば。
縦軸の範囲も描画自動化してたので揃ってないな、とか各年のサンプル件数数えるの忘れたとか残件あるけど気が向いたらやる感じで

それにしてもサンプル件数増やすとグラフもなめらかになるの面白いな…

上位100位
Top100
top100
上位500位
Top500
Top500
上位1000位
Top1000
Top1000
上位2000位
Top2000
Top2000
上位10000位
Top10000
Top10000

補足(データ:平均タイトル長)

TOP100 TOP500 TOP1000 TOP2000 TOP10000
2004 6.83 7.341727 7.341727 7.341727 7.341727
2005 8.59 8.106000 7.874000 7.986947 7.986947
2006 10.20 9.632000 9.134000 8.450000 8.272634
2007 9.89 9.680000 9.540000 9.028000 8.392640
2008 10.33 10.584000 10.157000 9.701500 8.790788
2009 10.83 10.034000 10.392000 9.932000 9.022700
2010 10.11 10.198000 10.041000 10.203500 9.467900
2011 10.72 10.868000 10.817000 11.025000 10.382900
2012 13.10 12.752000 12.079000 11.715000 11.168500
2013 14.12 13.978000 13.978000 13.431000 12.047700
2014 16.95 16.678000 16.373000 15.677500 14.003500
2015 17.65 17.660000 17.306000 16.996500 15.471900
2016 23.10 20.192000 18.933000 18.438000 16.744100
2017 23.65 22.906000 21.825000 21.224500 18.418900
2018 28.66 28.098000 26.477000 24.726500 21.339200
2019 30.23 29.898000 27.899000 26.223000 23.803200
2020 48.42 40.210000 36.817000 32.918500 29.356800
2021 45.61 38.684000 35.746000 34.112500 33.554800

2004年、2005年は途中で値が変わらなくなっているのでデータ足りてなさそうね。
今度確認しておこう

それにしてもTOP100の2019~2020年の伸び方すごいな
タイトル長は100文字が最大値なので、平均でほぼ半分使うのが上位陣という10年前には考えられない事態になってる

MusicBeeでAndroid端末にデータ転送する際の設定

Pixel6買ったので移行

これまでGalaxyS9使ってたものの妊娠の兆候が見られて背面パネルが剥離始めてたので、そろそろ買い換えるかとタイミングが良かったのでPixel6に買い替え。

MusicBeeのデータは転送すればいいやと特に設定変えてなかったもののプレイリストのチェックをこれまでと違う設定にしたからか転送エラーが発生。
調べてみたところアーティスト名が超長い曲のファイル転送に失敗していたので原因と対策の備忘録。

転送後のファイル名調べてみたところ

[設定]ー[プレイリストとそのトラックごとにサブフォルダを作成]

にチェックを入れているとファイル名が音楽ファイルの命名テンプレートで転送されていないことに気づいたので、ここのチェックを外して対応。
Androidファイルシステムディレクトリ数は制約なし、名前は255バイトまでだったはずなので超長いアーティスト名がファイル名に利用されて溢れた模様