👾

N100搭載ミニPCでマルチサーバーの構想と構築準備

2024/05/15に公開


以前個人用にRaspberryPi 4Bでマルチサーバーを構築しましたが、色々と機能追加したくなったのでミニPCにリプレースしてスペックアップしました。その構想から実現までの記録メモです。実現後に少しモニタしている感じではメモリ8GのRaspberryPi 5, ROCK 5Bでも十分そうな感じです。書いているとなかなか長くなったので記事を分割しています。

シリーズ

  1. N100搭載ミニPCでマルチサーバーの構想と構築準備 この記事
  2. ミニPCでマルチサーバー構築 [OS等インストール]
  3. ミニPCでマルチサーバー構築 [Sambaコンテナ]
  4. ミニPCでマルチサーバー構築 [PostgreSQLコンテナ]
  5. ミニPCでマルチサーバー構築 [Nginxコンテナ]
  6. ミニPCでマルチサーバー構築 [Immichコンテナ]
  7. ミニPCでマルチサーバー構築 [VaultwardenコンテナとTailscale]
  8. ミニPCでマルチサーバー構築 [AdGuard Homeコンテナ]
  9. ミニPCでマルチサーバー構築 [GUI環境整備]

経緯

  1. ラズパイでマルチサーバーを構築する
  2. たまたまiPhoneの音楽を整理する機会がある
  3. iPhoneの音楽管理のためラズパイにWebDAV機能追加
    • ファイルとして管理し、有償版CloudBeatsアプリで同期
  4. どうせなら写真も同じようにラズパイで管理したいと思う
    • 欲を言うといい感じに見返せると文句なし
  5. テレビを全く見ないので大画面モニタとして使用したいと思う
    • 個別にアプリとか面倒なのでブラウザで見たい
  6. パスワード管理が面倒だと思う頻度が高くなる
    • いい感じに"ローカル"でパスワード管理したいと思う
  7. 広告対策しているが、それでもダルいと思うことが微妙にある
    • 特に開発時にChromeを使って調べている間
  8. Tailscaleを使うと簡単にVPNが作成でき、しかもP2Pらしい
    • 自宅サーバー公開のために特別なセキュリティ考慮したくないけど良さげ
  9. どうせ新しく構築するなら将来的に個人用Webサイト構築もしたい
  10. 良さげなミニPC安くなってるし、買って全部入りを構築することにする

ハードウェア選定

検討事項

  • GUIを使用する要求があるため、それなりの性能向上が必要と思われた
  • ラズパイ4Bでも最低限実現できそうではあるが少し怖い
    • 特にChromium系ブラウザを使用する予定のためメモリ不足が怖い
    • フルHDで動画は見れるらしいがCPU性能に余裕なさそう
    • 将来的に宅内LANは全て2.5G以上にしたいが対応していない
    • 稀に外付けSSD間でファイルコピーする際、かなり遅い
      • 設計通りだが、使ってからできれば何とかしたいと思った

CPU性能等の比較

スコアはGeekbench6,参考文献の値の寄せ集めのため参考程度の表

CPU シングルコア マルチコア 処理時電力 アイドル時 機種
BCM2711 約340 約720 約6.3W 約3.0W RaspberryPi 4B
BCM2712 約770 約1600 約6.4W 約3.0W RaspberryPi 5
RK3588 約750 約2940 約11W 約4W ROCK 5B
N100 約1140 約2960 約30W 約10W -

選定結果

  • N100搭載のミニPCにアップグレードすることにした
    • ラズパイ5はLANが1Gのため除外した
    • ROCK5Bの消費電力が魅力的だったが以下理由でN100にした
      • 当時メモリ16GB版の値段が少し高かった (ケース込み約6000円差)
      • ネット上の情報が少なそう
      • 開発環境がamd64のためN100の方が親和性が高い
      • GPIOピン使って色々したかったが優先度はかなり低かった
        • いまだにラズパイで何もしていないという事実がある
  • 今から選定するならたぶんROCK5Bを選定する気がする
    • N100搭載のミニPCが値上がり価格差がほぼなくなった
    • 常時起動するため低消費電力はやはり魅力的
    • 実現後のリソース使用具合を見るとメモリ8GBでもいけそう

購入したハードウェア

  • CHUWI LarkBox X 2023 | Intel Alder Lake-N N100
    • メモリ16GBのバージョン
    • 内臓SSDがSATA
      • 使用しているラズパイのSSDもSATAだったので都合がよかった
    • LANが2.5G対応
      • 2つあるが2.5G対応は1つだけ
    • USB-C給電対応のモニタなら接続ケーブル1本で済む
    • 使用しないがWindows11の正規版が入っている
      • 中華だがそれなりに信用できそうだった
    • デメリットは登録メールアドレスに不要なメールが届きまくること
    • 本体の大体のサイズ
      • 縦約127mm, 横約127mm, 高さ約49mm
        • ラズパイの配線込みの大きさと大体同じ
    • 静音性も十分に小さい
      • 若干生活音のある状態で30cm以内なら駆動音が聞こえる程度

デバイス詳細

変更される可能性あり。

IF ベンダー デバイスID メモ
2.5G LAN Realtek(10ec) 8125 Realtek PCIe 2.5GbE Ethernet Controller (RTL8125)
1.0G LAN Realtek(10ec) 8168 Realtek PCIe GbE Family Controller (RTL8168)
BT&Wifi6 Intel ? Intel AX101
USB-A Intel(8086) 54ed Intel(R) USB 3.10 eXtensible Host Controller
USB-C Intel(8086) 464e Intel(R) USB 3.20 eXtensible Host Controller
(SSD) ? ? AirDisk 512GB SSD

