学習目的に使うためのデータベースサーバー(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】
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から接続テストをしてから終了します。
この操作をすることでNetworkManagerのテキストUI画面にHotspotという名前の項目が自動で作成されます。
端末画面から次のコマンドを実行してNetworkManagerの設定画面を表示させます。
# nmtui
NetworkManagerのテキストUIを起動。
最初に接続の編集を指定します。
WifiにHotspotの項目が作成されているので編集を選択します。
アクセスポイントのSSIDにはインストール時に指定したドメイン名が設定されています。
IPv4設定は共有に設定を変更してメニューを下にスクロール
自動的に接続するにチェックをいれてOKを押します。
Hotspotの編集が終わったら、次にインターネットに接続するためにインストール時に自動で作成された接続を編集します。
下にスクロールして自動的に接続するのチェックを外します。
静的アドレスを指定
次のファイルを編集してネットワークアダプタに設定する静的アドレスを指定します(DHCPは使わない)。
ファイル内の最下部に次のとおり追記。
#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接続には苦戦してらっしゃる方が多いように思えます。
自動ログインと電源ボタンの設定
最終的な目標としてモニターレス環境で運用したいため自動ログインの設定を行います。
サーバーが起動した時点でユーザーへのログインなしでもデータベースへのアクセスは可能ですが、電源ボタンの挙動などユーザー設定を反映させるため自動ログインを設定します。
# AutomaticLoginEnable = true
# AutomaticLogin = user1
ファイル内にあるこの2行の#(コメントアウト)を外しuser1をログインさせたいユーザー名に変更します。
つぎにGNOMEの電源設定で電源ボタンを押したときの動作にシャットダウンを選びます。
続いて端末画面から次の通り実行しシャットダウン時の60秒の待機時間を省略。
$ gsettings set org.gnome.SessionManager logout-prompt false
これで、モニター、キーボードが無くてもスティックPCへ電源さえ供給できれば電源ボタンだけで起動とシャットダウンが操作可能になります。
シャットダウンについては接続するPCからSSHで操作が可能ですが電源ボタンが使えたほうがスマートではと判断しました。
PCからの接続を確認
以上の工程が済んだらスティックPCを再起動させパソコンからの接続をテストします。
スティックPCで設定済みのSSIDへパスワードを使って接続すればODBC接続などでデータベースを読みに行けるようになっているはずです。
phpMyAdminも利用が可能です。追加の設定が必要にはなりますがWordPressも動作させることが出来るでしょう。
シャットダウンは設定どおり電源ボタン操作で行うことができています。
Diginnos Stick DG-STK3モニターレス運用について
スティックPCDiginnos Stick DG-STK3はDebianをインストールした状態ではHDMIをモニターに接続しないと正常に起動しないようです。
プリインストールのWindows10ではリモート接続時に状態の確認はできないものの起動はする模様ですが定かではありません。
冒頭に書いた通り、この仕様に気づいたのは全ての設定が済んでからでしたので仕方なくHDMIにUSBキャプチャデバイスを接続しAndroidスマホにモニタ出力をすることでOSの起動を果たしています。
本来の目標としてはスティックPCとUSB電源コードだけで軽装備な学習用データベースサーバーを実現できるはずでしたが必要なものが少し増えてしまっています。
スティックPC単体での動作
状況の改善のためにHDMI用に使えるダミープラグなるものがあるようで試してみることにしました。
この状態で起動したあとWifiでの接続も確認できました。
ただ、モニターがないとボタンを押してシャットダウンさせたときに正常に終了できたのか強制終了扱いになってしまったのか判別ができないのでシャットダウンだけでもSSH接続などでPCからコマンドを送信したほうが確実です。
また、DG-STK3への装着には別途オス同士の接続に使うアダプタも必要になりますが、これがダミープラグと相性が悪いのかきつめでした。
実用にはなかなか難しそうなスティックPCを使ったデータベースサーバーの実現でしたが、モニターを含め外部デバイスを接続しなくても動作及びPCからの接続が可能だということがわかりました。
HDMI Display Emulator 仮想コネクタ幻影ディスプレイエミュレーターDDC EDIDエミュレーター、偽エミュレータ(fit Headless 2K @ 60Hz)
Amazonベーシック HDMI中継アダプター 29 x 22mm ブラック 2点セット
タブレットでもLinux
WindowsタブレットにLinuxOSを入れて「Wifi接続どこでもサーバー」にする:KEIAN KVI-70B
※その後Windowsタブレットでも同様のシステムを設定してみました。
おすすめ記事
NECネットブックPC-BL300/TA6にDebian11bullseye32bitをインストール【IntelAtomCPU:N280】 そもそも何を持ってサーバーと呼べるのか?