UbuntuでKasm Workspacesを構築:あらゆるブラウザに隔離されたデスクトップをストリーミング

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

リモートアクセスの比較:なぜVNC/RDPからコンテナストリーミングに乗り換えたのか

ホームラボ(HomeLab)を始めたばかりの頃、私はRDPやVNCといった従来のプロトコルを利用していました。これらは動作はしますが、不便な点も多いです。これらの手法はマシンの画面をキャプチャし、そのピクセルをクライアントに送信します。その結果、動作が重く感じられたり、専用のクライアントアプリが必要だったり、ポートを外部に公開するとセキュリティ上の脆弱性が生じたりします。

Kasm Workspacesは「コンテナストリーミング」によってその常識を覆します。重い仮想マシン(VM)を起動する代わりに、Kasmはセッションごとに軽量なDockerコンテナを立ち上げます。KasmVNCプロトコルを使用して、WebRTCまたはWebSockets経由でデスクトップをストリーミングします. ノートPCやタブレットに何もインストールする必要はありません。最新のブラウザさえあれば準備完了です。

このアプローチが真に威力を発揮するのはセキュリティ面です。標準的なVMでは、たった一つの悪意のあるリンクがOS全体を危険にさらす可能性があります。Kasmでは、セッションを完全に使い捨て(エフェメラル)にできます。ログアウトすれば、コンテナは即座に削除されます。ブラウザ履歴からマルウェアに至るまで、そのセッションの痕跡はすべて消え去ります。RDPでは膨大なリソース消費なしには達成できないレベルの隔離を実現します。

Kasmの現実:メリットとデメリット

Kasmを14ヶ月以上運用してみて分かったのは、これが魔法ではないということです。そこには明確なトレードオフがあります。ホームラボユーザーにとって実際に重要なポイントをまとめました。

メリット

  • ゼロトラスト・アーキテクチャ: すべてがサンドボックス化されています。セッションが乗っ取られても、攻撃者は制限されたコンテナ内に閉じ込められ、ホストファイルにアクセスすることはできません。
  • 高いポータビリティ: 制限のあるオフィスのPCや、カフェにある5年前のiPadからでも、Ubuntuの開発環境にアクセスできました。問題なく動作します。
  • 高密度: Windows VMなら3台動かすのが精一杯のハードウェアでも、15以上の隔離されたブラウザセッションを実行できます。
  • スムーズな統合: オーディオやクリップボードの共有はシームレスです。動画の視聴やコードのコピーも、アプリがローカルでネイティブに動作しているかのように感じられます。

デメリット

  • メモリ消費量: コンテナ自体は軽量ですが、最新のブラウザはそうではありません。Chromeの1セッションで通常400MBから800MBのメモリを消費します。複数セッションを快適に動かすには、最低でも8GBのRAMが必要です。
  • 大容量のイメージ: Kasmのデスクトップイメージは巨大です。一つあたり1.5GBから3.5GBほどあります。レジストリにあるすべてのアプリをダウンロードすると、SSDがすぐに一杯になってしまいます。
  • アップロード速度の重要性: WebRTCは効率的ですが、外出先からラボにアクセスして遅延のない体験を得るには、少なくとも10Mbpsのアップロード速度が必要です。

理想的なハードウェアスペック

Kasmは動作環境を選びます。さまざまなディストリビューションで動作しますが、公式スクリプトが構築されているUbuntu 22.04または24.04が最も安定しています。Kasmのデプロイは、ユーザーごとにVPNアカウントを管理する手間をかけずに、内部ツールを安全に共有したい人にとって不可欠なスキルです。

信頼性の高いセットアップのために、以下のスペックを目指しましょう:

  • OS: Ubuntu 24.04 LTS (新規インストールを強く推奨)。
  • CPU: 2コア(動画ストリーミングや重いIDEを使用する場合は4コア以上)。
  • RAM: 小規模チームや個人利用なら8GBが最適。
  • ストレージ: 50GB SSD(HDDは避けてください。コンテナの起動時間が非常に遅くなります)。
  • スワップ: 必須。64GBのRAMを積んでいても、インストーラーが1GB以上のスワップを検出しなければ停止します。

