7: 2021-10-02 (Sat) 18:57:11 iseki |
Cur: 2024-04-17 (Wed) 20:19:46 iseki |
| + | * This page is out of date. [#fb9d7b14] |
| + | * Please see https://polaris.star-dust.jp/pukiwiki/?Moodle%2BJupyterHub [#m22e2071] |
| + | |
| + | |
| * Moodle & JupyterHub 連携 [#t72c88ce] | | * Moodle & JupyterHub 連携 [#t72c88ce] |
- | - LTI カスタムパラメータを使用した Moodle + JupyterHub 連携を研究中 | + | - %%''現行システムは JupyterHub-2.3.1, 3.1.1 では動作するが,4.0.0 では動作しない''%% |
- | - iseki@rsch.tuis.ac.jp | + | -- 動くようになりました. |
| | | |
| + | - LTI カスタムパラメータを使用した Moodle + JupyterHub 連携を研究中 |
| - [[Moodle]] | | - [[Moodle]] |
| - [[JupyterHub]] | | - [[JupyterHub]] |
| - [[Docker]] | | - [[Docker]] |
| + | - [[Podman]] |
| | | |
| - [[LTI]] | | - [[LTI]] |
| | | |
| | | |
- | - [[mod_ltids]] | + | - [[mod_lticontainer]] |
- | - [[feserver]] | + | - %%[[feserver]]%% |
| + | - [[Ltictr_Proxy]] |
| + | #br |
| + | |
| + | *** 最新メモ [#k8d9209c] |
| + | **** 2023/05/07 [#mc229461] |
| + | - JupyterHub v3 で Podman も Docker 同様に扱えるようになった模様. |
| + | -- JupyterHub v3 では jupyterhub_podman_config.py と最新の Dockerイメージ(ltids)の組み合わせは使用できない.(パーミッションエラーが出る) |
| + | -- JupyterHub v3 で最新の Dockerイメージ(ltids)を使用したい場合は,Podmanであっても jupyterhub_docker_config.py を使用すること. |
| + | - JupyterHub v4 では XSRFクッキー関連で,[[ltiauthenticator>LTI#o7520050]] が使用できない.[[JupyterHub>JupyterHub#s373921d]] |
| + | -- site-packages/jupyterhub/handlers/base.py の関数 check_xsrf_cookie(self) でそまま True を返させる. |
| + | --- base.py- 2023-05-07 01:44:18.173130119 -0400 |
| + | +++ base.py 2023-05-07 01:44:31.750265669 -0400 |
| + | @@ -235,7 +235,8 @@ |
| + | |
| + | def check_xsrf_cookie(self): |
| + | try: |
| + | - return super().check_xsrf_cookie() |
| + | + return True |
| + | + #return super().check_xsrf_cookie() |
| + | except Exception as e: |
| + | # ensure _juptyerhub_user is defined on rejected requests |
| + | if not hasattr(self, "_jupyterhub_user"): |
| + | #br |
| + | |
| + | |
| + | ** GitHub [#ad573858] |
| + | *** LTIContainerSpawner [#r4c1946d] |
| + | - https://github.com/jupyter-fumihax/lticontainerspawner |
| + | #br |
| + | |
| + | *** mod_lticontainer [#mdf183de] |
| + | - https://github.com/moodle-fumihax/mod_lticontainer |
| + | #br |
| + | |
| + | ** Gitlab [#aaaabdf8] |
| + | |
| + | *** Gitlab Wiki [#r667be0c] |
| + | - English: https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner/-/wikis/Moodle---JupyterHub |
| + | - English: https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer/-/wikis/mod_lticontainer |
| + | |
| + | - Japanese: https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner/-/wikis/Moodle---JupyterHub-(J) |
| + | - Japanese: https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer/-/wikis/mod_lticontainer-(J) |
| + | #br |
| + | |
| + | *** Source Code [#k535d3ae] |
| + | - LTIContainerSpawner |
| + | -- https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner/ |
| + | - mod_lticontainer |
| + | -- https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer/ |
| #br | | #br |
| | | |
| | | |
| **** Webサービス [#k4138c47] | | **** Webサービス [#k4138c47] |
| + | - Option |
| - Feserver からの XML-RPC を受け入れて,データをDBに格納する. | | - Feserver からの XML-RPC を受け入れて,データをDBに格納する. |
| -- データ収集を行わない(Feserverを使用しない)なら,不必要 | | -- データ収集を行わない(Feserverを使用しない)なら,不必要 |
| | | |
| **** [[Docker]] [#cd2ef212] | | **** [[Docker]] [#cd2ef212] |
- | - [[LTIDockerSpawner>JupyterHub/LTIDockerSpawner]] を使用 | |
- | | |
| - CentOS8 | | - CentOS8 |
| (base) # dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | | (base) # dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
| | | |
| **** [[Podman]] [#k2bdffda] | | **** [[Podman]] [#k2bdffda] |
- | - [[LTIPodmanSpawner>JupyterHub/LTIPodmanSpawner]] を使用 | |
- | | |
| - CentOS8 | | - CentOS8 |
| (base) # dnf -y install podman | | (base) # dnf -y install podman |
| #br | | #br |
| | | |
- | *** [[JupyterHub]]/[[SystemUserSpawner>JupyterHub/SystemUserSpawner]] [#z52a6900] | + | *** [[JupyterHub]] [#z52a6900] |
- | **** [[JupyterHub]] [#m57f62f0] | + | **** with pip [#fe40fb20] |
| + | # yum install python39 |
| + | # alternatives --config python3 |
| + | # /usr/bin/pip3.9 install --upgrade pip |
| + | # yum install npm |
| + | # npm install -g configurable-http-proxy |
| + | # pip install setuptools_rust |
| + | # pip install jupyterhub |
| + | # pip install dockerspawner |
| + | # pip install --upgrade notebook |
| + | # pip install --upgrade jupyterlab |
| + | # jupyterhub --version |
| + | # jupyter --version |
| + | # jupyter notebook --version |
| + | # jupyter lab --version |
| + | |
| + | **** with conda [#b575bbb0] |
| (base) # conda create -n jupyterhub python=3.8 -y | | (base) # conda create -n jupyterhub python=3.8 -y |
| (base) # conda activate jupyterhub | | (base) # conda activate jupyterhub |
| (jupyterhub) # conda install jupyter_client -y | | (jupyterhub) # conda install jupyter_client -y |
| (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/dockerspawner.git #(必要なら) | | (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/dockerspawner.git #(必要なら) |
| + | **** 設定&起動 [#qd28c9f2] |
| - 作業ディレクトリ | | - 作業ディレクトリ |
| -- mkdir -p /var/lib/jupyterhub/ | | -- mkdir -p /var/lib/jupyterhub/ |
| -- IPアドレス,サーバ証明書,Dockerイメージの選択 | | -- IPアドレス,サーバ証明書,Dockerイメージの選択 |
| - 起動 | | - 起動 |
- | -- conda activate jupyterhub | + | -- conda activate jupyterhub (condaの場合) |
| -- jupyterhub -f jupyterhub_config.py | | -- jupyterhub -f jupyterhub_config.py |
| #br | | #br |
| | | |
- | **** [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] [#m07110de] | + | **** %%[[SystemUserSpawner>JupyterHub/SystemUserSpawner]]%% [#m07110de] |
- | - JupyterHub の DockerSpawner を継承. | + | - ''最新版では未使用'' |
- | -- システムのユーザを使用可能. | + | |
- | -- システムのユーザのホーム領域をマウント可能. | + | |
| | | |
- | - 2021 7/12(またはそれ以降) 版推奨 | + | - ''Container として Docker を使用する場合に必要.Podman を使用する場合は不要.'' |
- | - https://github.com/jupyterhub/dockerspawner/blob/master/dockerspawner/systemuserspawner.py | + | |
- | - JupyterHub のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) | + | |
| | | |
- | - SystemUserSpawner を動かすには /etc/passwd(/etc/group) 情報が必要 | + | -- JupyterHub の DockerSpawner を継承. |
| + | --- システムのユーザを使用可能. |
| + | --- システムのユーザのホーム領域をマウント可能. |
| + | |
| + | -- 2021 7/12(またはそれ以降) 版推奨 |
| + | -- https://github.com/jupyterhub/dockerspawner/blob/master/dockerspawner/systemuserspawner.py |
| + | -- JupyterHub のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) |
| + | #br |
| + | |
| + | *** NSS [#x24645ee] |
| + | - ユーザ情報として /etc/passwd(/etc/group) の情報が必要 |
| + | - システム(Containerを動かすホスト上)のユーザでなくても良い. |
| -- LDAP か下記の altfiles を使用する | | -- LDAP か下記の altfiles を使用する |
| #br | | #br |
| group: files altfiles | | group: files altfiles |
| - ユーザアカウントの整合性を取る. | | - ユーザアカウントの整合性を取る. |
| + | -- システム(Containerを動かすホスト上)のユーザとユーザ名,ユーザIDが被っていないかチェックする. |
| #br | | #br |
| | | |
- | **** [[LTI]] [#g284e3bf] | + | *** [[LTI Authenticator>LTI]] [#g284e3bf] |
| - Moodle と連携する為の 認証モジュール(Moodleの外部サービスを使用) | | - Moodle と連携する為の 認証モジュール(Moodleの外部サービスを使用) |
| - 先に authlib を入れておく. | | - 先に authlib を入れておく. |
| -- conda install oauthlib or pip install oauthlib | | -- conda install oauthlib or pip install oauthlib |
| | | |
| + | - v1.5.0 release |
| + | -- https://pypi.org/project/jupyterhub-ltiauthenticator/1.5.0/ |
| - v1.2.0 release (2021 9/2) | | - v1.2.0 release (2021 9/2) |
| -- https://pypi.org/project/jupyterhub-ltiauthenticator/1.2.0/ | | -- https://pypi.org/project/jupyterhub-ltiauthenticator/1.2.0/ |
| -- Moodle に対して Patch 不要 | | -- Moodle に対して Patch 不要 |
| | | |
- | (jupyterhub)# pip install jupyterhub-ltiauthenticator==1.2.0 | + | (jupyterhub)# pip install --upgrade jupyterhub-ltiauthenticator |
| | | |
| - Jupyterhub_conifg.py | | - Jupyterhub_conifg.py |
| #br | | #br |
| | | |
- | **** cull_idle_servers.py (option)[#n8a3f52c] | + | *** Culler(option) [#w04c68db] |
| - オプション機能.無くても良い. | | - オプション機能.無くても良い. |
- | -- 使用しない場合は,LTIDockerSpawner/LTIPodmanSpawner の設定ファイルの該当部分をコメントアウトする. | + | - 接続の切れた docker コンテナを削除する |
| + | - 使用しない場合は,LTIDockerSpawner/LTIPodmanSpawner の設定ファイルの該当部分をコメントアウトする. |
| + | -- [[cull_idle_servers>JupyterHub/DockerSpawner#zc9428f7]] |
| | | |
- | - [[cull_idle_servers>JupyterHub/DockerSpawner#zc9428f7]] | + | #br |
- | - 接続の切れた docker コンテナを削除 | + | |
| | | |
| + | **** cull_idle_servers.py [#n8a3f52c] |
| - https://github.com/jupyterhub/jupyterhub/tree/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle | | - https://github.com/jupyterhub/jupyterhub/tree/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle |
| -- 色々と試した中ではこれが一番良かった. | | -- 色々と試した中ではこれが一番良かった. |
| - wget で DLして /usr/local/bin にコピー | | - wget で DLして /usr/local/bin にコピー |
- | pip3 install pycurl | + | pip3 install wheel |
| + | pip3 install pycurl (pthon3-devel が必要) |
| wget https://raw.githubusercontent.com/jupyterhub/jupyterhub/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle/cull_idle_servers.py | | wget https://raw.githubusercontent.com/jupyterhub/jupyterhub/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle/cull_idle_servers.py |
| cp cull_idle_servers.py /usr/local/bin | | cp cull_idle_servers.py /usr/local/bin |
| *** [[LTIContainerSpawner>JupyterHub/LTIContainerSpawner]] [#va019dd5] | | *** [[LTIContainerSpawner>JupyterHub/LTIContainerSpawner]] [#va019dd5] |
| - https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner | | - https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner |
| + | -- git clone https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner.git |
| + | |
| - [[Moodle]](その他の LTIコンシューマ) と [[JupyterHub]] の連携をとるための Spawner クラス. | | - [[Moodle]](その他の LTIコンシューマ) と [[JupyterHub]] の連携をとるための Spawner クラス. |
| | | |
| - LTIContainerSpawner は LTIDockerSpawner と LTIPodmanSpawner を纏めた呼び方. | | - LTIContainerSpawner は LTIDockerSpawner と LTIPodmanSpawner を纏めた呼び方. |
- | -- LTIContainerSpawner = LTIDockerSpawner + LTIPodmanSpawner | + | -- ''LTIContainerSpawner = LTIDockerSpawner + LTIPodmanSpawner'' |
| + | |
| + | git clone https://gitlab.nsl.tuis.ac.jp/iseki/lticontainerspawner.git |
| + | cd lticontainerspawner/ |
| + | make |
| + | |
| #br | | #br |
| | | |
| **** [[LTIDockerSpawner>JupyterHub/LTIDockerSpawner]] [#kfa79499] | | **** [[LTIDockerSpawner>JupyterHub/LTIDockerSpawner]] [#kfa79499] |
- | - [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] クラスを継承. | + | - JupyterHub/[[SystemUserSpawner>JupyterHub/SystemUserSpawner]] クラスを継承. |
| - 現時点(2021/10)では ''etc/jupyterhub_docker_config.py'' の中で実装 | | - 現時点(2021/10)では ''etc/jupyterhub_docker_config.py'' の中で実装 |
| #br | | #br |
| **** [[LTIPodmanSpawner>JupyterHub/LTIPodmanSpawner]] [#u1b06d85] | | **** [[LTIPodmanSpawner>JupyterHub/LTIPodmanSpawner]] [#u1b06d85] |
| - [[Podman]] が使用可能 | | - [[Podman]] が使用可能 |
| + | - JupyterHub/Spawner クラスを継承 |
| - niklas netter 氏の [[podmanspawner>PodmanSpawner]] を利用 (very thanks!) | | - niklas netter 氏の [[podmanspawner>PodmanSpawner]] を利用 (very thanks!) |
| -- https://github.com/gatoniel/podmanspawner | | -- https://github.com/gatoniel/podmanspawner |
| - 環境変数を使用した start.sh による Jupyter Lab/Notebook コンテナの動作制御. | | - 環境変数を使用した start.sh による Jupyter Lab/Notebook コンテナの動作制御. |
| #br | | #br |
- | - 教師ユーザと学生ユーザの分離. | + | - 以下の機能をコースの外部サービス毎に設定可能 |
- | - ユーザ毎の Volume のマウント,及びアクセス権(教師と学生)の設定. | + | -- 教師ユーザと学生ユーザの分離. |
- | -- 教材の配布と収集に便利 | + | -- ユーザ毎の Volume のマウント,及びアクセス権(教師と学生)の設定. |
- | - Volume への任意名でのアクセス. | + | --- 教材の配布と収集に便利 |
- | - 起動イメージのリモート選択.表示名のフィルタリング.Jupyter Lab/Notebook でないイメージを選択すると漏れなく死にます :-o | + | -- ユーザの作業用 Volumeの設定 |
- | - 起動 URL(Lab/Notebook)の選択. | + | -- Volume への任意名でのアクセス. |
- | - %%iframe サポート%% 動くための条件がシビア(tornado のバージョンやブラウザの種類によって条件が変わる) | + | -- 起動イメージのリモート選択.表示名のフィルタリング.Jupyter Lab/Notebook でないイメージを選択すると漏れなく死にます :-o |
- | - CPU/Momery の制限 | + | -- 起動 URL(Lab/Notebook)の選択. |
| + | -- %%iframe サポート%% 一部のみサポート:動くための条件がシビア(tornado のバージョンやブラウザの種類によって条件が変わる) |
| + | -- CPU/Momery の制限 |
| #br | | #br |
| | | |
| - ボリューム名には小文字のアルファベット・数字以外は使用できない.特殊文字も使用できない.(snake_case) | | - ボリューム名には小文字のアルファベット・数字以外は使用できない.特殊文字も使用できない.(snake_case) |
| - 大文字のボリューム名は小文字に変換される. | | - 大文字のボリューム名は小文字に変換される. |
- | - 同じボリューム名・アクセス名を指定した場合は,最初の物が優先される. | + | - ボリュームに対して同じボリューム名・アクセス名を指定した場合は,最初の物が優先される. |
| - 一個の JupyterHub に対して複数の Moodle からのアクセスをサポート | | - 一個の JupyterHub に対して複数の Moodle からのアクセスをサポート |
| + | - アクセス名の先頭に - を付けた場合は,教師ユーザのみシンボリックリンクが張られる |
| | | |
| + | - 注)アクセス名:ボリュームへ張られるシンボリックリンクの名前 |
| #br | | #br |
| | | |
| **** 注意事項 [#n57178a3] | | **** 注意事項 [#n57178a3] |
- | - %%Moodle で埋め込み(iframe)表示を行う場合は,Moodle と JupyterHub を同じホストにするか,Moodle のホスト上で feserver を動かす.%% | + | - iframe |
- | - %%iframe 対応.ただし tornado が cookie の samesite を解釈可能なこと.(python3.8以上)%% | + | -- %%Moodle で埋め込み(iframe)表示を行う場合は,Moodle と JupyterHub を同じホストにするか,Moodle のホスト上で feserver を動かす.%% |
- | - tornado のバージョンやブラウザの種類によって条件が変わるので,部分的サポートとする. | + | -- %%iframe 対応.ただし tornado が cookie の samesite を解釈可能なこと.(python3.8以上)%% |
| + | -- tornado のバージョンやブラウザの種類によって条件が変わるので,部分的サポートとする. |
| #br | | #br |
| | | |
| #br | | #br |
| | | |
- | *** [[mod_ltids]] [#hbfc4f2f] | + | *** [[mod_lticontainer]] [#hbfc4f2f] |
- | - https://gitlab.nsl.tuis.ac.jp/iseki/mod_ltids | + | - https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer |
| | | |
- | - MDLDockerSpawner サポート用 Moodleモジュール | + | - MDLDockerSpawner/LTIPodmanSpawner サポート用 Moodleモジュール |
| | | |
| - docker のリモート制御について | | - docker のリモート制御について |
- | -- docker クライアント(/usr/bin/docker)が必要 | + | -- docker クライアント(docker-cd-cli : /usr/bin/docker) が必要 |
- | -- dockerd が動いているホストに ssh できる,ホスト上のユーザ(dockerグループに所属)が必要 | + | -- dockerd が動いているホストに ssh できる,ホスト上のユーザ(dockerのソケットのグループに所属)が必要 |
| + | |
| + | - podman のリモート制御について |
| + | -- podman コマンド(podman-remote) が必要 |
| + | -- podman が動いているホストに ssh できる,ホスト上のユーザ(podmanのソケットのグループに所属)が必要 |
| #br | | #br |
| | | |
| **** 機能 [#m538ed2a] | | **** 機能 [#m538ed2a] |
| - LTI のカスタムパラメータ管理 | | - LTI のカスタムパラメータ管理 |
- | - Docker のリモート制御 | + | - Docker/Podman のリモート制御 |
| -- イメージの一覧の取得 | | -- イメージの一覧の取得 |
| -- Volume 管理(作成,表示,削除) | | -- Volume 管理(作成,表示,削除) |
| | | |
| #br | | #br |
| + | |
| + | **** [[Docker]] を使う場合 [#d9c2f77c] |
| + | - JupyterHub/Docker が起動するホスト上にアクセス用ユーザを用意する. |
| + | -- %%アクセス用ユーザのホームディレクトリについて,アクセス用ユーザが書き込み可能であること.%% |
| + | --- %%CentOS8 で嵌った.ユーザを dockerにしたんだが,dockerのホームディレクトリなのに,dockerが書き込み可能でなかった.%% (勘違い?) |
| + | -- アクセス用ーザが docker のグループに属していること(UNIXソケットファイルにアクセスするため). |
| + | -- アクセス用ユーザのログインシェルは不要-- アクセス用ーザが docker のグループに属していること(UNIXソケットファイルにアクセスするため). |
| + | -- アクセス用ユーザのログインシェルは不要 |
| + | - Webサーバの実効ユーザが自分のホームディレクトリについて,書き込み可能であること. |
| + | |
| + | #br |
| + | |
| **** [[Podman]] を使う場合 [#nd0d330c] | | **** [[Podman]] を使う場合 [#nd0d330c] |
- | - docker と同じようにする. | + | - JupyterHub/Podman が起動するホスト上にアクセス用ユーザを用意する. |
- | -- podman の場合は podman-remote か podman --remote コマンドを使用する | + | -- アクセス用ユーザのログインシェルは不要 |
- | - socket は /var/run/podman/podman.sock | + | -- Moodleホストからのアクセスには podman-remote か podman --remote コマンドを使用する |
- | -- 再起動する度に /var/run/podman が作り直されるので,パーミッションが rwx------ に戻ってしまう. | + | - Webサーバの実効ユーザが自分のホームディレクトリについて,書き込み可能であること. |
- | -- 制御用のユーザプロセスが ソケットにアクセスできなくなる. | + | - Podman が起動するホスト上の socket は /var/run/podman/podman.sock |
- | --- これは CentOS7 での現象(バージョンが古いせいかも).CentOS8では問題なし. | + | -- /var/run/podman/ のパーミッションを drwxrws--- とし,グループを root 以外に設定. |
- | - ''対策'' | + | -- socket を読み書きできるアクセス用ユーザを作成する(グループが同じになるようにする). |
- | -- /usr/lib/systemd/system/podman.socket | + | --- 例えば podman グループ(アクセス用ユーザはこのグループに参加する必要がある)を作成した場合 (root podman drwxrws---) |
- | --- podman グループを作成した場合 | + | |
| + | - /usr/lib/systemd/system/podman.socket |
| [Unit] | | [Unit] |
| Description=Podman API Socket | | Description=Podman API Socket |
| Documentation=man:podman-system-service(1) | | Documentation=man:podman-system-service(1) |
| + | |
| [Socket] | | [Socket] |
| ExecStartPre=/usr/bin/chgrp podman /var/run/podman | | ExecStartPre=/usr/bin/chgrp podman /var/run/podman |
| ListenStream=%t/podman/podman.sock | | ListenStream=%t/podman/podman.sock |
| SocketMode=0660 | | SocketMode=0660 |
| + | |
| [Install] | | [Install] |
| WantedBy=sockets.target | | WantedBy=sockets.target |
| | | |
- | *** [[feserver]] [#va0d030b] | + | |
| + | # adduser podman |
| + | # passwd podman |
| + | # vi /usr/lib/systemd/system/podman.socket |
| + | # mkdir /var/run/podman |
| + | # systemctl enable podman |
| + | # systemctl start podman |
| + | |
| + | - Trouble |
| + | -- podman.socket が勝手に再起動を繰り返す. |
| + | -- 再起動する度に /var/run/podman が作り直されるので,パーミッションが rwx------ に戻ってしまう. |
| + | -- 制御用のユーザプロセスが ソケットにアクセスできなくなる. |
| + | --- これは CentOS7 での現象(バージョンが古いせいかも).CentOS8では問題なし. |
| + | #br |
| + | |
| + | *** [[Ltictr_Proxy]] [#wb4130d9] |
| + | - feserver + feplg_nbws.so の代わりとなる ''[[Ltictr_Proxy]]'' を作成したので,今後はこちらを用いる(2022/2/13) |
| + | #br |
| + | *** 参考:[[feserver]] [#va0d030b] |
| - http://www.nsl.tuis.ac.jp/svn/linux/feserver/trunk | | - http://www.nsl.tuis.ac.jp/svn/linux/feserver/trunk |
| | | |
| - feserver フロントエンドサーバ(TCP中継サーバ) | | - feserver フロントエンドサーバ(TCP中継サーバ) |
- | - MITM 的動作を行う私的試験用ツール.(一応公開もしている) | + | - MITM 的動作を行う私的試験用ツール.(一応公開もしている. svn co http://www.nsl.tuis.ac.jp/svn/linux/feserver/trunk feserver) |
| - 各種モジュールを読み込むことにより,色々な通信データの処理が可能. | | - 各種モジュールを読み込むことにより,色々な通信データの処理が可能. |
| - コンパイルに [[JunkBox_Lib]] が必要 | | - コンパイルに [[JunkBox_Lib]] が必要 |
| + | # svn co http://www.nsl.tuis.ac.jp/svn/linux/JunkBox_Lib/trunk JunkBox_Lib |
| + | # cd JunkBox_Lib |
| + | # ./config.sh |
| + | # ./configure --enable-ssl |
| + | # make |
| + | # cd .. |
| + | # svn co http://www.nsl.tuis.ac.jp/svn/linux/feserver/trunk feserver |
| + | # cd feserver |
| + | # make |
| + | # vi nbsw.conf |
| + | # ./fesvr ...... -m feplg_nbws.so --conf nbsw.conf |
| #br | | #br |
| + | |
| **** 起動例 [#d9e04c03] | | **** 起動例 [#d9e04c03] |
| - ./fesvr -h 172.22.1.75:8000 -p 9000 -m feplg_nbws.so -c -s --conf nbsw.conf | | - ./fesvr -h 172.22.1.75:8000 -p 9000 -m feplg_nbws.so -c -s --conf nbsw.conf |
| -- -c : クライアントに対してSSL/TLS接続になる(fesrv はSSL/TLSサーバとなる). | | -- -c : クライアントに対してSSL/TLS接続になる(fesrv はSSL/TLSサーバとなる). |
| -- --conf : 設定ファイル指定 | | -- --conf : 設定ファイル指定 |
- | -- --cert : -c を指定した場合のサーバ証明書:PEM形式. デフォルトは /etc/pki/tls/certs/postfix.pem | + | -- --cert : -c を指定した場合のサーバ証明書:PEM形式.設定ファイル内でも指定可能. デフォルトは /etc/pki/tls/certs/server.pem |
- | -- --key : -c を指定した場合のサーバの秘密鍵:PEM形式.デフォルトは /etc/pki/tls/private/postfix.key | + | -- --key : -c を指定した場合のサーバの秘密鍵:PEM形式.設定ファイル内でも指定可能. デフォルトは /etc/pki/tls/private/key.pem |
| #br | | #br |
| | | |
| - 以下,各モジュール共通の設定.コマンドラインで指定した場合は,そちらが優先. | | - 以下,各モジュール共通の設定.コマンドラインで指定した場合は,そちらが優先. |
| -- Fesvr_Server_Cert = Feserver 本体用の設定.HTTPS通信を行う場合のサーバ証明書(PEM形式) | | -- Fesvr_Server_Cert = Feserver 本体用の設定.HTTPS通信を行う場合のサーバ証明書(PEM形式) |
- | --- デフォルトは /etc/pki/tls/certs/postfix.pem | + | --- デフォルトは /etc/pki/tls/certs/server.pem |
| -- Fesvr_Private_Key = Feserver 本体用の設定.HTTPS通信を行う場合の秘密鍵ファイル(PEM形式) | | -- Fesvr_Private_Key = Feserver 本体用の設定.HTTPS通信を行う場合の秘密鍵ファイル(PEM形式) |
- | ---デフォルトは /etc/pki/tls/private/postfix.key | + | ---デフォルトは /etc/pki/tls/private/key.pem |
| | | |
| #br | | #br |
| *** ipynb_conv [#b15438d1] | | *** ipynb_conv [#b15438d1] |
| - ipynb ファイルの(コード)タグに解析用の通し番号を入れるツール | | - ipynb ファイルの(コード)タグに解析用の通し番号を入れるツール |
- | - MDLDockerSpawner に同梱(C言語) | + | - LTIContainerSpawner に同梱(C言語) |
- | - phpバージョンもあり (現時点で使用予定なし.サンプルコード.) | + | - %%phpバージョンもあり (現時点で使用予定なし.サンプルコード)%% |
| + | -- PHPバージョンは,C言語バージョンにバグがあった場合の保険.(最初から PHPバージョンを使えと言う指摘は最もですが.... C言語バージョンを折角作ったので....) |
| #br | | #br |
| | | |
| #br | | #br |
| - start.sh 入れ替え後でも,通常の DockerSpanwer で問題なく起動できるようにしたい(下位互換性) | | - start.sh 入れ替え後でも,通常の DockerSpanwer で問題なく起動できるようにしたい(下位互換性) |
| + | #br |
| + | ** Trouble Shooting [#c5d119dc] |
| + | *** mod_lticontainer [#b6461f04] |
| + | **** 500 Server Error [#jc469646] |
| + | - mod_lticontainer でユーザを削除する. |
| + | #br |
| + | **** local user で JupyterHubにアクセスできない.アクセスバーは途中まで. [#c06188d6] |
| + | - ホームディレクトリ内のドット付きディレクトリのユーザを調べる. |
| + | - 本来のオーナでない場合は,修正する. |
| + | #br |
| + | ** Setup [#q4494417] |
| + | *** Example [#eca873a2] |
| + | - Rocky Linux |
| + | - [[Debian>./Debian]] |
| #br | | #br |