ソフトウェア選定

方針

OSは最小限の機能でインストールし、基本的な機能やGUI周辺以外はDockerのコンテナで実現する。また、Dockerコンテナ群はDocker Composeで管理する。

選定結果

区分 役割 選定ソフト メモ
OS ベース&GUI Lubuntu 軽量なGUIとしてLXQtを選定
維持 ファイル共有 Samba 現状維持
維持 データベース PostgreSQL 現状維持
維持 アプリケーション - Rustで自作
維持 音楽保管 Samba&Nginx 同期はiPhoneアプリ(WebDAV使用)
新規 写真保管 Immich iPhoneアプリがある
新規 パスワード管理 Vaultwarden 事前同期でローカル使用可能
新規 広告フィルタDNS AdGuard Home -
新規 ネット配信視聴 ブラウザ&AnyDesk -
新規 VPN Tailscale 証明書管理無しでSecure化
新規 個人webサイト Nginx 今回は準備のみ

簡単な要件,検討事項等

Lubuntu (OS)

  • OSは扱いやすくGUI含め軽量であってほしい
    • 慣れているDebian系にしたい
    • 軽量なGUIとしてLXQtを使うことにした
    • DebianのLXQtは標準で不要なOfficeソフト等が入る
      • 後から削除等は面倒なため除外
    • 最新のUbuntuは標準で最小インストールになった
      • Ubuntu公式のLXQtフレーバーLubuntuに決定

現状維持のソフト

  • 実現済みのソフトはそのまま使用する
    • アプリ以外はDockerコンテナ化しバージョンアップしやすくする

写真管理

  • 写真管理は音楽と同様WebDAV等のWebIFで管理したい
    • 良い比較サイトがあったのでそこで比較
    • 完全無料でiOSアプリがあり開発が活発でDockerで構築可能
      • Immichに決定

パスワード管理

  • パスワード管理はローカルで完結させたい
    • クラウドサービスはいつどうなるか個人では制御不能
      • 認証情報が制御不能なのは許容できない
    • セルフホスト可能な無料ソフトとしてBitwardenがある
      • 正直これでもよかったが、より良いものが見つかる
    • より軽量でBitwardenの周辺システムを流用可能なVaultwarden
      • どちらもDockerで構築可能
      • Bitwarden有償機能もVaultwardenだと無償で使用できる
      • どっちでもよかったがVaultwardenに決定

広告フィルタDNS

  • あまりこだわり無し
  • 実現例が簡単に多く見つかるAdguard Homeに決定

ネット配信視聴

  • ブラウザはBraveを使用する
  • 視聴時にいちいちマウスやキーボード操作したくない
    • 代わりにiPadで画面共有して操作することにする
    • セルフホスト可能なRustDeskに決定
    • だがLXQtでは簡単に使用できない事が後日判明
    • LXQtでも簡単に使用できるAnyDeskに決定

VPN

  • 外部に公開するために外部サーバ準備やポート公開等はしたくない
    • Tailscaleに決定

個人webサイト

  • 既に音楽管理で使用しているNginxを併用する
    • ルーティングで切り分けて対応したい予定

ポート割り当て

外部公開サービスが多いため、ポート割り当てをどうするかを決定した。

ポート 使用ソフト 機能 メモ
22/tcp OpenSSH - -
22/udp OpenSSH - UDPも使うらしい
53/tcp AdGuard Home DNS -
53/udp AdGuard Home DNS -
80/tcp Nginx Webサーバー w/ WebDAV
443/tcp Tailscale TailNet VaultwardenをHTTPS化
445/tcp Samba ファイル共有 tcpだけで動いた
853/tcp AdGuard Home DoT 証明書未作成のため予約のみ
2283/tcp Immich Web管理パネル デフォルト
3000/tcp AdGuard Home DoH 証明書未作成のため予約のみ
5432/tcp PostgreSQL DB接続 デフォルト
6568/tcp AnyDesk リモート制御 デフォルト
7583/tcp Vaultwarden Web管理パネル Dockerで80に変換,443経由で使用
8080/tcp AdGuard Home Web管理パネル Dockerで80に変換

本体サイズ,静音性

  • 本体の大体のサイズ
    • 縦約127mm, 横約127mm, 高さ約49mm
      • ラズパイの配線込みの大きさと大体同じ
    • サイズを小さくするためだけに高いSSDを採用
    • 副次的な効果として重さも軽いので、やろうと思えば持ち運び可能
      • ラズパイより重いが十分軽い部類
  • 静音性
    • 負荷をあまりかけない使い方のためほぼファンは回らない
    • 本体ファンが回らない限り、30cm程度離れれば無音

概算コスト

イニシャル

本体以外は全て流用品のため本体コストのみです。

  • 本体: 約25000円

ランニング

  • 月約230円 (21円*10.8kWh)
    • 消費電力多め想定
      • アイドル時12W
      • フルパワー時30W
        • フルパワー月5日間相当とする
    • 常時通電時の月電力量
      • 12Wh * 600H + 30Wh * 120H = 10800Wh
      • 3.3Wh * 720H = 2376Wh
    • 電気代想定
      • 1kWh 21円

参考文献

Discussion