#author("2025-06-04T05:24:37+00:00","default:iseki","iseki") #author("2025-06-04T05:25:52+00:00","default:iseki","iseki") ** 概要 [#k3dd6a2c] - JupyterHub の [[''configurable-http-proxy''>https://github.com/jupyterhub/configurable-http-proxy]] の代用となるリバースプロキシサーバ - [[''configurable-http-proxy'']] - ''[[mod_lticontainer]]''(https://github.com/moodle-fumihax/mod_lticontainer) で Charts機能を使用する場合に必要. - JupyterHub の ''[[configurable-http-proxy]]'' (https://github.com/jupyterhub/configurable-http-proxy) の代用となるリバースプロキシサーバ - ''[[configurable-http-proxy]]'' - ''[[mod_lticontainer]]'' (https://github.com/moodle-fumihax/mod_lticontainer) で Charts機能を使用する場合に必要. ** 機能 [#d15259a5] - JupyterHub から通知を受けて動作する通信経路制御のための ''ltictr_api_server'' と,実際に通信を中継して WebSocketデータを解析する ''ltictr_proxy_server'' から成る. - 通常は ''ltictr_proxy_server'' からチャイルドプロセスとして ''ltictr_api_server'' が起動される. -- ''ltictr_proxy_server'' と ''ltictr_api_server'' はそれぞれ独立に起動することも可能. - ''ltictr_proxy_server'' は単体で普通のWeb用リバースプロキシサーバとしても使用可能. - 機能詳細 -- JupyterHub の通信経路制御に対応 -- 通信の中継 -- WebSocket 通信の解析. --- ''ユーザの学習状況に関するデータを収集''. -- HTTP(S)通信の解析. -- Cookie の挿入.(Moodle のコース識別を行うため) -- ''収集したデータを Moodle へ %%XML-RPC%% REST通信で渡す''.(MoodleのWebサービスを使用) ** コマンド引数 [#r702c13c] **** ltictr_proxy_server [#m85cd09d] Usage... %s -p client_side_port [-c] [-h host_url[:port]] [-a [api_url:]port] [-u user] [-d] [--noexecapi] [--chunked] [--conf config_file] [--cert cert_file] [--key key_file] [--pid pid_file] - ''-p'' : Webブラウザの通信を受けるローカルサーバポート番号.必須. - ''-c'' : Webブラウザに対してSSL/TLS接続になる. - ''-h'' : WWWサーバを明示的に指定するためのURL.ltictr_api_server を使用する場合は省略可. - ''-a'' : ltictr_api_server を指定するためのURL.ポート番号のみの場合,URL部分は http://127.0.0.1 となる. - ''-u'' : 実効ユーザ名. - ''-d'' : デバッグモード. - ''-n'', ''--noexecapi'' : ltictr_api_server を起動しない. - ''--chunked'' : chunkデータをchunkデータとして扱う.通常動作では chunkデータは,一旦全部受信されてから転送される. - ''--conf'' : 設定ファイルを指定する(''コマンドラインと競合する場合は,設定ファイル優先'') - ''--cert'' : -c を指定した場合のサーバ証明書:PEM形式.設定ファイル内でも指定可能. -- デフォルトは /etc/pki/tls/certs/server.pem - ''--key'' : -c を指定した場合のサーバの秘密鍵:PEM形式.設定ファイル内でも指定可能. -- デフォルトは /etc/pki/tls/private/key.pem - ''--pid'' : pid ファイルを指定する. -- デフォルトは /var/run/ltictr_proxy.pid **** ltictr_api_server [#j067bff8] Usage... %s -a [api_url:]port [-u user] [-d] [--conf config_file] [--cert cert_file] [--key key_file] [--apid pid_file] - ''-a'' : サーバポートのURL.必須.FQDNの部分は無視する.TLS通信を行う場合は https://:8001 のように記述する. - ''-u'' : 実効ユーザ名. - ''-d'' : デバッグモード. - ''--conf'' : 設定ファイルを指定する(''コマンドラインと競合する場合は,設定ファイル優先'') - ''--cert'' : -c を指定した場合のサーバ証明書:PEM形式.設定ファイル内でも指定可能. -- デフォルトは /etc/pki/tls/certs/server.pem - ''--key'' : -c を指定した場合のサーバの秘密鍵:PEM形式.設定ファイル内でも指定可能. -- デフォルトは /etc/pki/tls/private/key.pem - ''--pid'' : pid ファイルを指定する. -- デフォルトは /var/run/ltictr_proxy.pid ** 起動 [#x7ca0f56] *** systemd を使用する. [#w2040826] # vi /usr/local/etc/ltictr_proxy.conf # vi /usr/lib/systemd/system/ltictr_proxy.service # systemctl enable ltictr_proxy.service # systemctl start ltictr_proxy.service *** 手動起動 [#s4d0923a] **** 1. 通常の起動 [#l6ce9541] # ltictr_proxy_server -p 8100 -c -a 8001 --conf /usr/local/etc/ltictr_proxy.conf # jupyterhub -f jupyterhub_XXX_config.py **** 2. ltictr_api_server と ltictr_proxy_server を別々に起動する場合 [#g32fa414] # ltictr_api_server -a 8001 --conf ./ltictr_proxy.conf # ltictr_proxy_server -p 8100 -c -a 8001 -n --conf /usr/local/etc/ltictr_proxy.conf # jupyterhub -f jupyterhub_XXX_config.py **** 3. configarable-http-proxy と併用する場合.または通常の Webリバースプロキシとして使用する場合 [#o68a35a8] # ltictr_proxy_server -p 8100 -c -n -h http://202.26.150.55:8000 --conf /usr/local/etc/ltictr_proxy.conf # jupyterhub -f jupyterhub_XXX_config.py ** 設定 [#ea3a901b] *** JupyterHub の設定 [#nffb03c1] - 上記 ''手動起動'' で,''1, 2の場合'',JupyterHubで自動的に configurable-http-proxy が起動しないようにしなければならない. -- cron や letsencrypt関係でネットワークサービスを再起動するプログラムも考慮する - JupyterHub の設定ファイル(jupyterhub_XXX_config.py) c.JupyterHub.cleanup_proxy = False c.ConfigurableHTTPProxy.should_start = False c.ConfigurableHTTPProxy.api_url = 'http://localhost:8001' c.ConfigurableHTTPProxy.auth_token = "ABCDEFG" # 任意の文字例.下記参照. *** 設定ファイル (/usr/local/etc/ltictr_proxy.conf) [#l6c34358] - %%''Moodle_Host'' = XML-RPC を行うホスト名(FQDNまたはIPアドレス).%% 廃止.クッキーからの自動設定に変更. - %%''Moodle_Port'' = XML-RPC を行うホストのポート番号.%% 廃止.クッキーからの自動設定に変更. - %%''Moodle_TLS'' = XML-RPC を行う際に HTTPS を使用するかどうか..%% 廃止.クッキーからの自動設定に変更. - %%''Moodle_Token'' = Moodle から発行されたトークン.下記参照.必須.%% 廃止.クッキーからの自動設定に変更. - ''Rest_Path'' = %%XML-RPC%% RESTを行うURLのディレクトリ情報. -- デフォルトは /webservice/rest/server.php - ''Rest_Response'' = %%XML-RPC%% RESTを行った場合の返答を表示するかどうか. -- デバッグ用.デフォルトは FALSE - ''Rest_Service'' = %%XML-RPC%% RESTのサービス名. -- デフォルトから変更する必要はない.変更すると動かなくなる. -- デバッグ用.デフォルトは ''mod_mdlds_write_nblogs'' - ''Rest_HTTPver'' = %%XML-RPC%% RESTを行う際の HTTPのプロトコルバージョン.1.1 か 1.0 を指定. -- 多分 1.1 で問題ない.デフォルトは 1.1 - ''LTICTR_PID_File'' = ltictr_proxy_server の pidファイル. - ''LTICTR_API_PID_File'' = ltictr_api_server の pidファイル. - ''LTICTR_API_Token'' = APIサーバの接続用トークン.任意の文字列.JupyterHub の設定ファイルのc.ConfigurableHTTPProxy.auth_token と同じ値にする.ltictr_proxy_server でも必要. - ''LTICTR_Server_Cert'' = HTTPS通信を行う場合のサーバ証明書(PEM形式) -- デフォルトは /etc/pki/tls/certs/server.pem - ''LTICTR_Server_Chain'' = HTTPS通信を行う場合のサーバ証明書のチェイン(PEM形式) -- デフォルトは指定なし(NULL). - ''LTICTR_Private_Key'' = HTTPS通信を行う場合の秘密鍵ファイル(PEM形式) -- デフォルトは /etc/pki/tls/private/key.pem *** Moodle 側の設定 (Webサービスを利用するためのトークンの取得) [#zf05af7f] + 管理者IDで「サイト設定」 -> 「プラグイン」 -> 「ウェブサービス」 -> 「外部サービス」 ++ 「''Jupyter Notebook Data''」の項目を確認 ++ 「''Jupyter Notebook Data''」の 「許可ユーザ」をクリック + 適当なユーザ(教師ロールのユーザ)を選択し,許可ユーザとする + ウェブサービスのメニューまで戻って,「トークンを管理する」を選択. + 「追加」をクリック. ++ ユーザ名に先程選択したユーザ名を入れる. ++ サービスは「''Jupyter Notebook Data''」を選択 ++ 「変更を保存する」をクリック + 「トークンを管理する」まで戻ると,ユーザ用のトークンができているので,それをコピーする. + トークンを設定ファイル(ltictr_proxy.conf)の ''Moodle_Token'' に設定する.