清水理史の「イニシャルB」

M.2スロット×6搭載のミニPC「Beelink ME mini」で、1台5役の自宅クラウドを作ってみた
2025年7月28日 06:00
BeelinkからM.2スロット×6を搭載したミニPC「ME mini」が登場した。先日、同じくN150搭載のToptonのミニPCを買ったばかりだったのだが、どうしても欲しくなって買ってしまった。そして、欲望のままに、アレコレとインストールした結果、結構いい感じの自宅クラウドができたので、ご紹介する。
N150でM.2×6の個性派ミニPC
海外の自宅サーバー愛好家の動画や、僚誌PC Watchの記事「次世代NASのあるべき姿?手のひらサイズにSSDを6基積める「Beelink ME Mini」」と関連動画を見ていたら、どうしても欲しくなったので、BeelinkのME miniをついつい買ってしまった。
いわゆるミニPCで、CPUはN150、メモリ12GB固定という製品なのだが、2.5Gbps(Intel I226-V)の有線LANポートが2つ搭載されているうえ、M.2スロットが内部に6つも用意されており、まさに「小型省電力の自宅サーバーにしてくれ」と言わんばかりの構成になっている。
▼製品情報(Beelink)
Beelink ME mini
ハードウェアの詳細は、上記のPC Watchの記事がわかりやすいので、参照してもらうとして、今回は主にソフトウェア面について解説する。一般的には、NASとして利用するケースが多いかもしれないが、今回は、もう一歩進んだ「自宅クラウド」として構成してみた。
IPv6でサーバーを公開して運用してみる、という実験も兼ねているのだが、悪くない環境になったので、ご紹介したいと思う。
1台5役のサーバーにする
今回のサーバーの構成は以下のようになる。1台に「有線ルーター」「リバースプロキシ」「フィルタ付DNS」「パーソナルクラウド」「ファイルサーバー」という5つの機能を詰め込んで、自宅で使う環境をまとめてしまおうという構想だ。
前述したように、ME miniにはM.2スロットが6つあるので、順当に考えるならTrueNAS Scaleあたりをインストールするのが実用的に思えるが、もうちょっと遊びたいという気持ちが強く、今回は、いろいろ欲張ってみた。
ハードウェア的には、ME miniにSSDを追加しただけで、今回は、別の検証で使って余っていた500GBのNVMe SSD 4本に加え、急遽購入した同じブランドの500GBのSSD 2本を追加した6本を搭載している。
同梱のマニュアルにも記載されているが、本製品のM.2スロットは1スロット(4番スロット)のみがPCIe 3.0×2構成で、あとの5スロットはPCIe 3.0×1構成になっている。なので、さほど高性能かつ高価なSSDを買わずに済むのがメリットとなる。
500GBだと、現状5000円前後で購入できるので、6本そろえると3万円。本体と合わせて6万円前後となる。あまり欲張らず、これくらいの容量で遊ぶのがよさそうだ。
構成をもう少し詳しく展開すると、以下のようになる。
ベースとなるOSは、もちろんProxmox VEで、そこにVM(仮想マシン)1台、CT(コンテナ)4台を稼働させる。
通信系のメインになるのは、有線ルーターのOpenWrtで、現状はフレッツ 光クロス(ASAHIネットのDS-Lite環境)でインターネットに接続している。ルーターなので、もちろんME miniのLAN側ポートに接続したPCからインターネットに接続できるが、このとき参照するDNSサーバーとして「AdGuard」を利用する。
そして、パーソナルクラウドのNextcloudで使って、内部からはもちろんのこと、外部からもファイルを共有できるようにし、ついでにSMB共有用にSambaもインストールしてNextcloudと連携させている。これにより、Nextcloudのウェブインターフェースからも共有フォルダーにアクセスできるようになっている。
で、肝心なのは、外部公開のしくみだ。
今回の回線はIPv6 IPoEのDS-Liteの環境なので、基本的にIPv4でサーバーを公開することはできない。DS-Liteの場合、VNE側でNATがかかるCG-NATなので、IPアドレスが共有されるうえ、ポートの解放などもユーザー側では操作できない。
こうした環境では、これまでCloudflare TunnelやTailscaleなどが使われるのが一般的だったが、今回はPangolinを利用することにした。
Pangolinは、Cloudflare TunnelやTailscaleほど高機能ではないが、同様のしくみを自分で構築できるオープンソース版の認証機能付きリバースプロキシだ。
一般的には、AzureやAWSなどのクラウド上のVPSにインストールし、自宅からVPSまでをWireguardで接続して外部からのアクセスをVPS→自宅へと転送する。今回もこの方式を検討したのだが、「VPSの費用がかかる」「内部からのアクセスが面倒くさい(工夫しないと外部経由になる)」という2つの理由であきらめた。
その代わり、自宅側にPangolinを設置し、IPv6でのみ接続を受け付けることにした。要するに、外部に公開するのはPangolinに限定し、これを盾のように使おうというわけだ。
リバースプロキシなので、厳密なセキュリティ対策とは言えないが、一応、Pangolinは認証機能付きなので、許可されたユーザーしか転送されないように設定できる。
また、Pangolinには、内部で使われているTraefik(リバースプロキシ本体)用の「Crowdsec」モジュールがオプションとして提供されており、Pangolinと一緒に簡単にインストールできる。
Crowdsecは、「Collaborative IPS」と紹介されている通り、世界中のCrowdsecユーザーから報告された情報をもとに、通信を監視して通過の可否を制御できるセキュリティモジュールだ。
Pangolinからインストールできるのは最低限の機能を持ったモジュールで、Traefikのログを参照して、CVEに登録されている脆弱性を狙った攻撃やSSHへのブルートフォースなど、よくある攻撃を遮断できるようになっている。本格的な利用には有料版を利用する必要があるが、これでどこまで自宅サーバーを保護できるかが気になったので、しばらく運用してみることにした。
インストールや設定のポイント
さすがにProxmox VEを含めて全ての設定を紹介するのは不可能なので、今回は重要なポイントのみ紹介する。
事前準備
外部からのアクセスを可能にするために独自ドメインを取得。DNS設定で、PangolinをインストールしたサーバーのIPv6アドレス(グローバルアドレス)に対して、AAAAレコードを設定しておいた(このドメインは検証用なので、本記事の掲載時には無効になっている)。
Proxmox VE
今回は、インストーラーをカスタマイズして64GBのeMMCにインストールした。また、別途、USBストレージ(256GB)を装着し、そこにISOファイルなどを保管。さらに、前述したように今回はSSDを6本搭載しているので、これをZFSのRAIDZ2で構成した。
OpenWrt(プロセッサー4/メモリ1GB)
Proxmox Helper Scriptを利用してインストールした。IPv6 IPoEやDS-Liteの設定をし、ファイアウォールでPangolinのIPv6アドレスに対してアクセスを許可しておいた。また、LAN側のPCに配布するDNSサーバーのアドレスをAdGuardのアドレスに設定しておいた。
Pangolin(プロセッサー2/メモリ2GB)
Ubuntu 24.04のCTを用意し、公式のインストールスクリプトを利用してインストールした。インストール時にCrowdsecをインストールするのを忘れずに。
インストール後、いったんコンテナを停止し(docker compose down)、IPv6を有効化するために以下の設定を作成。
/etc/docker/daemon.json
{
"log-driver": "journald",
"default-network-opts": {"bridge":{"com.docker.network.enable_ipv6":"true"}}
}
また、TraefikでのIPv6の転送とCrowdsecのIPv6対応のために以下のファイルに設定を追記した。
~/docker-compose.yaml(traefik:の項目の中。image:の下あたりでOK)
sysctls:
net.ipv6.conf.all.disable_ipv6: 0
net.ipv6.conf.all.forwarding: 1
インストール完了後に、Pangolinの設定画面からNextcloudへの転送設定を登録した。
Nextcloud(プロセッサー4/メモリ4GB/ストレージZFSに1TB)
Ubuntu 24.04のCTを用意し、Docker Composeを使える状態にしてから、公式が用意しているNextcloud AIOのDockerイメージを利用してインストールした。事前に、ドメインのDNS設定、Pangolinでの転送設定が必要(ドメイン認識できないとセットアップできない)。
構築後、「外部ストレージ」アプリを有効化し、Sambaの共有フォルダーをマウントしておいた。
楽しいがIPv6なので注意
というわけで、BeelinkのME miniを使った自宅クラウドを作ってみたのだが、今のところいい感じに動いている。PCからのファイル共有も快適だし、外出先でもスマホならIPv6が使えるので、Nextcloudへのアクセスも問題なくできる。Pangolinが何度か無反応になって、コンテナを再起動することがあったが、現状は問題なく使えている。
今回は、VMやコンテナに余裕をもってリソースを割り当てたが、アイドル時でCPU負荷は2~4%、RAM使用状況は46%ほど(11.45GBの5.34GB使用)なので、まだ余裕がある。消費電力は18W前後で、普段はファンも静かでまったく気にならない。ハードウェアの完成度は高く、サーバーとしての使い勝手はよさそうだ。
ちなみに、Pangolinで有効化したCrowdsecの状況だが、そもそもIPv6しか許可していないので、アラートはほとんどない。海外から「http-bad-user-agent」が数件表示されるくらいとなっている。現状は、主にCensysからのスキャンだ。Censysについては、そのうち取り上げたいと思うが、NASなどを使っている場合も、同様にスキャンされてリストに公開されてしまうので、対策を考えたいところではある。
注意点としては、IPv6を利用している点だ。LAN側のPCにもグローバルアドレスが割り当てられるので、フィルタの設定をミスすると、LAN側のPCなどが公開される危険もある。OpenWrtのフィルタの設定は慎重に設定する必要がある。
また、外出先の場合、IPv6が使えない環境だと当然アクセスできない。公衆Wi-Fi、組織のネットワークなど、IPv6のアドレスが割り当てられないと使えないので注意が必要だ。自宅サーバーなので、あくまでも自己責任で楽しんでほしい。
いろいろ欠点や注意点はあるが、とりあえず楽しいので試してみるといいだろう。なお、筆者も試行錯誤しながら稼働させたうえ、現状もまだテスト段階なので、質問には答えられない可能性がある。苦労を楽しむのも自宅サーバーなので、いろいろ試してほしい。