このエントリでは、
ForgejoでJupyteNotebook(ipynb)を表示する設定方法を示します。

本エントリは、以下の記事を参考にしています。

How to render Jupyter Notebooks on Gitea | Gitea
https://blog.gitea.com/render-jupyter-notebooks/
※Giteaの記事ですが、Forgejoもほぼ同じ。

Forgejoのセットアップは、過去のエントリを参照ください。

UbuntuLinuxにForgejoをセットアップする手順
https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html

試した環境:

  • Ubuntu Linux 22.04.3
  • Forgejo 1.21.7
  • jupyter_core 5.7.2
  • nbconvert 7.16.3

jupyter-nbconvertのセットアップ

Forgejoでipynbを表示するためには、
ipynb→html変換が必要なので、jupyter-nbconvertをインストールします。

以下コマンドでpython/pipをインストールします。

sudo apt install python3
sudo apt install python3-pip

以下のコマンドで、
forgejoの実行ユーザに、jupyter-nbconvertをインストールします。
※ここではforgejoの実行ユーザはforgejoとしています。

sudo su - forgejo
pip3 install nbconvert

Forgejoにrender commandを設定

以下のドキュメントを参考に、render commandを設定します。

Markup (markup) | Forgejo
https://forgejo.org/docs/latest/admin/config-cheat-sheet/#markup-markup

Forgejoの設定ファイルに、
ipynvのrender commandにjupyter nbconverを指定します。

custom/conf/app.ini への追記内容

[markup.jupyter]
ENABLED = true
FILE_EXTENSIONS = .ipynb
RENDER_COMMAND = "/var/lib/forgejo/.local/bin/jupyter nbconvert --stdout --to html --template basic "
IS_INPUT_FILE = true

[markup.sanitizer.jupyter0]
ELEMENT = div
ALLOW_ATTR = class
REGEXP =

※ここではforgejoのホームディレクトリは/var/lib/forgejoとしています。

設定ファイルを修正したら、forgejoを再起動し反映します。

sudo systemctl restart forgejo

ブラウザからForgejoでipynbファイルを開くと、
JupyterNotebookで表示されるのと同じように表示されます。
この段階では、未だスタイルシートが適用されていない状態です。

スタイルシートの適用

以下のドキュメントを参考に、ForgejoのHTMLをカスタマイズします。

Other additions to the page | Forgejo
https://forgejo.org/docs/latest/developer/customization/#other-additions-to-the-page

HTMLヘッダーに追加する内容をとして、以下のファイルを追加します。
このヘッダーからipynbに適用するスタイルシートを読み込みます。

custom/templates/custom/header.tmpl

<link rel="stylesheet/less" type="text/css" href="/assets/css/jupyter.less" />
<script src="//cdn.jsdelivr.net/npm/less" ></script>

nbconvertで、使っているテンプレート・スタイルシートは次を参考にします。

Creating Custom Templates for nbconvert | nbconvert
https://nbconvert.readthedocs.io/en/v7.16.3/customizing.html

以下のコマンドで、
先ほどのヘッダーから読み込む、CSSファイルを追加します。

echo ".jupyter {" > custom/public/assets/css/jupyter.less
cat ~/.local/share/jupyter/nbconvert/templates/classic/static/style.css >> custom/public/assets/css/jupyter.less
echo "}" >> custom/public/assets/css/jupyter.less

この後、ブラウザからForgejoでipynbファイルを開くと、
スタイルシートが適用された状態で、
JupyterNotebookで表示されるのと同じように表示されます。

以上。