スティックPCで持ち運び可能な小型データベースサーバーを実現

スティックPCでMariaDB

学習目的に使うためのデータベースサーバー(MariaDB)を小さなスティックPCで構築しPCからWifiを使って直接アクセスできるようにできないか試してみました。

なお、OSのインストールとすべての設定を終えてから気づいたのですが、スティックPCはHDMI端子を常時モニタへ接続していないと安定して動作しないようです。

小型PCでWifiアクセス可能なDBサーバーを構築

使用したハードウェアはDiginnos Stick DG-STK3という商品名でドスパラから発売されていたスティックタイプの小型PC。

目標とする構成は次の通りです。

OS Debian11 32bit GUI
データベースサーバー MariaDB
ネットワーク PCからWifi接続で運用

スティックPCが小さく持ち運びに適したハードウェアである利点を生かしUSB電源さえあればどこでも無線LAN接続が可能なデータベースサーバーを実現するというものです。

「そんなのXANPPで充分でしょ」と言われればそうなのですが学習環境に少しの遊び心を取り込んでみました。

スティックPCにDebian GNU/Linuxをインストール

Diginnos Stick DG-STK3は標準でWindows10 32bitがプリインストールされたスティックPCです。

ディスク容量は32GBと少な目なので全領域をDebianのインストールに使います(以後WindowsPCとしては使えなくなります)。

最初に、OSイメージと一緒にWifi用のファームウェアをダウンロードしてインストールメディアにフォルダごとコピーしておきます。

※今回はファームウェアだけ別なUSBメモリ。

スティックPCにつないだキーボードでDELLキーを押しながらPCを起動してBIOS画面を表示します。

BOOT順位の設定でインストールメディアに使うUSBメモリを1位にしてから設定を保存し再起動させインストールを開始します。

OSのインストールの詳しい手順についてはノートPCでの作業を過去記事にまとめてあります。

NECネットブックPC-BL300/TA6にDebian11bullseye32bitをインストール【IntelAtomCPU:N280】

見つからないファームウェアファイル

ファームウェアファイル:rtlwifi/rtl8723bs_nic.bin

DG-STK3では無線LANデバイスを標準のドライバで認識しないため、あらかじめ非フリーのドライバをダウンロードする必要があります。

アクセスポイントとの接続に失敗

また、Wifi接続が安定しないのも DG-STK3発売当初から言われていたことで、今回もインストールの途中で画像のようなメッセージが表示されたため、接続先を2.4GHzから5GHzに手動で設定しなおしています。

ディスクのパーティショニング

ディスクパーテーションの設定ではWindowsの領域をすべて削除する設定で進め、その後はメッセージに従い通常のインストールを済ませますが手順の中でSSH接続とWebサーバーの機能を追加するよう選択しておきます。

LAMP環境の構築とphpMyAdminをインストール

こちらも以前にインストール済みの別端末と同じ手順で進めます。

Debian11bullseyeへMariaDBとphpMyAdminをインストール

WebサーバーのApacheとSSHはOSと一緒にインストール済みですので、Apacheのデフォルトページにアクセス可能なことだけ確認し、続いてPHP、MariaDB、phpMyAdminをインストールしていきます。

クライアントPCからアクセスできるWifi環境の設定

目的は無線LANを使ったPCとサーバーのP2P接続なのですが、Windows側でのアドホック接続は簡単ではないようなのでスティックPCをアクセスポイントに見立てる(インターネットには接続しない)形で接続を実現させることにします。

ここではパッケージの追加→アクセスポイントの作成と設定→静的アドレスの指定→自動ログインと電源ボタン設定の順で作業を進めます。

パッケージの追加インストール

ネットワーク設定のためNetworkManagerとdhcpcd5という2つのパッケージをインストールします。

# apt install network-manager
# apt install dhcpcd5

#は$sudoにお読み替えください。

アクセスポイントの設定

メニューボタンをクリック

つぎにGNOMEのWifi設定メニューを表示し右上の点が縦に並んだメニューアイコンをクリック。

アクセスポイントのパスワードを指定

接続用パスワードを設定

アクセスポイントとして起動したPC

アクセスポイントとして起動できた

アクセスポイントを選択してスティックPCでアクセスポイントを起動させてパスワードを設定した後にPCから接続テストをしてから終了します。

この操作をすることでNetworkManagerのテキストUI画面にHotspotという名前の項目が自動で作成されます。

端末画面から次のコマンドを実行してNetworkManagerの設定画面を表示させます。

# nmtui

NetworkManagerのテキストUIを起動。

接続の編集

最初に接続の編集を指定します。

Hotspotを編集

WifiにHotspotの項目が作成されているので編集を選択します。

アクセスポイントのSSIDにはインストール時に指定したドメイン名が設定されています。

IPv4を共有に設定

IPv4設定は共有に設定を変更してメニューを下にスクロール

自動的に接続する

自動的に接続するにチェックをいれてOKを押します。

通常のインターネット設定

インターネット接続用の設定

Hotspotの編集が終わったら、次にインターネットに接続するためにインストール時に自動で作成された接続を編集します。

自動的に接続のチェックを外す

下にスクロールして自動的に接続するのチェックを外します。

静的アドレスを指定

