📚 シリーズ目次
本シリーズは、作業の一部で Linux Mint 22.2 Cinnamon Edition を使用します。
( Windows 11 での作業手順も併記しています。)
1. はじめに
さて、スマホ上でのサーバ構築はひと区切りつきました。SVNのコミットに失敗することがあるくらいで他は問題なく動いているのですが、遅い。いや、計画段階で遅いことは覚悟の上でしたが、ここまで遅いのかと。なので、サーバ構成にテコ入れして、実用できる状態に改変していきたいと思います。
本記事では、非rootのスマホに仮想マシンを導入し、Android OS上でネイティブなLinuxサーバを稼働させることを目指しましたが方向転換します。
2. サーバ構成の改変
2.1 具体的にどうするの?
こうします。スマホのTermux上で稼働させていたQEMUとDebian環境を、ごっそりとサーバPCに移行します。今回はクライアントとサーバを同一PCで運用します。CPUのアーキテクチャが変わるので、再セットアップ不可避でありますw
2.2 あれ?QEMUは使わないの?
Linux PC専用ならQEMUで問題ないのですが、Windows PCにも容易に移設できる運用ができたら柔軟で良いなと思いました。今回はVirtualBoxです。
2.3 Dockerは使わないの?
Docker運用も検討しました。Docker環境の外側でのrclone cryptマウントなら対応できそう。このマウントまわりも環境内に取り込みたいので、採用は見送りです。
3. VirtualBoxのセットアップ
3.1 VirtualBoxのインストール
とにもかくにも、まずはVirtualBoxが必要です。Linux Mintのソフトウェアマネージャから、以下のソフトウェアをインストールしてください。
- Virtualbox
- Qemu-utils
Windows用インストーラは、こちらのサイトからダウンロードできます。
qemu-img.exe を使用しますので、以下のコンポーネントが必要です。
Linux環境ではソフトウェアのインストール後、vboxusers をユーザの属するグループに追加してください。
3.2 仮想マシンの作成
まずは、VirtualBoxを起動して仮想マシンを作成してください。ツールバーの「新規(N)」ボタンをクリックし、エキスパートモードを使用して作成します。Windows版は、環境設定のタブを「高度」に切り替えておくとエキスパートモードになります。
| 項目 | 設定 |
|---|---|
| 名前(N) | deian-amd64 |
| メインメモリー(M) | 1024 MB |
| プロセッサー数(P) | 2 CPU |
| ハードディスク(K) | 追加しない |
仮想マシンが作成できたら、設定の「ネットワーク」を開いてNATの「高度(D)」から「ポートフォワーディング(P)」の設定を行ってください。
| 名前 | プロトコル | ホストポート | ゲストポート |
|---|---|---|---|
| SSH | TCP | 2222 | 22 |
| HTTPS | TCP | 8443 | 443 |
3.3 Debianのダウンロード
Debianの公式サイトからQEMU用のクラウドイメージをダウンロードして使用します。以下のコマンドを実行してください。ダウンロード後の処理で、ダウンロードした .qcow2 ファイルを .vdi 形式に変換しています。
cd "$HOME/VirtualBox VMs/debian-amd64"
curl -LO \
https://cloud.debian.org/images/cloud/trixie/latest/debian-13-nocloud-amd64.qcow2
qemu-img convert -O vdi \
debian-13-nocloud-amd64.qcow2 \
debian-13-nocloud-amd64.vdi
Windows環境では、以下のコマンドで対応できます。
$env:Path = "C:\Program Files\qemu;$env:Path"
cd "$env:USERPROFILE\VirtualBox VMs\debian-amd64"
curl.exe -LO `
"https://cloud.debian.org/images/cloud/trixie/latest/debian-13-nocloud-amd64.qcow2"
qemu-img.exe convert -O vdi `
"debian-13-nocloud-amd64.qcow2" `
"debian-13-nocloud-amd64.vdi"
3.4 Debianの起動
Linux環境でKVMモジュールがロードされていると、VirtualBoxがCPUのハードウェア仮想化支援機能を使用できません。今回は、ブラックリストを作成してKVMモジュールのロードを阻害します。以下のファイルを作成し、PCを再起動してください。
sudo nano /etc/modprobe.d/blacklist-kvm.conf
blacklist kvm
blacklist kvm_amd
blacklist kvm_intel
Windows環境では、この対応は不要です。
それではDebianを起動します。VirtualBoxから設定の「ストレージ」を開いて「コントローラー: SATA」配下に以下のハードディスク追加してください。ツールバーの「起動(T)」ボタンをクリックすると、Debianが起動します。
debian-13-nocloud-amd64.vdi
4. Debianのセットアップ
4.1 SSH接続の準備
まずは root でログインしてください。パッケージを更新してOpenSSHサーバをインストールします。SSH接続できるまでは手打ちでのコマンド実行ですw
apt update
apt upgrade
apt install openssh-server
続いて、SSH接続用のユーザを作成します。以下のコマンドで作成してください。作成後に、ユーザをsudoグループに追加します。
adduser --shell /bin/bash --gecos "Debian,,," debian
usermod -aG sudo debian
4.2 ターミナルからの接続
それでは、ターミナルからDebianに接続して作業します。以下のコマンドで接続してください。初回接続時は、未知の接続先として警告が出ますので yes と入力してください。
ssh debian@localhost -p 2222
ターミナルからSSHで接続できたら、DebianにSSH鍵認証を設定します。以下のコマンドで authorized_keys ファイルを開いてください。PCで作成した id_ed25519.pub をテキストエディタで開いて、中身の文字列をまるっと authorized_keys にコピペで追加します。追加したら「Ctrl + O」からの「Enter」で保存し、「Ctrl + X」で終了します。
mkdir ~/.ssh
nano ~/.ssh/authorized_keys
追加後は、PC側のSSHクライアント設定ファイルを準備します。config ファイルを作成して、以下のように記載してください。
Host virtpc-ssh
HostName 127.0.0.1
User debian
Port 2222
IdentityFile ~/.ssh/id_ed25519
これで、以降は以下のコマンドで接続できるようになります。パスワードは不要です。
ssh virtpc-ssh
4.3 サーバの構築
ここからの作業については、差分のみ列挙します。まずはホスト名を変更します。
sudo hostnamectl set-hostname VirtualBox
キーワードについては以下のように変更します。
| 変更前 | 変更後 |
|---|---|
termux-ssh |
mobile-ssh |
termux-sftp |
mobile-sftp |
termux-secure |
mobile-secure |
Rclone Mounter for Termux Storage |
Rclone Mounter for Mobile Storage |
termux.key |
virtpc.key |
termux.crt |
virtpc.crt |
Termux Local Server |
VirtPC Local Server |
termux.home.arpa |
virtpc.home.arpa |
termux-local-server.crt |
virtpc-local-server.crt |
5. おわりに
処理は確かに速くなりましたが、なんというかコレジャナイ感が拭えません。スマホをroot化しないと満足できない身体になってしまったかもしれない。セキュアなデータ保存を優先するか、スマホで完結を目指すか、あるいはroot化か。
| ◀️ 前の記事 | 次の記事 ▶️ |
|---|---|
| セキュアサーバに、なりたいな「ハイ!rclone crypt」⑤Gitサーバを構築してみる | 未定 |
