Macmini2012を買い直して2台目Docker用サーバーにした話

ちょっと小ネタ気味。

Macmini2012のCorei7モデルを買い直した。PayPayフリマでお値段8000円弱+割引で実質6000円ほど。

macOS Catalina 10.15.7が最終バージョンとなる2012年モデルのMacmini。
2014と比べてマルチコア性能が高く、2018モデルより安く入手できるため、ハードウェアとしては現在でも優れた選択肢。

Dockerコンテナや仮想マシンを動かせるだけのメモリとCPUを確保しつつ、Wi-Fi・Bluetooth・USB3・Ethernetが揃ったデバイスとしては実はMacminiが最適だった。
他の候補としてはAlpineLinuxを直接動かした実績のあるNucBox5があったが、中古相場がちょっと高い割にそれほど大きな差があるわけでもないため結局Macminiを採用したという話があったりする。

スペック詳細

メモリ12GB、SSD128GB構成。それなりのCPU/ストレージと大量のメモリを調達できたので、Dockerコンテナを動かすのが捗る。

しかしCatalinaはとっくの昔にDockerのサポートから外れている上に仮想環境も構築できない(UTMやVMware/VirtualBoxが非対応)ので、今回はOSごとUbuntuに置き換える形でサーバー化した。
念の為にGUIありの通常Ubuntuにしたけど、UbuntuServerとかUbuntuCoreでも良かったかもしれない。Alpine直入れだと流石にドライバが不安。

GPU性能が圧倒的に足りないので、LLM本体を動かすには向かない。M1Mac等で動かしているOllamaのLLMを、本機で動かすDockerコンテナから活用することは問題なく可能

セットアップ

Ubuntuインストール

例のゲーミングマウスAppleKeyboardをぶっ刺し、ちょうど表に出ていたBDプレイヤーのHDMIケーブルを一時的に差し替えてキーボード・マウス・モニターを揃えた。即席で環境を用意できるのはモバイルデバイス軸に拡張する部屋の強み。
2018モデルならThunderbolt3のモニターが使えるのでUltraFineが使いまわせて楽だったりする。

最新Ubuntuのイメージを落とし、balenaEtcherでUSBメモリに書き込み。在庫のUSBメモリで何度か失敗したけど、スティックSSD引っ張り出したらできたので多分相性問題。
標準設定で上書きインストールすれば、電源オンでUbuntuが立ち上がるようになる。

標準だと有線LANのみ動作する。Wi-Fiは後からドライバ追加が必要。Bluetoothはとりあえずデバイス検索とBLEは使用可能だった。

インストール後はOpenSSHさえ導入すれば、SSH経由でメンテナンス可能になる。
IPアドレスを固定した後にSSH接続が通ったことを確認したら、あとはキーボード・マウス・モニター全て外してしまってOK。以後有線LANと電源を刺しておけばSSHによるメンテナンスが可能になる。
念の為VNC入れてGUI操作できるようにしようとしたけど、途中でめんどくなったので放棄。数ヶ月運用しているが、必要だと思ったことは今まで一度もない。

Dockerコンテナの移動

OpenWebUI・Portainer辺りは設定から全データバックアップ取れるので取っておき、新規にコンテナ入れて復元。

今回移行したPortainerはAgentではなく本体だったため、特に追加の設定なしでPortainerのフル機能が使用可能になった。M1MacminiにAgent付きで残した仮想マシンAlpineLinuxのDockerまで操作可能。そのうち消す

SMBコンテナVPNは入れ直して再設定。

その他のコンテナはデータの保存先を指定していたため、コンテナ再作成の後に指定フォルダを丸コピで解決。
CPU性能とメモリに余裕があるため、Craftyの安定稼働も可能になった。これでいつでも自前マイクラサーバーにログインできる。

メモリに余裕ができたのでDify・DokuWiki・firecrawl・nodeRED・Perplexicaと次々に導入。それでもメモリは6GBほど空きがあり、OllamaのLLMさえ別マシンに任せてしまえば関連するコンテナを大量に動作させられる。

Homebridge/Wi-Fi/Bluetooth設定

Homebridgeだけはちょっと特殊。わたしはIRKitにWi-Fiでダイレクト接続しつつEthernetでネットワーク接続している上に、今回はSwitchBotプラグインのBLE対応まで見据えていたため色々修正が必要。

まずUbuntuにWi-Fiのドライバをインストールする。以下のコマンド1発で終わる。
metric/優先順位づけとかは特にしていない。

sudo reboot nowで再起動後、Wi-Fi設定をSSH経由で行う。nmcliを用いるが、接続時にはsudoが必要。
わたしはここでIRKitに接続した。

そしてHomebridgeコンテナを導入するとき、-v /run/dbus:/run/dbus:roオプションを付ける。これがDocker越しでのBLE作動に必要らしい。

–net=hostオプションのお陰でWi-FiとEthernetどちらも動作する。macOSのDockerと違いmDNS周りの干渉も発生しないため特に対策の必要はない。(ちなみにColimaならmacOSでもいけるとかなんとか)

あとは既存のHomebridge環境のバックアップから復元してあげれば動作する。IRKit/Onkyo/SwitchBotで確認済み。ホームApp側での再設定も必要ない。

Mac mini 2台構成自宅サーバーという選択肢

小型なMacminiは元々クラスター向きで、そうでなくともリソース分散するために複数台用いる選択肢は充分にアリ。
特に今回は巨大なLLMではなく多数のコンテナ稼働を目標として購入したため、それほどCPU/GPUにコストをかけることなく格安で構築できている。

M1/8GB+2012/8GB以上の環境を1から組む場合、今現在だと5万円前後で調達することが出来る。32GBのMacStudioを買えばまとめられるが中古相場13万円ほどで、こちらは半額以下なので更に安い選択肢。

メモリ32GBのMacBookProを買っちゃったので、ついでに13B前後のLLMをある程度試してみる予定。
もしも性能が良かったら整備済み吊るしM4Macminiが候補に入るし、足りなければ今度こそメモリ32GBのM1MaxMacStudioを検討するつもり。

カテゴリー: Apple, Mac, オートメーション, ガジェット, 自動化/効率化 タグ: パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です