次のファイルを編集してネットワークアダプタに設定する静的アドレスを指定します(DHCPは使わない)。

編集するファイル

/etc/dhcpcd.conf

ファイル内の最下部に次のとおり追記。

#slaac private
static ip_address=192.168.0.10/24
static routers=192.168.0.1
staitc domain_name_servers=192.168.0.1

指定しているアドレスは一例で、実際には接続するPC(192.168.0.11など)を想定した値(例:192.168.0.10)を入力します。LANケーブルを接続するなどしない限りインターネットへは出ないのでスティックPCの値(例:192.168.0.10)以外は無意味に思えますがこれで動作できています。

この仮の値は、インターネットに接続したいときのために実際に使用しているルーターのアドレスを記入したほうが良いかもしれません。(通常のアクセスポイントにも記述が適用される)。

その場合、インターネット接続用のアクセスポイントではサーバー用スティックPCとパソコンに割り振るアドレスを除いた値からアドレスを割り振る設定でDHCPサーバーを使うことになります(※静的アドレスが標準で設定されているので屋外でのフリーWifi利用は実質無効になる)。

また、ラズパイなどでP2P接続を試みているサイトを拝見するともう一つの設定ファイル/etc/network/interfacesにも追加の記述が必要であるかのような情報がありますがスティックPCのDebian(GUI)では関連の有無を確認できませんでした。

なお、今回のようにGUIとNetworkManagerを使った方法以外では、CUI環境のWifi接続には苦戦してらっしゃる方が多いように思えます。

自動ログインと電源ボタンの設定

最終的な目標としてモニターレス環境で運用したいため自動ログインの設定を行います。

サーバーが起動した時点でユーザーへのログインなしでもデータベースへのアクセスは可能ですが、電源ボタンの挙動などユーザー設定を反映させるため自動ログインを設定します。

設定するファイル

/etc/gdm3/daemon.conf

#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

ファイル内にあるこの2行の#(コメントアウト)を外しuser1をログインさせたいユーザー名に変更します。

つぎにGNOMEの電源設定で電源ボタンを押したときの動作にシャットダウンを選びます。

続いて端末画面から次の通り実行しシャットダウン時の60秒の待機時間を省略。

$ gsettings set org.gnome.SessionManager logout-prompt false

これで、モニター、キーボードが無くてもスティックPCへ電源さえ供給できれば電源ボタンだけで起動とシャットダウンが操作可能になります。

シャットダウンについては接続するPCからSSHで操作が可能ですが電源ボタンが使えたほうがスマートではと判断しました。

PCからの接続を確認

以上の工程が済んだらスティックPCを再起動させパソコンからの接続をテストします。

PCに表示されたLinuxのSSID

WindowsPCに表示されたSSID

スティックPCで設定済みのSSIDへパスワードを使って接続すればODBC接続などでデータベースを読みに行けるようになっているはずです。

phpMyAdminも利用が可能です。追加の設定が必要にはなりますがWordPressも動作させることが出来るでしょう。

シャットダウンは設定どおり電源ボタン操作で行うことができています。

Diginnos Stick DG-STK3モニターレス運用について

スティックPCで起動したDebianのディスクトップ画面

スマホをモニタ代わりに起動したスティックPC

スティックPCDiginnos Stick DG-STK3はDebianをインストールした状態ではHDMIをモニターに接続しないと正常に起動しないようです。

プリインストールのWindows10ではリモート接続時に状態の確認はできないものの起動はする模様ですが定かではありません。

冒頭に書いた通り、この仕様に気づいたのは全ての設定が済んでからでしたので仕方なくHDMIにUSBキャプチャデバイスを接続しAndroidスマホにモニタ出力をすることでOSの起動を果たしています。

本来の目標としてはスティックPCとUSB電源コードだけで軽装備な学習用データベースサーバーを実現できるはずでしたが必要なものが少し増えてしまっています。

スティックPC単体での動作

オス同士接続アダプターを組合せ

状況の改善のためにHDMI用に使えるダミープラグなるものがあるようで試してみることにしました。

モニターレス仕様DG-STK3

この状態で起動したあとWifiでの接続も確認できました。

ただ、モニターがないとボタンを押してシャットダウンさせたときに正常に終了できたのか強制終了扱いになってしまったのか判別ができないのでシャットダウンだけでもSSH接続などでPCからコマンドを送信したほうが確実です。

モニターレスHDMIアダプター

また、DG-STK3への装着には別途オス同士の接続に使うアダプタも必要になりますが、これがダミープラグと相性が悪いのかきつめでした。

実用にはなかなか難しそうなスティックPCを使ったデータベースサーバーの実現でしたが、モニターを含め外部デバイスを接続しなくても動作及びPCからの接続が可能だということがわかりました。

Debianが起動したタブレットPC] WindowsタブレットにLinuxOSを入れて「Wifi接続どこでもサーバー」にする:KEIAN KVI-70B

※その後Windowsタブレットでも同様のシステムを設定してみました。

おすすめ記事

Debian11を起動したPC-BL300/TA6 NECネットブックPC-BL300/TA6にDebian11bullseye32bitをインストール【IntelAtomCPU:N280】 そもそも何を持ってサーバーと呼べるのか? Raspberry Pi データベース学習に使うハードウェア