2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kasm Workspaces を Linode で動かし、ブラウザー上でリモートデスクトップ環境を手に入れる

Last updated at Posted at 2023-02-10

Kasm Workspaces を Linode で動かす例を紹介します。インストールしてからアプリケーションの起動を体感するまで一時間もかからないと思います。Linode はアウトバウンドのトラフィックコストがインスタンスに一定量含まれており、リモートデスクトップサービスのようにクラウドからクライアントに大量のネットワークを消費する場合、コストメリットがあります。

Kasm Workspaces とは

Kasm Workspaces はコンテナ化されたストリーミングプラットフォームであり、ブラウザーベースの Desktop as a Service です。利用できるアプリケーションはコンテナで提供され拡張性が高いです。また、セキュアな配信、ゼロトラスト、かつ独立したワークスペースを提供できます。

kasm-desktop-image.jpg

Kasm Technologies 社の Web ページにある動画を見てイメージを掴んでください。

KasmVNC

Kasm Workspaces を提供する Kasm Technologies 社はコアとなる VNC 技術を KasmVNC としてオープンソースで提供しています。

VNCの名前がついていますが、ストリーミングについては最新の技術を使い、かつセキュアに配信できることを目的としています。最新のブラウザーに対応し、ネイティブなクライアントアプリケーションは不要です。よって、マルチデバイス化も容易となります。

構成

シングルサーバーのアーキテクチャは下図になります。
image.png
シングルサーバー構成でインストールされるテクノロジースタックです。
single-server-install.jpg

この後詳細にインストールを説明するのはシングルサーバー構成ですが、スケーラブルな構成を取ることもできます。
image.png

また、DoD と NIST のガイダンスにも遵守するようドキュメント類も豊富に用意されています。

インストールで参考にした情報

Linode の YouTube チャネルの手順通り実施すれば簡単に設定できます。この後で、実際に利用したコマンドなどを説明します。

作業時間のほとんどはコンテナイメージをダウンロードする待ち時間です。Ubuntu 22.04 LTS を選択すれば全く問題なく進みます。まだ正式にサポートされていない Ubuntu 22.10 でも、数カ所手作業でトラブルシューティングしたら動きました。

日本語の紹介ページもあります。

フリーで使える Community Edition では同時接続数 5 までしか許されていません。

適切な Linode インスタンスの選択

Kasm Workspaces の Document ページでは、最小要件は 2 Core, 4GB Memory, 50GB (SSD) となっています。

今回、OS は Ubuntu 22.04 LTS を選びます。
Ubuntu-22.04LTS.jpg

Ubuntu 22.04 LTS は US Federal Government and Department of Defense でもガイドラインが出て採用されているバージョンとなっています。

Kasm が提供するドキュメントも参照ください。

動作確認するのに 4GB メモリでも十分ですが、今回は 16GB メモリのプランを選びます。

linode-config-type.jpg

Kasm Workspaces のインストール

Linode が立ち上がったら、ssh でログインします。今回はスキップしますが、本番環境では以下のページのようにセキュアな設定をしてください。

最初に環境のアップデートをします。

apt update && apt upgrade

その後、リブートしましょう。

reboot now

再起動したら、再度 ssh でログインします。その後、必要なソフトウエアをダウンロードします。まず kasm Workspaces のサイトのトップページにアクセスします。

Resources から Downloads のページに行きます。
kasm-resource-download.jpg

Kasm Workspaces のページの Downloads のリンクをコピーします。
Screen Shot 2023-01-24 at 7.09.21 PM.jpg

次に、Linode のターミナルに戻り、作業ディレクトリとして /tmp を選択します。

cd /tmp

先程、Kasm Workspaces の Downloads ページでコピーした URL を wget します。

wget https://kasm-static-content.s3.amazonaws.com/kasm_release_1.12.0.d4fd8a.tar.gz

ファイルがダウンロードされていることを確認します。

localhost:/tmp# ls -l
total 16996
-rw-r--r-- 1 root root 17376477 Nov 23 21:48 kasm_release_1.12.0.d4fd8a.tar.gz

tar ファイルを解凍します。

localhost:/tmp# tar -xf kasm_release_1.12.0.d4fd8a.tar.gz
localhost:/tmp# ls -l
total 17000
drwxr-xr-x 8 root root     4096 Jan 24 10:10 kasm_release
-rw-r--r-- 1 root root 17376477 Nov 23 21:48 kasm_release_1.12.0.d4fd8a.tar.gz

Kasm はインストールが簡単で、スクリプトファイルを動かすだけで多くの作業を実施してくれます。

localhost:/tmp# bash kasm_release/install.sh

スクリプトの終了まで数十分かかります。インストールが完成すると、Kasm Workspaces に必要なクレデンシャル情報が表示されます。この情報は漏れないように保管してください。ログイン時に必要となります。
kasm-installl-credential.jpg