インストールガイド:UbuntuでKasmを動かす

公式インストーラーを使用します。これにより、Dockerのセットアップ、仮想ネットワークの作成、ローカルデータベースの設定が自動化されます。

ステップ 1: システムの準備とスワップ設定

まずスワップの状態を確認してください。多くのVPSプロバイダーではデフォルトで無効になっており、そのままだとKasmのインストーラーがクラッシュします。これを修正し、システムを更新しましょう。

# リポジトリの更新とアップグレード
sudo apt update && sudo apt upgrade -y

# スワップの状態を確認
swapon --show

# 空の場合、4GBのスワップファイルを作成
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 再起動後もスワップ設定を維持する
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

ステップ 2: Kasmリリースのダウンロード

ルートディレクトリを汚さないよう、/tmpフォルダへ移動します。最新の安定版(本稿執筆時点ではv1.15.0)を取得します。

cd /tmp
curl -O https://kasm-static-content.s3.amazonaws.com/kasm_release_1.15.0.0638dd.tar.gz
tar -xf kasm_release_1.15.0.0638dd.tar.gz

ヒント:curlコマンドを実行する前に、Kasmのダウンロードページで最新バージョンのリンクを確認してください。

ステップ 3: インストーラーの実行

スクリプトがすべてを処理します。手動のプロンプトをスキップするために --accept-eula フラグを使用します。443以外のポートを使用する必要がある場合はここで指定できますが、最初のセットアップではデフォルトのままが最適です。

sudo bash kasm_release/install.sh

完了まで5〜10分かかります。プロキシ、マネージャー、データベースサービス用の主要なDockerイメージ(数ギガバイト分)をプルする必要があるためです。

ステップ 4: 認証情報の保存

スクリプトが終了すると、ターミナルにパスワードのリストが表示されます。**止まってください! 画面をクリアしてはいけません。** 管理者ユーザーと標準ユーザーの認証情報をすぐに保存してください。これらを失うと、手動リセットのためにデータベースコンテナを操作することになり、非常に面倒です。

Kasm UI ログイン認証情報

-----------------------------------------
  管理者ユーザー: [email protected]
  パスワード: [あなた独自のパスワード]
-----------------------------------------
  標準ユーザー: [email protected]
  パスワード: [あなた独自のパスワード]
-----------------------------------------

ステップ 5: 初回起動とテスト

https://your-server-ip にアクセスします。ブラウザが自己署名証明書について警告しますが、これは正常です。「詳細設定」をクリックして続行してください。管理者アカウントでログインし、以下の手順で最初のセッションを開始します:

  1. 上部ナビゲーションバーから Workspaces を選択します。
  2. レジストリには、Chromeや標準のUbuntuなどのプリインストールされたアプリが表示されます。
  3. アイコン(Chromeなど)をクリックし、Launch Session を押します。
  4. 新しいタブが開きます。3〜5秒以内に、サーバー上で動作するフルブラウザがデスクトップに完璧にストリーミングされます。

ステップ 6: 永続化とSSL

デフォルトでは、セッションを閉じるとKasmはすべてを削除します。ファイルを保持したい場合は、 Workspaces -> Edit (鉛筆アイコン) -> Persistent Profile に移動してください。私は開発環境ではこれを有効にしていますが、不審なリンクをテストするための「使い捨て」ブラウザでは無効にしています。

プロフェッショナルな環境にするには、Nginx Proxy ManagerやCloudflare Tunnelなどのリバースプロキシをセットアップしましょう。これにより、生のIPアドレスではなく、本物のSSL証明書と lab.yourdomain.com のようなカスタムドメインを使用できるようになります。

Share: