【R】リバースプロキシ+ Dockerを使ったRstudio Serverのインストールと初期設定

2024-03-10

DockerでセットアップしたRstudio Serverにリバースプロキシ(YunoHost)でアクセスする手順です。もちろんHTTPSでアクセスできるので、LAN内でもインターネット経由でも安心していつもと同じ分析環境にアクセスできます。

前提条件

Shiny ServreはDockerを使って自宅サーバーで稼働(Docker Engineはインストール済み)。

VPSのYunohostでリバースプロキシ(SSL終端)

Rsutdio ServerをインストールするサブドメインのSSL証明書はYunoHostで設定を済ませておきます。

導入手順

rocker/rstudio4.3.2で作成。

Rのバージョンが4未満(~3.6)の場合はDockerfileやパスワードの変更が必要です。

Dockerfileの作成

Dockerfileと日本語環境の構築

FROM rocker/rstudio:4.3.2

LABEL org.opencontainers.image.licenses="GPL-2.0-or-later" \
      org.opencontainers.image.source="https://github.com/rocker-org/rocker-versioned2" \
      org.opencontainers.image.vendor="Rocker Project" \
      org.opencontainers.image.authors="Carl Boettiger <cboettig@ropensci.org>"

ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
RUN sed -i '$d' /etc/locale.gen \
  && echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen \
    && locale-gen ja_JP.UTF-8 \
    && /usr/sbin/update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
RUN /bin/bash -c "source /etc/default/locale"
RUN ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# 日本語フォントをインストールする
RUN apt update && apt install -y \
  fonts-ipaexfont \
  fonts-noto-cjk

docker-compose.ymlの作成

ポート番号の変更やデータのやり取りが簡単になるようにローカルボリュームをマウント。

version: '3'
services:
  rstudio:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    container_name: rstudio4.3.2
    environment:
      #任意のパスワードを設定する
      - PASSWORD=rstudio
    ports:
      - 8787:8787
    volumes:
      - ./volume:/home/rstudio
      - ./site-library:/usr/local/lib/R/site-library
    tty: true
    stdin_open: true

コンテナを起動

sudo docker compose up -d

nginxの設定ファイル(YunoHost)

シンプルに、サーバーのIPアドレスとポートを指定しているだけの設定です。

rewrite ^/rstudio4.3.2$ /rstudio4.3.2/ permanent;
location /rstudio4.3.2/ {
  proxy_pass        http://自宅サーバーのIPアドレス:ポート番号/;

  include conf.d/yunohost_panel.conf.inc;
}

動作確認

ブラウザからRstudioのインストールドメイン・サブディレクトリにアクセスして動作確認をします。

YunoHostのアプリケーションパネル

Rstudioのログイン画面

ユーザー名を指定していないので、初期設定の「rstudio」のままです。パスワードはdocker-compose.ymlで指定したパスワードを入力します。

ログイン後

日本語フォントもインストールされています。

インストールしたパッケージの保存先

docker-compose.ymlの保存ディレクトリ/site-library/

Windowsでの表示画面ですが、ローカルボリュームに保存されています。

データフォルダ

docker-compose.ymlの保存ディレクトリ/volume/

ローカルボリュームに必要なファイルをコピーすれば、Rstudioから使用できます。