Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add image with Linux Desktop environment in it #1961

Closed
wants to merge 2 commits into from

Conversation

yuvipanda
Copy link
Contributor

The JupyterHub project's
jupyter-remote-desktop-proxy has been getting a bunch of good use lately, particularly around bringing users who wouldn't traditionally use notebooks alone. For example, in this climate science workshop's blog post on the jupyter
blog (https://blog.jupyter.org/desktop-gis-software-in-the-cloud-with-jupyterhub-ddced297019a?postPublishedType=initial), you can see how being able to use both notebooks and linux desktop software (qgis, in this case) in the same way brings an entirely new class of users to the Jupyter ecosystem.

However, running this linux desktop environment inside a container isn't particularly easy, and getting a base image running will be useful to a lot of people. I can provide links to different communities that this would benefit if needed.

This PR adds such a base image that others may inherit from to add specific packages on top. If this looks good, I can write up documentation on how to add specific images - and we can use qgis as a good example.

Describe your changes

Issue ticket if applicable

Checklist (especially for first-time contributors)

  • I have performed a self-review of my code
  • If it is a core feature, I have added thorough tests
  • I will try not to use force-push to make the review process easier for reviewers
  • I have updated the documentation for significant changes

yuvipanda and others added 2 commits August 7, 2023 20:24
The JupyterHub project's
[jupyter-remote-desktop-proxy](https://github.com/jupyterhub/jupyter-remote-desktop-proxy)
has been getting a bunch of good use lately, particularly around
bringing users who wouldn't traditionally use notebooks *alone*.
For example, in this climate science workshop's blog post
on the jupyter
blog (https://blog.jupyter.org/desktop-gis-software-in-the-cloud-with-jupyterhub-ddced297019a?postPublishedType=initial),
you can see how being able to use *both* notebooks and linux desktop
software (qgis, in this case) in the same way brings an entirely
new class of users to the Jupyter ecosystem.

However, running this linux desktop environment inside a container
isn't particularly easy, and getting a base image running will be
useful to a lot of people. I can provide links to different
communities that this would benefit if needed.

This PR adds such a base image that others may inherit from to
add specific packages on top. If this looks good, I can write up
documentation on how to add specific images - and we can use
qgis as a good example.
@consideRatio
Copy link
Collaborator

This project hasn't added images for a long time, but during the last few months, this has changed. I see that as enabled by an amazing effort by @mathbunnyru helping the project catch up on a huge amount of maintenance.

To ensure healthy maintenance of this project, I consider its crucial that the issue about defining an image policy in #1958 is completed before this PR is considered.

@bjornjorgensen
Copy link
Contributor

why don't you use KasmVNC ?
linuxserver.io does use it.

@freitagb
Copy link

freitagb commented Aug 8, 2023

Thanks for raising this point @yuvipanda - this kind of feature would be extremely helpful for the U.S. Greenhouse Gas Center jupyterhub we're currently deploying.

@yuvipanda
Copy link
Contributor Author

@bjornjorgensen mostly because tigervnc is where all the current experience has been. I think there are definitely many other options to explore.

@consideRatio
Copy link
Collaborator

Having reasoned about this further I think that jupyter/docker-stacks shouldn't (at least not yet) embrace a new image including jupyter-remote-desktop-proxy together with system level dependencies to present and remote view a Linux desktop user interface.

I reason that adding an image like this is similar to adding a new image for a another programming language besides what the project currently maintain images for (Julia, Python, R). Doing that would introduce a new set of complexities for this projects maintainance.

Practically for this specific image, I think it could pivot towards the jupyterhub/jupyter-remote-desktop-proxy project's existing Dockerfile. It currently builds on the jupyter/base-image already.

Sorry for pushing back on this @yuvipanda, I'm very happy to help work this in jupyterhub/jupyter-remote-desktop-proxy though!

@yuvipanda
Copy link
Contributor Author

I am pretty happy with that resolution, @consideRatio! I think that would also allow us to offer more variants, including an image with qgis pre-installed perhaps! I'll close this one, and move it over there.

@benz0li
Copy link
Contributor

benz0li commented Aug 8, 2023

yuvipanda added a commit to jupyterhub/jupyter-remote-desktop-proxy that referenced this pull request Aug 8, 2023
Setting up docker images that run applications well can be a little
complex, so we provide a simple base image that makes that easy. In
addition, we also provide some simple derived images that have popular
datascience related desktop applications set up correctly and ready to
use.

The images will be published *only* to [quay.io](https://quay.io/organization/jupyter-remote-desktop-proxy),
to make sure people don't run into pulling limits from Dockerhub.

\## Base image `quay.io/jupyter-remote-desktop-proxy/base`

This image is based off the `jupyter/minimal-notebook` image maintained
as part of jupyter/docker-stacks, and adds the following features:

1. The lightweight [XFCE4 desktop environment](https://www.xfce.org/)
2. The [Firefox web browser](https://www.mozilla.org/en-US/firefox/new/)
3. A helper script to setup [.desktop](https://wiki.archlinux.org/title/desktop_entries) files
   correctly, so applications can show up in the Desktop and Application launcher.
3. A helper script to setup [MIME associations](https://wiki.archlinux.org/title/XDG_MIME_Applications)
   correctly, so users can double click certain kinds of files and have them open
   in specific applications.

\## QGIS image `quay.io/jupyter-remote-desktop-proxy/qgis`

This image is based off the base image, and installs the popular [QGIS](https://qgis.org/en/site/)
application. A desktop launcher icon is provided, along with filetype associations
so users can double click most files that can be opend via QGIS and they will
be!
Brings in jupyter/docker-stacks#1961

\## Automated building

There's a `build.py` that automatically builds and pushes the images,
dealing with dependencies as appropriate.
yuvipanda added a commit to jupyterhub/jupyter-remote-desktop-proxy that referenced this pull request Aug 8, 2023
Setting up docker images that run applications well can be a little
complex, so we provide a simple base image that makes that easy. In
addition, we also provide some simple derived images that have popular
datascience related desktop applications set up correctly and ready to
use.

The images will be published *only* to [quay.io](https://quay.io/organization/jupyter-remote-desktop-proxy),
to make sure people don't run into pulling limits from Dockerhub.

\## Base image `quay.io/jupyter-remote-desktop-proxy/base`

This image is based off the `jupyter/minimal-notebook` image maintained
as part of jupyter/docker-stacks, and adds the following features:

1. The lightweight [XFCE4 desktop environment](https://www.xfce.org/)
2. The [Firefox web browser](https://www.mozilla.org/en-US/firefox/new/)
3. A helper script to setup [.desktop](https://wiki.archlinux.org/title/desktop_entries) files
   correctly, so applications can show up in the Desktop and Application launcher.
3. A helper script to setup [MIME associations](https://wiki.archlinux.org/title/XDG_MIME_Applications)
   correctly, so users can double click certain kinds of files and have them open
   in specific applications.

\## QGIS image `quay.io/jupyter-remote-desktop-proxy/qgis`

This image is based off the base image, and installs the popular [QGIS](https://qgis.org/en/site/)
application. A desktop launcher icon is provided, along with filetype associations
so users can double click most files that can be opend via QGIS and they will
be!
Brings in jupyter/docker-stacks#1961

\## Automated building

There's a `build.py` that automatically builds and pushes the images,
dealing with dependencies as appropriate.

Thanks to @MattF-NSIDC for figuring out a lot of the qgis desktop &
mime stuff.

Co-authored-by: Matt Fisher <matt.fisher@nsidc.org>
@yuvipanda
Copy link
Contributor Author

Thank you very much for those links, @benz0li! I appreciate those.

I'm currently the maintainer of the jupyter-earth image, and my hope is to eventually split that image up into many different ones. This would be one of them.

The other images are all super cool! I think I'd like to base one off the jupyter dockerstacks one, and use mamba in general rather than apt. But lots of XFCE stuff for me to reuse (and I'll make sure to credit appropriately).

I've moved this one to jupyterhub/jupyter-remote-desktop-proxy#51, and expanded it to include a qgis specific image as well.

Thank you for the discussion, @consideRatio!

@yuvipanda yuvipanda closed this Aug 8, 2023
yuvipanda added a commit to jupyterhub-image-garden/jupyterhub-image-garden that referenced this pull request Nov 3, 2023
Setting up docker images that run applications well can be a little
complex, so we provide a simple base image that makes that easy. In
addition, we also provide some simple derived images that have popular
datascience related desktop applications set up correctly and ready to
use.

The images will be published *only* to [quay.io](https://quay.io/organization/jupyter-remote-desktop-proxy),
to make sure people don't run into pulling limits from Dockerhub.

\## Base image `quay.io/jupyter-remote-desktop-proxy/base`

This image is based off the `jupyter/minimal-notebook` image maintained
as part of jupyter/docker-stacks, and adds the following features:

1. The lightweight [XFCE4 desktop environment](https://www.xfce.org/)
2. The [Firefox web browser](https://www.mozilla.org/en-US/firefox/new/)
3. A helper script to setup [.desktop](https://wiki.archlinux.org/title/desktop_entries) files
   correctly, so applications can show up in the Desktop and Application launcher.
3. A helper script to setup [MIME associations](https://wiki.archlinux.org/title/XDG_MIME_Applications)
   correctly, so users can double click certain kinds of files and have them open
   in specific applications.

\## QGIS image `quay.io/jupyter-remote-desktop-proxy/qgis`

This image is based off the base image, and installs the popular [QGIS](https://qgis.org/en/site/)
application. A desktop launcher icon is provided, along with filetype associations
so users can double click most files that can be opend via QGIS and they will
be!
Brings in jupyter/docker-stacks#1961

\## Automated building

There's a `build.py` that automatically builds and pushes the images,
dealing with dependencies as appropriate.

Thanks to @MattF-NSIDC for figuring out a lot of the qgis desktop &
mime stuff.

Co-authored-by: Matt Fisher <matt.fisher@nsidc.org>
yuvipanda added a commit to jupyterhub-image-garden/jupyterhub-image-garden that referenced this pull request Nov 3, 2023
Setting up docker images that run applications well can be a little
complex, so we provide a simple base image that makes that easy. In
addition, we also provide some simple derived images that have popular
datascience related desktop applications set up correctly and ready to
use.

The images will be published *only* to [quay.io](https://quay.io/organization/jupyter-remote-desktop-proxy),
to make sure people don't run into pulling limits from Dockerhub.

\## Base image `quay.io/jupyter-remote-desktop-proxy/base`

This image is based off the `jupyter/minimal-notebook` image maintained
as part of jupyter/docker-stacks, and adds the following features:

1. The lightweight [XFCE4 desktop environment](https://www.xfce.org/)
2. The [Firefox web browser](https://www.mozilla.org/en-US/firefox/new/)
3. A helper script to setup [.desktop](https://wiki.archlinux.org/title/desktop_entries) files
   correctly, so applications can show up in the Desktop and Application launcher.
3. A helper script to setup [MIME associations](https://wiki.archlinux.org/title/XDG_MIME_Applications)
   correctly, so users can double click certain kinds of files and have them open
   in specific applications.

\## QGIS image `quay.io/jupyter-remote-desktop-proxy/qgis`

This image is based off the base image, and installs the popular [QGIS](https://qgis.org/en/site/)
application. A desktop launcher icon is provided, along with filetype associations
so users can double click most files that can be opend via QGIS and they will
be!
Brings in jupyter/docker-stacks#1961

\## Automated building

There's a `build.py` that automatically builds and pushes the images,
dealing with dependencies as appropriate.

Thanks to @MattF-NSIDC for figuring out a lot of the qgis desktop &
mime stuff.

Co-authored-by: Matt Fisher <matt.fisher@nsidc.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants