flagflag  If you want to see English page, please click "English" Button at Left.
  • ソース を表示
  • Moodle+JupyterHub は削除されています。
13: 2021-09-05 (日) 00:18:15 iseki ソース 現: 1970-01-01 (木) 18:00:00 ソース
Line 1: Line 1:
-* Moodle & JupyterHub 連携 [#t72c88ce] 
-- LTI カスタムパラメータを使用した Moodle + JupyterHub 連携を研究中 
-- iseki@rsch.tuis.ac.jp 
-- [[Moodle]] 
-- [[JupyterHub]] 
-- [[Docker]] 
-- [[LTI]] 
-- [[LTI Hack>Moodle/Moodle-LTI]] 
- 
-- [[MDLDockerSpawner>JupyterHub/MDLDockerS​pawner]] 
-- [[mod_mdlds]] 
--  [[feserver]] 
-#br 
- 
-** 既存システム [#yb4a054d] 
- 
-*** [[Moodle]] [#y96f887e] 
-- Moodle 3.5以上(それ未満でも動くかもしれない.要 LTIサポート) 
-- JupyterHub が動くホストとは別のホストでもOK 
-- 外部サービス,Webサービスを使用する. 
-#br 
- 
-**** 外部サービス [#ia78ee48] 
-- LTI 認証モジュールと連携して SSOを実現する. 
-- 管理者IDで,「サイト管理」=> 「プラグイン」=> 「外部ツール:ツールを管理する」(=>「ツールを手動設定する」) 
--- デフォルト起動コンテナは「新しいウィンドウ」にする. 
-#br 
- 
-**** Webサービス [#k4138c47] 
-- Feserver からの XML-RPC を受け入れて,データをDBに格納する. 
-#br 
- 
-*** [[Docker]] [#cd2ef212] 
-**** CentOS8 [#ufeb99f8] 
- (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 
- 
-*** [[JupyterHub]]/[[SystemUserSpawner>Jupyt​erHub/SystemUserSpawner]]  [#z52a6900] 
-**** [[JupyterHub]] [#m57f62f0] 
- (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/docker​spawner.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 
- 
-****  [[SystemUserSpawner>JupyterHub/SystemUse​rSpawner]]  [#m07110de] 
-- JupyterHub の DockerSpawner を継承. 
--- システムのユーザを使用可能. 
--- システムのユーザのホーム領域をマウント可能. 
- 
-- 2021 7/12(またはそれ以降) 版推奨 
-- https://github.com/jupyterhub/dockerspaw​ner/blob/master/dockerspawner/systemuser​spawner.py 
-- JupyterHub のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) 
- 
-- SystemUserSpawner を動かすには /etc/passwd(/etc/group) 情報が必要 
--- LDAP か下記の altfiles を使用する 
-#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]] [#g284e3bf] 
-- Moodle と連携する為の 認証モジュール(Moodleの外部サービスを使用) 
-- 先に authlib を入れておく. 
--- conda install oauthlib 
- 
-- v1.2.0 release (2021 9/2) 
--- https://pypi.org/project/jupyterhub-ltia​uthenticator/1.2.0/ 
--- Patch 不要 
- 
- (jupyterhub)# pip install jupyterhub-ltiauthenticator==1.2.0 
- 
-- Jupyterhub_conifg.py 
- 
- # for LTI v1.2.0 
- c.JupyterHub.authenticator_class = 'ltiauthenticator.LTIAuthenticator' 
- c.LTI11Authenticator.consumers = { 
-   "b18e82ec683724743236fade71350720029a2914​4a585c66f6741d8e9c6e0d83" : "c0fe2924dbb0f4701d898d36aaf9fd89c7a3ed3a​7db6f0003d0e825a7eccb41c" 
- } 
- c.LTI11Authenticator.username_key = 'ext_user_username' 
- 
-***** old [#i7f50c71] 
-- ltiauthenticator-1.0.0.path は MDLDockerSpanwer に同梱 
- pip install jupyterhub-ltiauthenticator 
- cd ......./ltiauthenticator 
- patch -p1 < ~/mdldockerspawner/etc/ltiauthenticator-​1.0.0.path 
-#br 
- 
-**** cull_idle_servers.py [#n8a3f52c] 
-- [[cull_idle_servers>JupyterHub/DockerSpa​wner#zc9428f7]] 
-- 接続の切れた docker コンテナを削除 
- 
-- https://github.com/jupyterhub/jupyterhub​/tree/a6b7e303df03865d6420f6bccdf627b39f​1d0dc1/examples/cull-idle 
-- wget で DLして /usr/local/bin にコピー 
--- wget https://raw.githubusercontent.com/jupyte​rhub/jupyterhub/a6b7e303df03865d6420f6bc​cdf627b39f1d0dc1/examples/cull-idle/cull​_idle_servers.py 
-#br 
- 
-** 連携拡張 by [[NSL]] [#ma810a39] 
-- MS Windows のことは何も考慮していませんので,MS Windowsでは多分動きません. 
-#br 
- 
-*** [[MDLDockerSpawner>JupyterHub/MDLDockerS​pawner]] [#k758b918] 
-- https://gitlab.nsl.tuis.ac.jp/iseki/mdld​ockerspawner 
- 
-- [[Moodle]] と [[JupyterHub]] の連携をとるための Spawner クラス. 
-- [[SystemUserSpawner>JupyterHub/SystemUse​rSpawner]] クラスを継承. 
-- 現時点(2021/08)では jupyterhub_config.py  の中で実装 
-#br 
- 
-**** 機能 [#o44dc5d5] 
-- ユーザグループ機能の完全サポート 
-- Moodle からの LTI カスタムパラメータを受信して動作. 
-- 環境変数を使用した start.sh による Jupyter Lab/Notebook コンテナの動作制御. 
-#br 
-- 教師ユーザと学生ユーザの分離. 
-- ユーザ毎の Volume のマウント,及びアクセス権(教師と学生)の設定. 
--- 教材の配布と収集に便利 
-- Volume への任意名でのアクセス. 
-- 起動イメージのリモート選択.Jupyter Lab/Notebook でないイメージを選択すると漏れなく死にます :-o 
-- 起動 URL(Lab/Notebook)のリモート選択. 
-- iframe サポート 
-#br 
- 
-**** Volume 名に関する制約 [#q7b847fc] 
-- ボリューム名には小文字のアルファベット・数字以外は使用できない.特殊文字も使用できない. 
-- 大文字のボリューム名は小文字に変換される. 
-- 同じボリューム名・アクセス名を指定した場合は,最初の物が優先される. 
-- 一個の JupyterHub に対して複数の Moodle からのアクセスをサポート 
- 
-#br 
- 
-**** 注意事項 [#n57178a3] 
-- Moodle で埋め込み(iframe)表示を行う場合は,Moodle と JupyterHub を同じホストにするか,Moodle のホスト上で feserver を動かす. 
-#br 
- 
-**** 起動 [#bdc8edbc] 
-- jupyterhub -f mdldockerspawner/etc/jupyterhub_config.p​y 
-#br 
- 
-*** [[mod_mdlds]]  [#hbfc4f2f] 
-- https://gitlab.nsl.tuis.ac.jp/iseki/mod_​mdlds 
- 
-- MDLDockerSpawner サポート用 Moodleモジュール 
- 
-- docker のリモート制御について 
--- docker クライアント(/usr/bin/docker)が必要 
--- dockerd が動いているホストに ssh できる,ホスト上のユーザ(dockerグループに所属)が必要 
-#br 
- 
-**** 機能 [#m538ed2a] 
-- LTI のカスタムパラメータ管理 
-- Docker のリモート制御 
--- イメージの一覧の取得 
--- Volume 管理(作成,表示,削除) 
-- WebService 
--- feserver (feplg_nbws.so)からのデータを XML-RPC で受信し,データベースに格納 
--- データ利用については ''&font(Red){未実装};''. 
-- https://docs.moodle.org/dev/Charts_API 
- 
-#br 
- 
-*** [[feserver]]  [#va0d030b] 
-- http://www.nsl.tuis.ac.jp/svn/linux/fese​rver/trunk 
- 
-- feserver フロントエンドサーバ(TCP中継サーバ) 
-- MITM 的動作を行う私的試験用ツール.(一応公開もしている) 
-- 各種モジュールを読み込むことにより,色々な通信データの処理が可能. 
-- コンパイルに [[JunkBox_Lib]] が必要 
-#br 
-**** 起動例 [#d9e04c03] 
--  ./fesvr -h 172.22.1.75:8000 -p 9000 -m feplg_nbws.so -c -s --conf nbsw.conf 
- 
-- Usage... ./fesvr -h host_name[:port] -p port -m module_path [-s] [-c] [-i] [-u user] [-f pid_file] [-d]  [--conf config_file]  [--cert cert_file] [--key key_file] 
--- -h : サーバFQDN + ポート番号.サーバのポート番号を省略した場合は,ローカルポートの番号と同じになる.必須 
--- -p : ローカルポート番号.必須 
--- -m : 処理モジュール.必須 
--- -u : 実効ユーザ名 
--- -i : デーモンモードを無効化.スーパデーモン経由で使用する場合に指定する 
--- -d : デバッグモード.喧しモード. 
--- -s : サーバに対してSSL/TLS接続になる(fesrv はSSL/TLSクライアントとなる).サーバ証明書の検証は行わない. 
--- -c : クライアントに対してSSL/TLS接続になる(fesrv はSSL/TLSサーバとなる). 
--- --conf : 設定ファイル指定 
--- --cert : -c を指定した場合のサーバ証明書:PEM形式.  デフォルトは /etc/pki/tls/certs/postfix.pem 
--- --key  : -c を指定した場合のサーバの秘密鍵:PEM形式.デフォルトは /etc/pki/tls/private/postfix.key 
-#br 
- 
-**** feplg_nbws.so モジュール [#abc6a346] 
-- Moodle と JupyterHub の中間に位置し,通信情報(主に WebSocktの通信情報)を収集して XML-RPC で Moodle に返すためのモジュール 
-- ユーザから見ると,リバースプロキシのように見える. 
-- 機能 
--- 通信の中継 
--- WebSocket 通信の解析. 
--- HTTP(S)通信の解析. 
--- Cookie の挿入. 
--- Moodle への XML-RPC 通信.(MoodleのWebサービスを使用) 
-#br 
- 
-***** feplg_nbws.so の 設定ファイル [#jce86de4] 
-- Moodle_Host = XML-RPC を行うホスト名(FQDNまたはIPアドレス).デフォルトは localhost 
-- Moodle_Port = XML-RPC を行うホストのポート番号.デフォルトは 80 
-- Moodle_TLS = XML-RPC を行う際に HTTPS を使用するかどうか.デフォルトは FALSE. 
--- 注:HTTPS通信を行う場合,相手(Moodleホスト)のサーバ証明書は検証しない. 
-- Moodle_URL = XML-RPC を行うURLのディレクトリ情報.デフォルトは /webservice/xmlrpc/server.php 
-- Moodle_Token = Moodle から発行されたトークン.下記参照(必須) 
-- Moodle_DBAns = XML-RPC を行った場合の返答を表示するかどうか.デバッグ用.デフォルトは FALSE 
-- Moodle_Servide = XML-RPC のサービス名.デフォルトから変更する必要はない.変更すると動かなくなる.デバッグ用.デフォルトは mod_mdlds_write_nbdata 
-- Moodle_HTTP = XML-RPC を行う際の HTTPのプロトコルバージョン.1.1 か 1.0 を指定.多分 1.1 で問題ない.デフォルトは 1.1 
-#br 
-- 以下,各モジュール共通の設定.コマンドラインで指定した場合は,そちらが優先. 
--- Fesvr_Server_Cert = Feserver 本体用の設定.HTTPS通信を行う場合のサーバ証明書(PEM形式) 
---- デフォルトは /etc/pki/tls/certs/postfix.pem 
--- Fesvr_Private_Key = Feserver 本体用の設定.HTTPS通信を行う場合の秘密鍵ファイル(PEM形式) 
----デフォルトは /etc/pki/tls/private/postfix.key 
- 
-#br 
- 
-***** Moodle 側の設定 (Webサービスを利用するためのトークンの取得)[#a1c43efd] 
-+  管理者IDで「サイト設定」 -> 「プラグイン」 -> 「ウェブサービス」 -> 「外部サービス」 
-++ 「Jupyter Lab/Notebook Data」の項目を確認 
-++ 「Jupyter Lab/Notebook Data」の 「許可ユーザ」をクリック 
-+++ 適当なユーザ(教師ロールのユーザ)を選択し,許可ユーザとする 
-+ ウェブサービスのメニューまで戻って,「トークンを管理する」を選択. 
-++ 「追加」をクリック. 
-+++ ユーザ名に先程選択したユーザ名を入れる. 
-+++ サービスは「Jupyter Lab/Notebook Data」を選択 
-+++ 「変更を保存する」をクリック 
-++ 「トークンを管理する」まで戻ると,ユーザ用のトークンができているので,それをコピーする. 
-++ トークンは feplg_nbws の設定ファイルの Moodle_Token に設定する. 
- 
-#br 
- 
-*** ipynb_conv [#b15438d1] 
-- ipynb ファイルの(コード)タグに解析用の通し番号を入れるツール 
-- MDLDockerSpawner に同梱(C言語) 
-- phpバージョンもあり (現時点で使用予定なし.サンプルコード.) 
-#br 
- 
-*** Jupyter Lab/Notebook コンテナイメージ [#qc8d3ed8] 
-- 機能を全て利用するには,専用の(''start.sh'' を入れ替えた)コンテナイメージが必要. 
-- MDLDockerSpawner に Dokerfile 同梱 
-- [[JupyterHub/devel]] 
-#br 
-- start.sh 入れ替え後でも,通常の DockerSpanwer で問題なく起動できるようにしたい(下位互換性) 
-#br 


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2025年 7月翌月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
<今日>

オンライン状況

58 人のユーザが現在オンラインです。 (6 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 58

もっと...

アクセスカウンタ

今日 : 3982398239823982
昨日 : 9855985598559855
総計 : 2742618727426187274261872742618727426187274261872742618727426187
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com