How to use nbviewer as managed service in jupyterhub?

I try to add the code into the config , but not work and I don’t know how to access , where is the /services/nbviewer on local machine path?
Code below:

c.JupyterHub.services = [
{
‘name’: ‘nbviewer’,
‘url’:‘http://127.0.0.1:9000’,
‘command’: [‘python’, ‘-m’, ‘nbviewer’],
}`
And warnning:
[W 2021-11-18 02:33:23.845 JupyterHub app:2098] Cannot connect to managed service public at http://127.0.0.1:9000

I am confused about wher to store the .ipynb files which I want to display?

GitHub - jupyter/nbviewer: nbconvert as a web service: Render Jupyter Notebooks as static web pages says nbviewer runs on port 8080, not 9000. You’ll either have to configure nbviewer to run on a different port, or change the url in your service definition.

thanks, it work now,but get ner problems , the page below:


and the warning is like:

[I 2021-11-25 09:24:51.654 JupyterHub log:189] 200 GET /hub/api/authorizations/cookie/jupyterhub-services/[secret] (nbviewer@10.0.19.34) 31.98ms
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | [E 2021-11-25 09:24:51.882 tornado.general web:2990] Could not open static file ‘’
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | [E 2021-11-25 09:24:51.886 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | Traceback (most recent call last):
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/tornado/web.py”, line 1704, in _execute
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | result = await result
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/tornado/web.py”, line 2576, in get
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py”, line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | raise web.HTTPError(404)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 |
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 |
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | Traceback (most recent call last):
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/tornado/web.py”, line 1217, in send_error
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py”, line 590, in write_error
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py”, line 521, in render_template
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | return template.render(**ns)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jinja2/environment.py”, line 1304, in render
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | self.environment.handle_exception()
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jinja2/environment.py”, line 925, in handle_exception
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/nbviewer/templates/404.html”, line 1, in top-level template code
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | {% extends “error.html” %}
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/nbviewer/templates/error.html”, line 1, in top-level template code
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | {% extends “layout.html” %}
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/nbviewer/templates/layout.html”, line 89, in top-level template code
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 |
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jinja2/utils.py”, line 84, in from_obj
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | if hasattr(obj, “jinja_pass_arg”):
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | jinja2.exceptions.UndefinedError: ‘from_base’ is undefined
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | [W 2021-11-25 09:24:51.888 NBViewer log:57] 404 GET /services/nbviewer/static/build/styles.css (10.0.0.2) 27.48ms referer=“
http://127.0.0.1:16667/services/nbviewer/” user-agent=“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36”
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | [E 2021-11-25 09:24:51.892 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | Traceback (most recent call last):
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/tornado/web.py”, line 1704, in _execute
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | result = await result
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/tornado/web.py”, line 2576, in get
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | File “/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py”, line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | raise web.HTTPError(404)
swarmhub_jupyter_cds.1.o7e8vjeiuqdw@c5 | tornado.web.HTTPError: HTTP 404: Not Found

I’ve checked the source code and it looks like your original configuration ‘url’:‘http://127.0.0.1:9000’, should’ve worked- nbviewer should get this information from the JUPYTERHUB_SERVICE_URL environment variable:

The fact that it didn’t work, and that you’re seeing issues with static files when running on the default port 8080, suggests that nbviewer isn’t reading this variable.

If you switch back to port 9000 and turn on debug JupyterHub logging you should see the startup logs from nbviewer. Can you show us those logs, or if it’s easier show us the full JupyterHub logs.

1 Like

the full log below:

swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:28:40.488 JupyterHub proxy:266] Adding service nbviewer to proxy /services/nbviewer/ => http://127.0.0.1:9000
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.496 [ConfigProxy] info: Adding route / -> http://10.0.19.60:8081
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.497 [ConfigProxy] info: Route added / -> http://10.0.19.60:8081
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.498 [ConfigProxy] info: 201 POST /api/routes/
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.499 [ConfigProxy] info: Adding route /services/nbviewer -> http://127.0.0.1:9000
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.499 [ConfigProxy] info: Route added /services/nbviewer -> http://127.0.0.1:9000
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.500 [ConfigProxy] info: 201 POST /api/routes/services/nbviewer
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.500 [ConfigProxy] info: Adding route /services/gallery -> http://127.0.0.1:9888
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.501 [ConfigProxy] info: Route added /services/gallery -> http://127.0.0.1:9888
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | 07:28:40.501 [ConfigProxy] info: 201 POST /api/routes/services/gallery
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:28:40.502 JupyterHub app:2849] JupyterHub is now running at http://0.0.0.0:8000/
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:29:16.591 JupyterHub base:762] User logged in: qycai
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:16.599 JupyterHub configurable:193] Config option `container_spec` not recognized by `DemoFormSpawner`.  Did you mean one of: `container_ip, container_prefix, extra_container_spec`?
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:16.602 JupyterHub configurable:193] Config option `use_user_options` not recognized by `DemoFormSpawner`.  Did you mean `volume_driver_options`?
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:16.604 JupyterHub configurable:193] Config option `readwrite_paths` not recognized by `DemoFormSpawner`.
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:16.605 JupyterHub configurable:193] Config option `user_workingdir` not recognized by `DemoFormSpawner`.
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:16.606 JupyterHub configurable:193] Config option `dynamic_users` not recognized by `DemoFormSpawner`.
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:29:16.607 JupyterHub log:189] 302 POST /hub/login?next= -> /hub/spawn (qycai@10.0.0.2) 71.03ms
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:29:16.684 JupyterHub log:189] 200 GET /hub/spawn (qycai@10.0.0.2) 60.39ms
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [I 2021-12-09 07:29:19.104 JupyterHub log:189] 200 GET /hub/api/authorizations/cookie/jupyterhub-services/[secret] (nbviewer@10.0.19.60) 34.97ms
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.385 tornado.general web:2990] Could not open static file ''
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.421 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.425 NBViewer log:57] 404 GET /services/nbviewer/static/build/styles.css (10.0.0.2) 70.95ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.430 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.431 NBViewer log:57] 404 GET /services/nbviewer/static/components/jquery/dist/jquery.min.js (10.0.0.2) 5.03ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.433 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.434 NBViewer log:57] 404 GET /services/nbviewer/static/components/requirejs/require.js (10.0.0.2) 7.09ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.436 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.437 NBViewer log:57] 404 GET /services/nbviewer/static/components/moment/min/moment.min.js (10.0.0.2) 9.15ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.456 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.457 NBViewer log:57] 404 GET /services/nbviewer/static/components/bootstrap/js/bootstrap.min.js (10.0.0.2) 2.98ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.461 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.462 NBViewer log:57] 404 GET /services/nbviewer/static/components/headroom.js/dist/headroom.min.js (10.0.0.2) 3.09ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [E 2021-12-09 07:29:19.465 NBViewer web:1219] Uncaught exception in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1704, in _execute
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         result = await result
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 2576, in get
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.absolute_path = self.validate_absolute_path(self.root, absolute_path)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 860, in validate_absolute_path
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise web.HTTPError(404)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     tornado.web.HTTPError: HTTP 404: Not Found
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     During handling of the above exception, another exception occurred:
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     Traceback (most recent call last):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1217, in send_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.write_error(status_code, **kwargs)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 590, in write_error
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         html = self.render_template("%s.html" % status_code, **ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jupyter_server/base/handlers.py", line 521, in render_template
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         return template.render(**ns)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1304, in render
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         self.environment.handle_exception()
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 925, in handle_exception
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         raise rewrite_traceback_stack(source=source)
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/404.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "error.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/error.html", line 1, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         {% extends "layout.html" %}
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/srv/jupyterhub/nbviewer-repo/nbviewer/templates/layout.html", line 89, in top-level template code
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         <a class="navbar-brand" href="{{ from_base('/') }}">
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |       File "/usr/local/lib/python3.8/dist-packages/jinja2/utils.py", line 84, in from_obj
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |         if hasattr(obj, "jinja_pass_arg"):
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    |     jinja2.exceptions.UndefinedError: 'from_base' is undefined
swarmhub_jupyter_cds.1.jk1au9ad2n8g@c5    | [W 2021-12-09 07:29:19.466 NBViewer log:57] 404 GET /services/nbviewer/static/components/headroom.js/dist/jQuery.headroom.min.js (10.0.0.2) 2.79ms referer="http://127.0.0.1:16667/services/nbviewer/" user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"

It work now :sweat_smile: :sweat_smile:thanks