13: 2021-08-15 (日) 21:42:25 iseki |
14: 2021-08-29 (日) 18:02:15 iseki |
| - コンテナ内:/usr/local/bin/start.sh | | - コンテナ内:/usr/local/bin/start.sh |
| -- こいつの書き換えは必須! | | -- こいつの書き換えは必須! |
- | #br | |
- | * Moodle & JupyterHub 連携 [#t72c88ce] | |
- | | |
- | ** 既存システム [#yb4a054d] | |
- | | |
- | *** [[Moodle]] [#y96f887e] | |
- | #br | |
- | *** [[Docker]] ([[CentOS8]]) [#o38fddf3] | |
- | (base) # dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | |
- | (base) # dnf -y install docker-ce docker-ce-cli containerd.io --nobest --allowerasing | |
- | (base) # systemctrl enable docker | |
- | (base) # systemctrl start docker | |
- | (base) # docker pull jupyterhub/singleuser | |
- | (base) # docker pull jupyter/datascience-notebook | |
- | #br | |
- | | |
- | *** [[Anaconda]] [#jb987bc7] | |
- | #br | |
- | | |
- | *** [[JupyterHub]]/[[DockerSpawner>JupyterHub/DockerSpawner]] [#z52a6900] | |
- | (base) # conda create -n jupyterhub python=3.8 -y | |
- | (base) # conda activate jupyterhub | |
- | (jupyterhub) # conda install -c conda-forge notebook -y | |
- | (jupyterhub) # conda install -c conda-forge jupyterlab -y | |
- | (jupyterhub) # conda install -c conda-forge jupyterhub==1.4.2 -y | |
- | (jupyterhub) # conda install -c conda-forge voila -y | |
- | (jupyterhub) # conda install jupyter_client -y | |
- | (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/dockerspawner.git | |
- | - 作業ディレクトリ | |
- | -- mkdir -p /var/lib/jupyterhub/ | |
- | - FireWall | |
- | -- firewall-cmd --add-port 8000/tcp --permanent | |
- | -- firewall-cmd --reload | |
- | | |
- | - vi jupyterhub_config.py | |
- | -- IPアドレス,サーバ証明書,Dockerイメージの選択 | |
- | - 起動 | |
- | -- conda activate jupyterhub | |
- | -- jupyterhub -f jupyterhub_config.py | |
- | #br | |
- | | |
- | ** 少し特殊なシステム [#e4866905] | |
- | *** [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] [#m07110de] | |
- | - JupyterHub の DockerSpawner を継承. | |
- | -- システムのユーザを使用可能. | |
- | -- システムのユーザのホーム領域をマウント可能. | |
- | | |
- | - 2021 7/12 版(それ以降)推奨 | |
- | - https://github.com/jupyterhub/dockerspawner/blob/master/dockerspawner/systemuserspawner.py | |
- | - DockerSpawner のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) | |
- | #br | |
- | | |
- | **** [[altfiles>NSS]] [#n90bdca5] | |
- | - SystemUserSpawner 用の [[NSS]] を使用した システムのユーザ情報の入手方法([[LDAP]] を使用する手段もある) | |
- | - getent passwd と getent group で情報が取れるようになれば OK | |
- | | |
- | # git clone https://github.com/aperezdc/nss-altfiles.git | |
- | # cd nss-altfiles/ | |
- | # ./configure --prefix=/usr --datadir=/usr/local/etc --with-type=pwd,grp | |
- | # make | |
- | # make install | |
- | # ln -s /usr/lib/libnss_altfiles.so.2 /usr/lib64/libnss_altfiles.so | |
- | # ldconfig | |
- | | |
- | # cd /usr/local/etc | |
- | # wget https://el.mml.tuis.ac.jp/system/passwd | |
- | # wget https://el.mml.tuis.ac.jp/system/group (group は 必要な物だけ /etc/group を編集しても良い) | |
- | | |
- | - /etc/nsswitch.conf | |
- | passwd: files altfiles | |
- | group: files altfiles | |
- | - ユーザアカウントの整合性を取る. | |
- | #br | |
- | | |
- | **** [[LTI>JupyterHub#m4467ad6]] [#g284e3bf] | |
- | - Moodle と連携する為の 認証モジュール | |
- | - pip install jupyterhub-ltiauthenticator | |
- | - cd ......./ltiauthenticator | |
- | - patch -p1 < ~/mdldockerspawner/ltiauthenticator-1.0.0.path | |
- | #br | |
- | | |
- | **** cull_idle_servers.py [#n8a3f52c] | |
- | - 接続の切れた docker コンテナを削除 | |
- | - [[cull_idle_servers>JupyterHub/DockerSpawner#zc9428f7]] | |
- | - https://github.com/jupyterhub/jupyterhub/tree/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle | |
- | - wget で DLして /usr/local/bin にコピー | |
- | -- wget https://raw.githubusercontent.com/jupyterhub/jupyterhub/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle/cull_idle_servers.py | |
- | #br | |
- | | |
- | ** 独自拡張 [#ma810a39] | |
- | | |
- | *** [[MSLDockerSpawner>JupyterHub/MDLDockerSpawner]] [#k758b918] | |
- | - [[Moodle]] と [[JupyterHub]] の連携をとるための Spawner クラス. | |
- | - [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] クラスを継承. | |
- | - 現時点(2021/08)では jupyterhub_config.py の中で実装 | |
- | #br | |
- | | |
- | **** 機能 [#o44dc5d5] | |
- | - ユーザグループ機能の完全サポート | |
- | - Moodle からの LTI カスタムパラメータの受信して動作. | |
- | - start.sh による Jupyter Lab/Notebook コンテナの動作制御. | |
- | -- 教師ユーザと学生ユーザの分離. | |
- | -- ユーザ毎の Volume のマウント,及びアクセス権(教師と学生)の設定. | |
- | --- 教材の配布と収集に便利 | |
- | -- Volume への任意名でのアクセス. | |
- | -- 起動イメージのリモート選択. | |
- | -- 起動 URL(Lab/Notebook)のリモート選択. | |
- | | |
- | #br | |
- | | |
- | **** 起動 [#bdc8edbc] | |
- | - jupyterhub -f mdldockerspawner/jupyterhub_config.py | |
- | #br | |
- | | |
- | *** [[mod_mdlds]] [#hbfc4f2f] | |
- | - MDLDockerSpawner サポート用 Moodleモジュール | |
- | #br | |
- | **** 機能 [#m538ed2a] | |
- | - LTI のカスタムパラメータ管理 | |
- | - Docker(リモート)のサポート | |
- | -- Volume 管理(表示:削除) | |
- | - WebService | |
- | -- feserver (feplg_nbws.so)からのデータを xmlrpc で受信し,データベースに格納 | |
- | --データベースのデータ利用については検討中 | |
- | #br | |
- | | |
- | *** [[feserver]] [#va0d030b] | |
- | - feserver フロントエンドサーバ(TCP中継サーバ) | |
- | - MITM 的動作を行う私的試験用ツール.(一応公開もしている) | |
- | - 各種モジュールを読み込むことにより,色々な通信データの処理が可能. | |
- | - コンパイルに [[JunkBox_Lib]] が必要 | |
- | #br | |
- | | |
- | **** feplg_nbws.so モジュール [#abc6a346] | |
- | - Moodle と JupyterHub の中間に於いて,通信情報を収集して Moodle に返すためのモジュール | |
- | - JupyterHub から見ると,リバースプロキシのように見える. | |
- | - 機能 | |
- | -- WebSocket 通信の解析. | |
- | -- HTTP通信の解析. | |
- | -- Cookie の挿入. | |
- | -- Moodle への xmlrpc 通信. | |
- | | |
- | - 起動例 | |
- | -- ./fesvr -h 172.22.1.75:8000 -p 9000 -m ./feplg_nbws.so -c -s --conf ./nbsw.conf | |
| #br | | #br |