ここは俺の日記帳



ミニPCの購入経緯と自宅のPC構成
最近あちこちで話題になってたミニPCを使って色々してたらもう3ヶ月も経ってしまった
なので近況をここに綴る

自宅のPC構成とミニPCへの浮気の経緯

そもそもの自宅のPC構成から
 * メイン:Ryzen 3950X 64GB RAM Win11pro 
 * サブ:イオシスで話題になったあの東芝タブレット
 * NAS:Synologyの民生品(セロリン)
 * 他:ラズパイ3枚(ZW, 3B+, 4B 4GB)

 ラズパイには細々したスクリプトをcronで実行させていたが、dockerを弄りたいという欲からメイン機でWSL上にdockerを生やしていた
 Windowsのあまりの不安定さ、Explorer patcherを入れていることに起因するエクスプローラーのフリーズに嫌気が差し、ちゃんとしたスペックのx64鯖が欲しくなった。
 そんな折、ラズパイ5販売開始からの円安も相まった割高感に出鼻を挫かれ、ユーザー名にするほど好きだったラズパイから一旦身を引き、ミニPCへと浮気した

買ったもの

購入したのはAOOSTAR MN58(5800U版)
Amazonの販売ページは消えてしまった
AOOSTARはWindowsライセンス問題もOEM版と問題なく、また排熱問題についても特に騒がれていない様子から購入検討した

当時はRyzen 5700UかRyzen 5800Uの2種があったが現在はRyzen 5825Uにアップグレードされているようだ

ミニPCに足りなかったもの

なにはともあれプライムデーでミニPCが自宅に着弾したわけだが、
購入したモデルが
Ryzen 5800U 8GB*2 RAM 500GB SSD

と、一番安かったOS付きモデルだった
はじめはUbuntu serverでも入れてdockerで遊ぶか!と思っていたが、6コンテナほど起動していると
RAMはほぼ限界まで使用されるのに対し、一向にCPU使用率が上がらないため、もったいないと思った次第

サーバーとして遊ぶにはいささか貧弱なRAM容量と考えていると、うっかり手が滑ってしまい32GB*2 SODIMMを購入
どうするんだこれサブPCとメインPCが同じRAM容量なのおかしいだろ

また、PC内部はSATA端子と電源端子が融合したリボンケーブルが1本あったため、家に転がっていた1TB 2.5'' HDDを蓋に固定し、これまた家に転がっていた蝉SSDを差し替え、現在もほぼ*¹問題なく稼働している
AOOSTARとはいえ小さい筐体、排熱の問題とNVMeの爆熱具合は問題かと思ったが、蝉SSDはRAMを搭載していない分、排熱が少なく
現状でも50℃を超えることはなく排熱は安定している。
中華SSDガチャで余った蝉系があれば
もしRAMキャッシュ無しだった時、ミニPCへの導入を検討してみるのも良い

*1 好奇心から/rootを壊したり、resolv.confをぶっ壊して、pve関連のサービスがすべて止まり、sshもできず、コンソールから弄るハメになったり、efiパーティションを弄ってLiveCDからしかbootできなくなったり散々あったが動いてはいる

動いているサービス

今はproxmoxを導入し、
lxcコンテナ7つ
VMマシン5つを稼働している。
lxcコンテナは便利なスクリプトがあるためそちらを活用している。

