mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-23 06:58:45 -05:00
Feature Request: render IPython/Jupyter Notebooks in repo view pane #1226
Closed
opened 2025-11-02 03:52:59 -06:00 by GiteaMirror
·
16 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
issue/duplicate
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#1226
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @minoru7 on GitHub (Nov 9, 2017).
[x]):Description
I would like to request that a feature be added to render IPython/Jupyter Notebooks in the file view of a repo.
Gogs (and GitLab/GitHub, etc.) have the ability to view IPython/Jupyter Notebooks in rendered form, but also to pull it up in source/raw, however in Gitea they are displayed as text only. Gogs uses notebook.js and marked.js to do this work. Gogs has the plugins in "public/plugins". There are some modifications in "pkg/markup/markup.go", "routes/repo/view.go", "templates/repo/view_file.tmpl", and "templates/base/head.tmpl".
I believe the locations in Gitea would be the following: "modules/markup/markup.go", "routers/repo/view.go", "public/vendor/plugins", "templates/base/head.tmpl", and "templates/repo/view_file.tmpl".
An example of the end goal is given in the screenshots below.
Screenshots
Current View:

This is what it should look like (this is from GitLab):

@lunny commented on GitHub (Nov 10, 2017):
Please see https://github.com/go-gitea/gitea/pull/2570
@entron commented on GitHub (Jan 4, 2018):
Could somebody explain how to enable this feature? I can't find it anywhere.
@lunny commented on GitHub (Jan 5, 2018):
see https://github.com/go-gitea/gitea/pull/3301
@entron commented on GitHub (Jan 6, 2018):
@lunny, sorry I still couldn't figure out how to do it. Is there a more detailed instruction specifically for ipython notebook?
@eapetitfils commented on GitHub (Oct 17, 2018):
@entron Just adding it here as I guess people will come back to this issue if they want to know how to do it.
Let's say you have access to the server running gitea, and you can install python on it. Create a virtual environment and install jupyter in it. What you need to add in the config file to render jupyter notebooks is the following:
You obviously need to give exec access for the virtual environment to your web server user.
I am still not fully happy with this solution as the python code is not coloured. But that is a huge step forward when compared to the json text displayed before.
The
--to html --template basicis not technically needed, though it gives smaller HTML content. I could not see a difference in the output.@entron commented on GitHub (Oct 25, 2018):
@eapetitfils Thank you very much for this instruction. I followed it but I got an empty output when I opened a jupyter file in gitea. Could you tell me how to debug it? I want to find the error log but I don't know where to find it.
@typeless commented on GitHub (Oct 25, 2018):
@entron the log files reside in the
logsubdirectory of your Gitea installation. If you start Gitea withsystemd, you can usesudo journalctl -u giteato view the console log, which could be more helpful than the log files.If you run Gitea in docker, try
docker logs. I don't install Gitea with docker, so I am not sure about how it looks.@choucavalier commented on GitHub (Oct 25, 2018):
Side-note:
sudo journalctl -u gitea -n 200 -fwill-n 200),-f), mimicking thetail -fbehaviour.@eapetitfils commented on GitHub (Oct 25, 2018):
@entron what version of gitea are you using?
Have you tried running the render command outside of gitea? It should print out all the HTML code.
And do not forget the space at the end of the render command in your config file.
@entron commented on GitHub (Oct 25, 2018):
Thanks you all for the help! I realized the reason: I was running gitea in docker and I installed jupyter only on the host:) I installed jupyter inside the gitea docker container with:
@entron commented on GitHub (Oct 25, 2018):
After I installed jupyter in the docker the notebook rendering worked except images did not show up. I have checked the output of the command as suggested by @eapetitfils, the html output did contain the image. I am using the latest version. Does anyone have the same issue as me?
@eapetitfils commented on GitHub (Nov 13, 2018):
Maybe a way to do it would be to add the handling of data URI images in the sanitizer policy:
p.AllowDataURIImages().However, this comes with a security risk so not sure if this is a good idea to have that enabled all the time. And even if this was enabled only for specific external renderers, I am not sure nbconvert protects against a malicious ipynb file.
There is also the colour rendering that is nuked by the sanitizer.
Edit:
Looking at the security risk, I do not believe it applies here.
p.AllowDataURIImages()only allows GIF, JPEG, PNG and WEBP data URI, and the security risk is about HTML. I tried to reproduce the security risk above by manipulating the base64 part of the image URI without success.What's left after this is embedding code inside a PNG, but AFAIK that is harmless until activated by something else and, anyway, could be embedded in any image hosted on Gitea, so this is not relevant to external parser.
@wbadart commented on GitHub (Feb 15, 2019):
@eapetitfils sorry for the n00b question: which config file do we add this to?
@eapetitfils commented on GitHub (Feb 15, 2019):
To the gitea
app.iniconfig file, which path depends on how gitea was installed (typically in/etc/gitea/conf/app.ini).More details were added lately to the documentation: https://docs.gitea.io/en-us/external-renderers/
@wbadart commented on GitHub (Feb 15, 2019):
Awesome. Many thanks!
@gbrault commented on GitHub (Aug 26, 2019):
@eapetitfils said:
where do we set this p.AllowDataURIImages()?