
自宅にフルサイズの19インチラックを置くのが夢。長いこと「逸般の誤家庭」を夢見てきましたが、現実的に考えると一般家庭には難しいのが現状です。ラックだけで100Kg近い重量。凄まじい轟音。発熱。電力供給。電気代。特に、サーバー機器は一般的なPCと違って強力なファンが付いてるので、騒音については生活の質を著しく下げるレベルです。それならせめてゲーム内だけでもと、あつ森でデータセンター作ったり、VRChatでデータセンターワールドを作ったりして遊んでました。
やっぱり一般家庭には無理だよなぁ…とあきらめていたとき、こんなツイートが目に飛び込んできました。
なんじゃこりゃー!!10インチラックなんてものがあるんだ。こ、これなら置ける…。調べてみるとこの10インチラックというのは海外ユーザーの間で人気があるようです(→Project MINI RACK)。これは面白そうだ。
そしてしばらく時がたったある日、@sawa-zenさんがめっちゃかっこいい10インチサーバーラックを見ました。3Dプリンターでこんなすごいものが作れるのか。配色も良い。自分でも作ってみたくました。
↓超長いのでお好きなところへお進みください。
3Dプリンターで作れる10インチラック
調べてみると10インチラックは既製品のほか、3Dプリント可能なラックもあるようです。この中でも特にLab Rax (インサートナット不使用版)とKWS Rack (インサートナット不使用版)が気に入りました。この2つはどちらも非常に人気があるようです。どっちもいいなぁ。いらないフィラメントが数本余ってたので、試しに両方作ってみました。

思ってたよりしっかりした作りですね。Lab Raxは部品の種類が少なく、左右対象になっているので1つのパーツがどの向きでも合うように作られています。何と何をいくつプリントすればいいんだ~? と悩むこともありません。しかしラックの奥行きが240mmと短く、足の位置が内側にあるので安定性がよくありません。
KWS Rackはプリントするパーツが多くて組み立てるのが大変でした。1か所あたり固定に2個のナットを使うので頑丈さがあり、底面もしっかり安定しています。奥行きも260mmと他の既製品のラックと同じ長さです。しかしナットの使用量が多く、組み立てが大変なのがやはりネックです。
ゼロから10インチラックを設計してみた
基本設計
Lab Raxのデザインや構造はいいけど、もっと安定性を上げたい。奥行きを260mmにしたい。もっと機能的にしたい。それならば自分で作るしかないか!ということでゼロから設計することにしました。参考にしたのは こちら の図面。この寸法がデファクトスタンダードになっているようです。このサイズに合わせて作れば、他の人が公開しているシェルフなども使えるはずです。
デザインや構造はLab Raxをまねした。設計はゼロから自分でやってるので、これはオリジナル作品になるのか迷ったのでChatGPTに聞いてみると「オリジナルのデータを使わずに設計したとしても、意匠を真似ているのであればリミックス作品にしたほうが無難。だそうなので今回はリミックスにすることにしました。
Lab RaxのライセンスはMAKER WORLD EXCLUSIVE LICESEで、ざっくり言うと「改変してもいいけど公開はMakerWorld限定ね。クレジット明記して。商用禁止だよ。」という感じのライセンスです。リミックス作品も同じライセンスでの公開になります。
余談:ライセンスについて思うこと
以前からThingiverseで3Dモデルを公開していたんですが、知らないうちに誰かが勝手に別のサイトにコピーした3Dモデルを公開してたんですよね。このライセンスはCC-BYだったのでライセンス違反ではありません。しかしどこにコピーされたのかを把握できないことにちょっとモヤっとすることがありました。MAKER WORLD EXCLUSIVE LICESEなら無秩序に広がることはなく、公開先はMakerWorldに限定されます。リミックスも把握でき、改変や改変したモデルの公開も可能と、作る側の自由と使う側の自由のバランスが良いライセンスだと思います。
10インチラックの3DモデルはAutodesk Fusionで作成しました。

どうして1つファイルに全部を入れてしまったのか…。パーツ別に分けてくっつけた方がメンテナンスしやすいんですが、無計画にやるとこうなっちゃうんですよね。

でもFusionてスケッチで長さを指定するときに “(辺1 – 辺2 – 10) /2 + 0.2” みたいに他の場所の値を計算値に入れることができて、ある部分の長さを変えると勝手に他も変わってくれる便利な使い方ができるんです。10インチラックのように寸法が決まっているものは、計算式を使うと調整が楽になります。
ちなみにパネル部分のハニカムは全てスケッチに書いているのではなく、小さなハニカムのスケッチを書いて→押し出し→ボディを矩形状パターンで複製→合成してライブラリ化。10インチラックの設計図に派生を挿入で読み込んで、必要なサイズに切って嵌め合わせ、という手順で作ってます。こうするとFusionが激重にならずに作れます。詳しい作り方は こちらの記事 で紹介していますので興味がある方はご覧ください。
それからもう一つ、FANの穴の作り方を紹介します。スケッチでは中心を基準に円をいくつか書き、小さい円から大きい円へフィット点スプラインで曲線を描きます。

オフセットして2本にしたら円形状パターンで回転させると、オリジナルのLab Raxのようないい感じのファンガードが作れます。ネジ穴も円形状パターンでやってます。
改良したところ
Lab Raxの左右にあるパネルは嵌めこみ式なので、組み立てた後は外すことができません。ラックの中の配線をいじりたいときに外せないのは不便なので、ネジで外せるようにしました。このように穴にM3ナットを埋めこんで、外側からパネルを固定する方式にしました。

ケージマウントアングルはM6ナットを簡単に固定できる構造にしました。ナットを横からスライドさせながら押し込むと、カチッとはまって落ちないようになってます。

このように後ろの部分がバネ状になっています。

ただ、この設計は現状ではあまり満足できていません。ねじを取り付けようとして少し力を入れて押すと、ナットが外れてしまうのです。困ったことにナットはラック内の奥深くに消えてゆきます。それだけでなくバネの部分の強度が弱く、慎重に扱わないといけないのがだめなところでした。
オプションでレールにも対応しました。重量のあるシェルフ(棚板)は前面の部分だけで固定すると曲がってしまう恐れがあります。そのため後ろ側を支えてあげる必要がありました。当初はラックの背面側まで伸ばして前後で固定する方法も試しましたが、そうすると専用のシェルフが必要になり、自由に選べなくなってしまいます。

そこでラックの内側にレールが取り付けられるようにしました。レールの中央部分に出っ張っている部分があり、そこにシェルフが乗っかるようになっています。出っ張っている部分は短いのには理由があって、これを全部引き延ばしてしまうと、下の段に別のシェルフを入れたときに引っかかってしまうためです
シェルフ
シェルフは他の人が作った一般的なサイズのものが使用できます。今回はシェルフも凝った作りにしたかったので、まずはじめにシェルフのテンプレートを作りました。1U、1.5U下、1.5U上、2Uの4パターンがあります。ダウンロードはこちらから。

こうしておけば、オリジナルのシェルフを作るときにいちいち最初から作らずに、作っておいたテンプレートを読み込んで、追加したり削ったりするだけで素早く作れます。

今回はほぼ全てのシェルフをカスタマイズしました。詳細は後述の章で説明したいと思います。
MakerWorldで公開
今回作成した10インチラックの3Dモデルは MakerWorld で公開しています。MAKER WORLD EXCLUSIVE LICESEライセンスなので、ここ改良したいなって人は改良版をリミックスとしてMakerWorldで公開してもOKです。

ドキュメントは こちら、組み立て手順は こちら にあります。
いつも英文のテキストを作るのが面倒で嫌だったんですが、今回は日本語版を先に作って、AIに英訳してと丸投げしました。DeepLとかGoogle翻訳を使うより、AIの方が文脈を理解して適切な言い方にしてくれるので便利ですね。
Satisfactory バージョン
Satisfactory の世界観が楽しめるSatisfactory風のバージョンも作ってみました。というかこれが本命です。3Dモデルは MakerWorld でダウンロードできます。