次に Kasm Workspaces にアクセスするために Linode インスタンスの IP もしくはドメイン名を確認します。Cloud Manager にログインし、Linode インスタンスの Network タブから IP アドレスもしくは Reverse DNS にドメイン名を確認します。
linode-ip-address.jpg
ドメイン名の表示です。
linode-domainame.jpg

以下はドメイン名を使って、ブラウザーからアクセスしたときの TLS 証明書の警告です。まだ、TLS 証明書の設定をしていないため、ホスト名マッチが合っていないので HTTPS でアクセスしたときに警告がでています。Let's Encrypt を使えば簡単に設定できますが、今回はスキップします。警告に対して自己責任でアクセスするようにブラウザーに指示します。
kasm-ssl-cert-warning-go.jpg

Kasm Workspaces の環境作成が終了したら、是非証明書の設定をしてください。下記ページが参考になります。

ブラウザで次のようなトップ画面が表示されます。
kasm-first-view.jpg

ログイン表示画面に先程メモした admin@kasm.local ユーザーとパスワードを入力してログインします。
kasm-admin-login.jpg

次のように Admin 画面が表示されます。以下は、少し触った後の画面です。
kasm-admin-view.jpg

WORKSPACES をクリックした画面です。様々なアプリケーションが表示され、クリックするとそのアプリケーションのデスクトップが表示されます。
kasm-admin-workspace.jpg
以下は、terminal を選択した画面です。
kasm-terminal.jpg

以下は、 Chrome を選択し、その中で www.linode.com を閲覧している例です。
kasm-chrome-linode.jpg

Docker イメージ

Kasm Workspaces はデスクトップ環境で利用できるアプリケーションを Docker イメージで提供しています。

今回のインストールでは以下のイメージが見えます。

localhost:~# docker images
REPOSITORY                     TAG         IMAGE ID       CREATED         SIZE
postgres                       12-alpine   2b840024c973   2 weeks ago     237MB
kasmweb/vivaldi                1.12.0      3f0bed091267   7 weeks ago     2.62GB
kasmweb/ubuntu-focal-desktop   1.12.0      1d80eec2ae28   7 weeks ago     7.08GB
kasmweb/centos-7-desktop       1.12.0      fa2529cbcf44   7 weeks ago     3.64GB
kasmweb/chromium               1.12.0      1fceb96df8f1   7 weeks ago     2.53GB
kasmweb/tor-browser            1.12.0      2e4baba94ab3   7 weeks ago     2.51GB
kasmweb/firefox                1.12.0      f7a4cbb4a83c   7 weeks ago     2.48GB
kasmweb/chrome                 1.12.0      760f7664bd94   7 weeks ago     2.57GB
kasmweb/vs-code                1.12.0      f061ccbeb9e8   7 weeks ago     2.64GB
kasmweb/terminal               1.12.0      bbea423e8362   7 weeks ago     2.72GB
kasmweb/edge                   1.12.0      e5e1590b020e   7 weeks ago     2.75GB
kasmweb/brave                  1.12.0      a7c7f6dffc02   7 weeks ago     2.59GB
kasmweb/thunderbird            1.12.0      b34f80191856   7 weeks ago     2.47GB
kasmweb/zoom                   1.12.0      74f4bf5a54c0   7 weeks ago     2.75GB
kasmweb/libre-office           1.12.0      ee0411f694eb   7 weeks ago     3.28GB
kasmweb/vlc                    1.12.0      ab7aa323b23a   7 weeks ago     2.32GB
kasmweb/telegram               1.12.0      ecbf616718c9   7 weeks ago     2.38GB
kasmweb/sublime-text           1.12.0      9c1197305cda   7 weeks ago     2.28GB
kasmweb/teams                  1.12.0      21a5c3673fc1   7 weeks ago     2.53GB
kasmweb/signal                 1.12.0      f2b4b6ac924b   7 weeks ago     2.67GB
kasmweb/remmina                1.12.0      c14c9140ef4b   7 weeks ago     2.24GB
kasmweb/only-office            1.12.0      bf5c5d4a704e   7 weeks ago     3.1GB
kasmweb/insomnia               1.12.0      566a415371b6   7 weeks ago     2.63GB
kasmweb/gimp                   1.12.0      a2cb5e9170c4   7 weeks ago     2.33GB
kasmweb/filezilla              1.12.0      a4b2dd06cbea   7 weeks ago     2.26GB
kasmweb/discord                1.12.0      25f208eedd51   7 weeks ago     2.42GB
kasmweb/kasm-guac              1.12.0      31d58d34e81d   2 months ago    483MB
kasmweb/share                  1.12.0      12e334524f0e   2 months ago    171MB
kasmweb/agent                  1.12.0      bdb9655e9f42   2 months ago    161MB
kasmweb/api                    1.12.0      06cd165a8b8f   2 months ago    348MB
kasmweb/manager                1.12.0      3583b08011b2   2 months ago    294MB
redis                          5-alpine    7558bc54e8a2   2 months ago    22.9MB
kasmweb/nginx                  latest      95cbbc869690   15 months ago   25.3MB
hello-world                    latest      feb5d9fea6a5   16 months ago   13.3kB

コンテナの情報は admin@kasm.local でログインしたときに Admin 画面の Workspace から見えます。
kasm-admin-workspace-highlight.jpg

Kasm Workspaces の利用者が使える機能

様々な機能がありますが、パーシステント設定、音声、ファイルのアップロードとダウンロード、クリップボード、IME について簡単に紹介します。

パーシステント設定

Kasm Workspaces で起動されたアプリケーションは起動する度にリフレッシュされた新しい環境になります。もし、常時利用する開発環境として、アプリケーション内部で設定した状態を保持させる場合は、パーシステント (Persistent Profile) 機能を使います。

先程紹介した Admin 画面の Workspace から、Terminal コンテナの設定をユーザー単位でパーシステントにする場合は、Persistent Profile Path を設定することでユーザーの環境が維持できます。
persistent-profile-path.jpg
設定の詳細についてはドキュメントを参照ください。

上記例のように設定することで、ユーザーがログインした状態が Ubuntu のサーバー環境に保存されています。

localhost# pwd
/mnt/local/persistent_profile/kasm_Terminal/
localhost# ls
admin@kasm.local user@kasm.local
localhost# ls admin@kasm.local
aaa.txt  bbb.txt  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Uploads  Videos

admin@kasm.local で Kasm Workspaces にログインし、Terminal を動かしたときのホームディレクトリの構造が見えます。

また、パーシステントな状況ではなく、フレッシュな状態で使うことを、ユーザーに選択させることもできるので、とても使い勝手が良いです。以下は、Terminal アプリケーションを選択したときに表示される画面です。Persistent Profile 機能を使うか否かを選択できます。
kasm-application-selection-nonpersistent.jpg

音声

Kasm Workspaces では管理者がユーザーの権限を管理できます。例えば、音声をイネーブルにしていれば、ユーザーのセッションで音声の On/Off をブラウザーの画面に表示される操作機能(コントロールパネル)で操作できます。
kasm-sound.jpg

YouTube を見ながら音声も聞けます。

ファイルのアップロードとダウンロード

ファイルのアップロードとダウンロードもローカルコンピューターの間で簡単に操作できます。

kasm-upload.jpg

クリップボードへのコピー

ローカルホストと Kasm Workspace 内でのコピー&ペーストもできるので、使い勝手が良いですね。
kasm-clipbboard-cppy.jpg

IME

Kasm Workspace で起動したアプリケーション上で IME (Input Method Editor) も使えるので日本語入力もできます。
kasm-workspace-ime2.jpg

Ubuntu Focal Desktop コンテナの中の Chrome で日本語入力で検索した例です。
kasm-workspace-browser-ime.jpg

ユーザー管理とグループ管理

Kasm Workspaces は LDAP、SAML、OpenID にも対応しています。今回は、これらを使わない簡単なユーザー管理の例です。

ユーザー作成したあと、グループで権限管理ができます。グループを作成した後、Edit ではなく View から編集します。
kasm-group-view.jpg

グループへのユーザーの割当ができます。
kasm-group-user.jpg

グループの権限を割り当てられます。
kasm-group-setting.jpg

音声の設定をオフにした例です。
kasm-group-setting-audio.jpg

グループに利用するワークスペース(コンテナ)を割り当てられます。
kasm-group-workspace.jpg

グループ browsers に、ユーザー nosound、ワークスペース Chrome を割り当てたときのログイン画面です。
kasm-group-onlychrome.jpg

Chrome ブラウザーを立ち上げたときのコントロールパネルです。Admin で設定したように、クライアントは音声の設定ができないようになっています。
kasm-nosound-workspace.jpg

まとめ

Kasm Workspaces は Desktop as a Service に特化したソフトウエアです。Kasm Technologies 社からは、大規模ユーザーのケースや、セキュリティに敏感な組織への導入や、開発者向けのデスクトップサービスなど、たくさん情報をいただきました。Kasm Workspaces は内部で Docker を使いながら、エンドユーザーにはブラウザー経由で様々なアプリケーションにアクセスできる環境を提供しています。今回紹介した以外にも UI やコンテナのカスタマイズなど機能は豊富にあります。ドキュメント類も充実していますし、インストールも簡単ですので、一度お試しください。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?