Hyper-V に Ubuntu 22.04 LTS を入れて RStudio Server を利用していたけど、SSH のところで引っかかって、手元の Laptop PC から繋げなくなったりした。
ネット上のトラブルシューティングは色々試してみたけど、後一歩 work せず、「これを使うにはちょっと知識不足だなー。」と感じて一旦リセット。ネットワークエンジニアリング的な事を調べる事自体は楽しいけど、時間を使いすぎて本業に影響がきそうなので、今回は一旦箸休め。
で、それらを調べるうちに、「やっぱり Docker の方が使いやすそうだな-。」と思い、Docker で構築し直す事に。
やってみたら驚くほど簡単にできたので、忘れないうちにメモメモ。
コンテナ型仮想化システムの一つ。 ホストOS(私の場合は Windows)にコンテナ型エンジンと呼ばれる仮想化ソフトウェアをインストールし、その上にイメージを置くことで、複数のアプリケーションを同じOS上で動かす。 アプリケーションやソフトウェアを実行環境と共にコンテナイメージとして包括することから、コンテナ型と呼ばれる。 1つのOSで稼働するので、プロセッサやメモリの消費が少なく、ストレージの使用も僅か。 コンテナイメージやソフトウェアそのものが軽量で、立ち上がりも速い。 |
仮想化・仮想マシンについての覚書。 仮想化 (Virtualization) とは 仮想化とは、物理的な環境にとらわれることなく、ハードウェアに含まれるCPU、メモリなどのリソースを倫理的に分割・統合する技術のことで、サ …
Docker で RStudio Server を使えるようにする
RStudio Server は、Linux で動く。
Linuxについての覚書。 Linux とは Linux とは、Windows や Mac OS と同じ Operating system (OS) の一種。 Windows や Mac OS などの OS は有料だけど …
私の使っている OS は Windows なので、Docker Desktop を使用するためには Hyper-V を有効化する必要がある。
仮想化・仮想マシンについての覚書。 仮想化 (Virtualization) とは 仮想化とは、物理的な環境にとらわれることなく、ハードウェアに含まれるCPU、メモリなどのリソースを倫理的に分割・統合する技術のことで、サ …
今回は下記の方法で環境構築。
- ローカルサーバのスペック
- OS: Microsoft Windows 11 Pro
- System Type: x64-based PC
- Processor: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz, 3504 Mhz, 6 Core(s), 12 Logical Processors
- Total Physical Memory (RAM): 63.7 GB
- Total Virtual Memory 73.2 GB
- 仮想マシン:Hyper-V
- Hyper-Vの有効化
- Docker Desktop for Windows をインストール
- Docker Desktop の設定
Hyper-V の有効化
Hyper-Vを有効化するための条件
Hyper-Vを有効化するためには、下記2点が必要。
- Windows 11 Proがインストールされていること
- BIOSにて仮想化が有効化されていること
BIOSで仮想化が有効化する方法は下記。
- 起動時にEsc or F1キーを押下して、BIOSを表示。
- BIOSのAdvancedタブへ。
- Advancedにある CPU configuration を押下。
- CPU configuration にある Intel Virtualization Technology を Enabled にする。
- Save して再起動。
Hyper-Vの有効化
Win → Settings を選択
Application → Optional features を選択
下の方にある "MoreWindows features" を選択
Windows Features の画面が出てくるので、Hyper-V の項目を表示し、チェックを入れて有効化し、OKを選択
しばらく required files を探した後で……
再起動
Control Panel → System and Security → Windows Tools で Hyper-V Manager と Hyper-V Quick Create が入っている事を確認。
試しに Hyper-V Manager を起動させると、初期画面が出てきた。
まだ何も入っていない。
Docker のインストール
Windows 用の Docker Desktop をインストールする。
Docker Desktop for Windows のインストール
docker docs のサイトで Docker Desktop for Windows をインストール
Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.
Unpacking files...
Configuration が出てくるので、2つともチェックが入った状態で "OK"
インストールできたら、Close で終了。
インストール後、デスクトップに Docker Desktop のアイコンが作成された。
Win で Docker を検索し、Docker Desktop を選択してもOK。
実行。あらゆる端末ウインドウからアクセスできる。
RStudio イメージの取得
rocker におまかせ
The Rocker Project の方々のお陰で、私レベルの人でも簡単に RStucio Server が使えるようになった(ありがとうごございます!)。
rocker は RStudio Server を含む Debian ベースの Docker イメージ。
作ってくれている Dockerfile は、下記色々。
Docker file | 特徴 |
---|---|
rocker/r-ver | r-base のイメージ。Ubuntu LTSで構築。以下のイメージはすべて r-ver を元に作られている。 |
rocker/rstudio | rocker-ver をベースに作られており、RStudio Server がインストール済み。 |
rocker/tidyverse | rocker/rstudioに加えて、下記Rパッケージがインストール済み。
|
rocker/verse | Tex Live がインストール済み。rocker/tidyverse のパッケージに加えて、いくつかの publishing パッケージもインストール済み。 |
rocker/geospatial | rocker/verse のパッケージに加えて、geospatial Rパッケージ関係がインストール済み。 |
私の使用内容を考えて、今回は rocker/tidyverse を選択した。
(以下は、rocker/rstudioをインストールした時のキャプチャ。)
Win + R -> cmd でコマンドプロンプト(もしくは Powershell)を起動し、rocker を入れる
Win + R -> 検索欄に "cmd" と入れて、コマンドプロンプトを開く。
(もしくは Win -> "Powershell" で Powershell を開いてもOK。)
コマンドプロンプトが開く。
で、下記コマンドを実行。
docker run --rm -p 8787:8787 -e PASSWORD=パスワード(自分で設定) --name コンテナ名(自分で設定) rocker/rstudio
Enter を押すと、"Unable to find image 'rocker/rstudio:latest' locally" と出てくるが、ネット上から探してダウンロードしてくれる。
Docker の Images の欄を見ると、"rocker/rstudio" が入っていて、
Containersの欄を見ると、自分で名付けたコンテナが入っていた(イメージはrocker/rstudio、ポートは8787)。
ブラウザからログイン
上記で設定は終了し、後はブラウザからアクセスできる(簡単すぎる!)。
Localhost でログイン
ブラウザを立ち上げ、アドレス欄に localhost:8787
と入れると、ユーザーIDとパスワードを要求する画面が出てくる。
- Username: rstudio
- Password: 自分で設定したパスワード
を入れると、RStudio Server が立ち上がる。
上記は Google Chrome で立ち上げた時のキャプチャ。デフォルトと色が違うのは、すぐに Tools -> Global Options... -> Appearance でテーマを変えたから。
RStudioの画面は、デフォルトでは白いバックグラウンドになっている これを、私の好きなDark colorに変更する方法 1. Tools -> Global Options -> Appe …
後は、デスクトップ版の RStudio と同じように、必要なパッケージをインストールし、使用できる。
PC内においてあるファイルのアップロードなども右下の "Files" から可能(もちろん、コンソールからも取り込み可能)。
詳細は "RStudio Cloud" の記事で。
私は、自宅PCと職場PCの2箇所でRStudioを利用していますが、時々データをクラウドに上げ忘れたりして困る事があります。 リモート接続で自宅PC⇔職場PCに入り、リモートでデータをクラウドに上げる、という方法で対処し …
IPアドレスでログイン
別のPCからログインする時は、 http://ローカルPCのIPアドレス:8787
で接続する。
IP アドレスの取得方法
コマンドプロンプト、もしくは Powershell を開き、 ipconfig
と入れると、IPアドレスが表示される。
PS C:\Users\XXX> ipconfig
Windows IP Configuration
Ethernet adapter イーサネット:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : feXX::dXXc:ebXX:dXX:aXXa%XX
IPv4 Address. . . . . . . . . . . : XXX.XXX.XXX.XXX
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : XXX.XXX.XXX.XXX
Wireless LAN adapter ローカル エリア接続* 15:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter ローカル エリア接続* 16:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Wi-Fi 4:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter vEthernet (Default Switch):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : feXX::dXXc:ebXX:dXX:aXXa%XX
IPv4 Address. . . . . . . . . . . : XXX.XXX.XXX.XXX
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : feXX::dXXc:ebXX:dXX:aXXa%X
IPv4 Address. . . . . . . . . . . : XXX.XXX.XXX.XXX
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
上段はデフォルトのIPアドレス。下段は Hyper-V のIPアドレス。
今回は、上段 "Ethernet adapter" の "IPv4 Address: XXX.XXX.XXX.XXX" が求めているアドレス。
Linux で IP アドレスを確認する方法をメモったので、 ついでにWindowsのも書き留めておく。 コマンドプロンプトを使ってIPアドレスの情報を取得 Win + R で "Run" ウィンドウを開く。 検索欄に …
IPアドレスは、ローカル PC を再起動するたびに新しく割り振られ、その度に接続先も変える必要がでてくるので、ローカルPCのIPアドレスは固定にしておいた方が良い。
リモートアクセスなどで、特定のポートのみファイアウォールでブロックされないようにする方法。 使用している OS は Windows 11。 IP アドレスの固定 一般的に使用している IP アドレスは、通常ルーターによっ …
ネットワーク外からインターネットを使ってログイン
RStudio Server の醍醐味はどこからでもアクセスできること。
ただこの場合は、リモートアクセスを有効にしておく必要があり、多少の準備が必要。
- グローバルIPアドレスの取得
- ルーターの設定
- Windowsのファイアウォール設定
グローバルIPアドレスの取得
まずは、使っているインターネット回線のプロバイダがグローバルIPアドレスを配布してくれるかどうか確認する。
外部からインターネットを通してリモート接続したい場合、WAN(Internet)側IPアドレスにはグローバルIPアドレスが割り振られる必要がある。 けれども、CATVやマンションなどのインターネットサービスで、割り振られ …
私のマンションが契約しているインターネット回線のプロバイダはプライベートIPアドレスのみを配布していたので、追加料金を払って固定グローバルIPアドレスを配布してもらった。
先日、アパートで契約しているインターネットプロバイダではポート開放ができない事が判明。 「やっぱ光回線とかに契約しないとかなー。」 と考えたけど、今のネット回線でそこまで不自由していないし、リモート回線のために新たに契約 …
ルーターの設定
ルーターを使っていない場合はこの項目は必要なし。
私はルーターにBuffaloを使用しているので、いくつか設定が必要だった。
固定グローバルIPアドレスの割り当て
固定グローバルIPアドレスをもらったら、Buffaloの設定サイトに入って、IPアドレスを割り当てる。
Webブラウザを開き、アドレスバーに "プライベートIPアドレス/login.html" と入れる。
プライベートIPアドレスの確認方法は下記。
リモートアクセスなどで、特定のポートのみファイアウォールでブロックされないようにする方法。 使用している OS は Windows 11。 IP アドレスの固定 一般的に使用している IP アドレスは、通常ルーターによっ …
Buffaloの設定ログイン画面が出てくるので、
- ユーザー名:admin
- パスワード:ルーターの裏に書いてあるパスワード
を入れてログイン。
左側のタブから "インターネット" を選択し、下記を入力していく。
- IPアドレス取得方法:手動設定
- IPアドレス:取得したグローバルIPアドレス
- サブネットマスク:取得したグローバルIPアドレスのサブネットマスク
- 拡張設定
- デフォルトゲートウェイ:取得したグローバルIPアドレスのデフォルトゲートウェイ
- DNSサーバーアドレス:プライマリー、セカンダリー共に、取得したグローバルIPアドレスの情報を元に入力
最後に "設定" を押して終了。
ポートマッピング
左側のタブから "ポート変換" を選択。
"プロトコル" → TCP/UDP を選択肢、"任意のTCPポート" にしてから "8787" と入れる。(リモート・デスクトップで使用するポート番号)
設定ができたら "新規追加" をクリック。
"ポート変換登録情報" のところに新たに8787ポートが追加された。
Windowsのポートの開放
Windows11ファイアウォールで、8787の通信を許可するように設定する。
Win -> firewall と入れ、Windows Defender Firewall with Advanced Security を開く。
左側の欄で "Inbound Role" を選択し、右側の欄で "New Role" を選択する。
"Rule Type" -> "Port" を選択して "Next"。
"Protocol and Ports" -> "TCP" を選択し、開放したいポート番号(今回は8787)を入力する。
"Action" -> "Allow the connection" を選択し、"Next"。
"Profile" -> "Domain", "Private", "Public" すべてにチェックをいれ、"Next"。
ルールの名前とそのルールの説明を簡単に記載し、"Finish"。
ポート開放のルールが適応される。
いよいよ接続
上記のような準備が終わったら、別のネットワークから接続してみる。
Webブラウザを開き、アドレスバーに "http://グローバルIPアドレス:8787.html" と入れる。
Username と Password を要求されるので、
- Username: rstudio
- Password: 自分で設定したパスワード
を入れると……
RStudio Server が立ち上がる。
References
Windows, Mac に Docker Desktop インストールのためのシステム要件とその確認方法をまとめました。
Rでプログラミングを行うとき、 便利な統合開発環境を提供してくれるのがRstudioです。 Rstudioではグラフの描画とコーディングを同じウィンドウ内で完結でき、 コード打ちと結果の確認がシームレスに行えて非常に捗ります。 そんなRstudioをサーバーサイドで動作させるのが、 Rstudio Serverです。 つまり、サーバーでRstudioをホスティングして、 サーバーにアクセスしたクライアントに Rstudioの利用を提供することができます。 どういうメリットがあるのでしょうか。 メリット 計算端末と操作端末の分離 プログラミング環境の再利用 リモートデスクトップよりサクサクなリモ…
Docker Containers for the R Environment
背景 RStudioのデスクトップアプリは各種OSに対応していますが、OS固有の問題(Windowsだと文字コード周りでエラーが出やすいなど)があります。また、どの端末からも同じ環境で使用できると便利です。 RStudio Se...
まず初めに。リモートデスクトップ接続をするにあたり設定したものはこちらリモートデスクトップの接続を許可する方法 ( Windows 10 )外部からの操作を許…
Rstudio serverをWindows10で動かします。勉強会参加者に自宅マシン上のRstudio serverを開放して使ってもらう為、複数のユーザーアカウントを設定して、インターネットからアクセスできるようにしてみました。 ...