内訳

  • pi hole  : DHCPサーバーのIP固定化をテキストベースでバックアップしたかったため

  • Logitech Media Server  : 音楽鯖。標準でCueSheetに対応している。ラジオも聞けて便利。後継バージョンのLyrion Media ServerはDLNA bridgeが未対応のためmpdサーバーのラズパイオーディオを活用できず、前のバージョンで運用している。

  • Navidrome  : 音楽鯖。CueSheet未対応*²。ライブラリの構築が後述のEmby, jellyfinより遅く、無茶なことをするとデータベースが壊れやすいものの、airsonic系というのも合って、対応アプリの充実度と複数ジャンルタグへの対応がとても使いやすい。 iOSではsubstreamer、Androidではというアプリで再生している。

  • Emby  : 動画 兼 音楽鯖。CueSheet未対応*²。Emby対応のスマホアプリが多く、スムーズに再生できるのが良い。

  • jellyfin  : 動画 兼 音楽鯖。CueSheet未対応*²。Embyとどちらがいいか検討のために導入。Embyと比べ動画タグへの対応力が高いと感じる一方、ライブラリの管理や音楽再生についてはEmbyより扱いづらい一面がある

  • Photoprism  : 画像鯖。AIのタグ付が面白いがまだ実用とは言い難い。Exif情報を読み取ってまとめてくれるため、スマホの写真をまとめておくと面白い

  • cloudflared  : お外に出られるのにOAuth認証もかかってプライバシーがかなりいい感じ。しかもポート開放不要というおまけ付き。

  • Dietpi  : Docker用。ホストは小さく、軽く、しかし拡張性が高いとすごく良い。当初はlxcでalpine+dockerを使ってみたが、トラブルシュートが面倒になりdebian系をVMで運用したほうが後々の運用が楽だと気づいた。

  • Windows  : RDPでエロゲするために入れた

  • Pop!_OS  : GUIのLinuxって最近だとPop!OSかmanjaroみたいなんですよ、って聞いたのでArch系にいい思い出が無い(Volumio -> MoOde)為、作って壊してするためのGUI LinuxはUbuntu系って決めている

flac+cueを非対応のサーバーに曲単位で認識させて再生する方法

ほとんどのOSSストリーミングサーバーはflac+cueに対応していない。
そこでhost側(今回はproxmoxのhostshell)にflac+cueを分割してfuseしてくれるtrackfsを導入することで
trackfsが管理するディレクトリを各lxcが共有マウントするとあたかも分割flacで保存しているかのようにライブラリを構築してくれる。
ffprobeでタグも書き出してくれるためfoobarで埋め込んだMusicBrainzタグ、BPMタグもきっちりNavidromeは認識した。
使い方は以下をhostshellで入力。
ただし、環境によってはpython3のライブラリを壊しかねないため注意(素のproxmox8.12は問題なかった)

(非dockerでのインストール方法(危険))
# apt-get install python3 python3-pip fuse libfuse-dev flac

# pip install --user trackfs
(もし導入できない時は以下。環境によってはシステム破壊をもたらす)
# pip install --break-system-packages trackfs

# cat >>/etc/rc.local<<EOF
#!/bin/bash
trackfs --root-allowed -t <num_filenamelength> trackfs /path/to/yourmusiclibrary /path/to/mountpoint &
exit 0
EOF
# systemctl enable rc-local
# systemctl start rc-local

もし他の環境で運用する場合はdocker版が大元かつ安心だそうで、そちらの導入を検討してみても良い

proxmox lxc側からtrackfsで生成したディレクトリをマウントする方法

/etc/pve/lxc/000.confと作った番号のlxcの設定ファイルがあるのでお好みのテキストエディタで編集する
注意点は2つ、
m1: マウントポイント,shared=1
features: fuse=1,keyctl=1,nesting=1
また、非特権コンテナでのマウントはUID,GIDに工夫が必要なため、hostでcifs-utils等でmount -oほにゃららする時に指定が必要。
詳しくは原文日本語解説
以下は例

#nano /etc/pve/101.conf

#ここはホストのサマリー右側に表示されるため、途中でコメントをつけても強制ソートされる。
# また、:が%2みたいに化ける。
#  # Debian LXC
#
#  <a href='https%3A//ko-fi.com/proxmoxhelperscripts'><img src='https%3A//img.shields.io/badge/&#x2615;-Buy me a coffee-blue' /></a>
#  </div>

arch: amd64
cores: 16
cpulimit: 50
features: fuse=1,keyctl=1,nesting=1
hostname: lms
memory: 2048
mp0: /mnt/trackfs/music,mp=/music,shared=1
net0: name=eth0,bridge=vmbr0,hwaddr=______,ip=dhcp,type=veth
onboot: 0
ostype: debian
rootfs: local:vm-101-disk-0,size=12G
swap: 4096
tags: proxmox-helper-scripts
unprivileged: 1



あとがき

知見: 

  • 最近のlinuxは何でもsystemd。でもrc.localはrc-localというサービス名で生き残ってた

  • fuseは無限の可能性を秘めている

proxmoxと出会ってdockerそっちのけでlxcやqemuに手を出し、VPNで外から自分だけが見れるようにしたり、Cloudflare様々と拝んだり
やる気があったら続き、追記をまた書く


いいなと思ったら応援しよう!