Satisfactory バージョンはAMSを使用したマルチカラーモデルになっています。カラーのマテリアルは碇けいいちさんが作成されたライブラリを使用させていただきました。

マルチカラーモデルのデータは色ごとに分けて作ります。大切なのは異なる色のボディが重ならないようにすることです。Bambu Studioは表面の色しか見てないので、ボディが重なってると色が意図しないところに浸透してしまうことがあります。

そこで作り方の手順としては、カラー部分のボディを作ったら、結合メニュー(切り取り・ツールを維持をON)で本体を削ります。そうすれば重なった部分がなくなります。最後に3MF形式で保存します。
これをBambu Studioで読み込むときもちょっとコツがいります。最初にフィラメントの色指定がありますが、うまく色が合ってくれません。「色合わせ」を押せば合わせてくれると思いきや、なぜか変な色になってしまいます。

そんなときはいったん「リセット」を押してから再度「色合わせ」を押してみてください。バグなのか仕様なのかおま環なのかよくわかりません。次に「単位はメートルまたはインチの可能性があります。ミリメートルにスケーリングしますか?」と出ますが、気にせずいいえを押してください。
そして次が重要です。「複数のパーツを持つ単一のオブジェクトとして読み込みますか?」でははいを選択します。ここでいいえを押すと、各色のパーツがバラバラになってしまいます。

読み込めたらカラーの面を下にして、回転させたりして位置を調整しましょう。今回作成した3Dモデルは最初の数レイヤーだけがマルチカラーなので、フィラメントの交換回数6回程度で済みます。AMSを持ってない人でも6回なら手動でできそうですね。
ハードウェア構成
ブロック分け
今回作成した10インチラックサーバーは5台のNUCで構成されています。左側のラックはファイルサーバー、右側のラックは仮想マシンを実行するVMサーバーとなっています。

ファイルサーバーにはNFSサーバーとバックアップサーバーの2つがあります。NFSサーバーはVMサーバーにストレージを提供します。ただしVMサーバー内のストレージから起動するものもあります。バックアップサーバーはバックアップデータをHDDストレージやテープドライブに保存します。

VMサーバーは仮想マシンを実行するサーバーで、3台でクラスターを組んでいます。HA構成(High Availability)になっていて、1台がダウンしても自動的に空いているサーバーでVMの実行が可能です。
それぞれのサーバーの詳細は以降のセクションで説明していきます。
(1) NFSサーバー

NFSサーバーではホストOSとしてProxmox VEが稼働しています。その中で、仮想マシンとしてゲストOSのTrueNAS Scaleが稼働しています。TrueNASのVMには2台のSSDが接続されていますが、これらはPCIパススルーでホストOSではなくゲストOSの方に接続しているのがポイントです。ホストOSを介さないことで余計なオーバーヘッドが抑えられます。

ところでこのNUCにはM.2スロットが2つしかありません。そこに3つのNVMe SSDを接続するというイカレたことをやってます。w よく見るとSSDの下からフラットケーブルが伸びてますね!

実はWi-Fiモジュールが入ってるところに変換基板を挿して、M.2スロットにしてしまってるんです。AliExpressで売っていた こちら の変換基板を使いました。このWi-Fiスロットは PCIeなので、ソケットの形状を変更すればM.2用のデバイスが接続できてしまうんです。
PCIレーンについてはSSD側はx4でWi-Fi側はx1しかありません。しかし起動ディスクは起動してしまえばそんなにアクセスすることもありませんし、多少遅くても問題ありません。PCIe 3.0 x1なので8Gbps (約1GB/s)ですが、起動ディスクなら十分な速度ですね。そのぶん速いx4の方をNFS用のディスクに使っています。
前面パネル
NUCの後ろ側がラックの前面に出るようになっています。NUCの排気口が後ろにあり、ラックの内部に熱を滞留させないようにするために、前から排出するようにしました。部屋側の広い空間に排気すれば、部屋の空気の巡回によって熱が分散していくという考えです。おかげでLANケーブルも挿しやすくなりました。

