Jupyter-server-proxy stopped showing icons for extensions after ubuntu 22.04 upgrade

Just updated the base image for a docker container to the below. Before this change, extension using jupyter-server-proxy worked great.

jupyter/pyspark-notebook:aarch64-ubuntu-22.04

With the 20.04 based image, all apps were visible (see screenshot below)

After the upgrade, the services I configured through the file linked below were no longer shown (GitGadget and Radiant). Nothing was changed to the config file.

I don’t see anything wrong and the standard logs for jupyter (I use supervisord) don’t show any error messages. Also, Rstudio and jupyter-pgweb-proxy are working as expected so jupyter-server-proxy is available and running. See link to jupyter-pgweb-proxy that is still working fine.

Any suggestions on where to even look for the issue? Clearly something is not working but I can’t see what might be wrong.

Docker files linked below:

Since only two of the apps are broken there might be an updated dependency in the base image that they’re incompatible with. Have you tried starting from a minimal Dockerfile and adding one app at a time with the minimal configuration required? If it works then iteratively add more configuration or other apps/dependencies. If it doesn’t then you know it’s only due to the interaction between the app and the base image, and you can start comparing the dependencies in the base images.

Thanks for the suggestion @manics. Took a while but I eventually traced the issue back to a new version of nbclassic. When I downgrade from 0.4.3 to 0.3.7 the launchers are visible again and work as expected.

nbclassic=0.3.7 to nbclassic=0.4.3

On M1 (or M2) Jupyterlab (running on 8989) will show all icons (incl. GitGadget and Radiant)

docker run --rm -p 8989:8989 vnijs/rsm-jupyter:2.5.0

The reproducible example where the icons are gone is given by building the docker image using the Docker file content below and then running

docker run --rm -p 8989:8989 vnijs/rsm-test

Would it be appropriate to post this as an issue for jupyter-server-proxy?

Dockerfile:

FROM vnijs/rsm-jupyter:2.5.0

USER root

# the following upgrade messes up the custom launcher icons nbclassic=0.4.3
RUN mamba install --quiet --yes -c conda-forge nbclassic=0.4.3

# open a browser at localhost:8989 and you should see GitGadget and Radiant 
# launchers in jupyterlab
# RUN mamba install --quiet --yes -c conda-forge nbclassic=0.3.7

# make system R the first choice
ENV PATH="/usr/local/bin:$PATH"

EXPOSE 8181 8282 8765 8989 8501 8000
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

# Switch back to jovyan to avoid accidental container runs as root
USER ${NB_UID}
ENV HOME /home/${NB_USER}
WORKDIR "${HOME}"

If the icons are working for the other applications it’s more likely (though not impossible!) that the issue is with the app rather than jupyter-server-proxy. Try turning on debug logging and checking the logs from startup.

Is it possible the upgrade of nbclassic is preventing your app from loading?

Hmmm. So how would you explain that the apps worked perfectly from JupyterLab, when launched from Rstudio, and without JupyterLab on Ubuntu 20.04. The also work perfectly on Ubuntu 22.04 except when launched from JupyterLab when nbclassic=0.4.3?

The config file linked below hasn’t changed in months and jupyter-server-proxy also hasn’t been updated in a while.

FYI All images are built on top of the jupyter/pyspark-notebook docker image.

Question: See the issue below. Is it possible that nbclass=0.4.3 is somehow overwriting my jupyter_notebook_config.py file or otherwise causing another one to be read instead?

It sounds like it’s related! It also looks like there’s a PR Point nbclassic at the classic jupyter_notebook_config path by Zsailer · Pull Request #137 · jupyter/nbclassic · GitHub

Thanks for your suggestions @manics. I ended up copying the config setup from the repo below which was based on the cookie-cutter template provided by the jupyter-server-proxy team:

The below now works as intended with nbclassic 0.4.3. Hopefully this config set up will be robust to future changes in the jupyter eco system

https://github.com/vnijs/jupyter-radiant-proxy