一方で裏と表を逆にしたことで致命的な問題がありました。それは、電源ボタンが押せないこと。この対策として、電源ボタンを押すためのレバーを追加することにしました。

前面パネルの本体の下の方を見ると白いものが飛び出していると思いますが、これを引っ張ると電源ボタンが押される仕組みです。ww

押すんじゃなくて引く。なんかもっといい方法があったかもしれません。たとえばWake on LANとか。でも起動中に引っ張れば電源切れますし、フリーズしたときも “長引き” で強制電源オフができるので、これはこれでよしとしましょう。
電源入力
NUCの電源入力の間には電力メーターが入っています。ここで入力電圧と電流値を測定して電力を求めてLCDに表示します。

この電力メーターはM5Stamp C3で動いていて、Wi-Fi接続によりAPIを通して測定値を取得したり、設定を変更することができます。それだけではなく、リモートから画像を表示したり、動画を再生することもできます。
Stamp C3にはSDカードもPSRAMもないので、UDPでひらすらデータを送信してます。この機能を何に使うかはまだ考えてませんが、サイバーパンク風の映像を流したり、サーバーの情報を表示するスクリーンとしても使ったら便利そうです。
この電力メーターについては別記事で詳しく紹介しているので、興味がある方はこちらをご覧ください。
→履歴グラフ付きLCD表示の電力メーターを作ってみた
(3) バックアップサーバー

バックアップサーバーではホストOSとしてProxmox VE (PVE)が稼働していて、そのVMとしてProxmox Backup Server (PBS)が稼働しています。SAS HBA拡張カードには8台の2.5インチHDDと1台のLTO Ultium 5テープドライブが接続されていて、PBSと拡張カードがPCIパススルーで接続されています。NUCに。
いやいや、NUCにPCIスロットなんてないでしょ。ww

あるんだな、これが。w
M.2スロットをPCIeスロットに変換するアダプターを取り付けました。これもAliExpressで買いました。3種類くらい買いましたが認識しなかったり、途中で接続が切れてしまうものもありました。かなり力業ではありますが同じPCIなので認識するんですね。
SAS HBA拡張カードはLSI 9300-i16を買いました。このカードはPCIe 3.0 x8なのでx4では足りませんが、x4でも遅くなるだけで使用することができます。もっとも接続しているドライブがHDDなので全く問題ありませんね。
そして、この機種は古いモデルなのでかなり発熱します。新しいモデルは低消費電力なのですが高いので、今回は安い方にしました。触れないほど熱くなるのでファンを付けて冷却するようにしています。

フロントパネルのLCDの下にツマミがありますが、これはファンの回転数をコントロールするためのものです。フル回転するとうるさいので回転数を下げられるようにしました。ファンコントローラーはAmazonで5個699円の電圧可変型のDC-DCコンバーターを使用してます。

元々は10KΩの多回転ポテンショメーターが基板に取り付けられていましたが、これをはんだシュッ太郎で取り外し、5KΩのポテンショメーターと5.1KΩの抵抗を並列に繋いで基板に接続しています。ここで抵抗値を低くしたのは、実際に出力したい範囲に合う抵抗値が低いためです。
5インチドライブとの接続
10インチラックには3台の5インチドライブが取り付けられています。2.5インチドライブが4台搭載できるものと、テープドライブです。5インチドライブ取り付け用シェルフの3Dモデルは こちら からダウンロードできます。

裏側はこうなってます。SAS HBAカードからSFF-8643ケーブルを接続し、それぞれのSATAコネクタをドライブに接続しています。テープドライブはSATAではなくSASだったので、SASタイプのもの使用しました。

テープドライブについては楽しい遊び方を以前ブログに書いたので、興味がある人は見てみてください。
→憧れのテープドライブを使ってみた – Ubuntu 24でLTO Ultrium5を使う