跳转到主要内容

创建可分享的笔记本链接。

项目描述

# JupyterHub Share Link

这是一个仍在开发中的新项目。请勿在生产环境中使用。欢迎贡献者!

## 演示

在这个GIF中,Alice登录后,右键点击一个笔记本并选择“复制可分享链接”。出现一个对话框,说:

> 在接下来的一个小时里,任何拥有此链接的JupyterHub上的其他用户都将 > 能够获取dask-examples/array.ipynb的最新保存版本的副本。

她复制了链接并给了Bob。然后,在右边,Bob登录并将链接粘贴到他的浏览器中。他得到了Alice的笔记本的副本。

![演示](https://github.com/danielballan/jupyterhub-share-link/blob/master/demo.gif?raw=true)

## JupyterHub 兼容性

  • jupyterhub-share-link v0.0.1 与 JupyterHub 1.0 兼容

  • juptyerhub-share-link v0.1.x 采用不同的方法,需要对jupyterhub自身进行一行更改(https://github.com/jupyterhub/jupyterhub/pull/2755),该更改已提交供jupyterhub考虑纳入

## 使用和限制

这是在同一个Hub上的用户之间进行低功耗、短期分享。

发送者右键点击笔记本(或任何文件)并点击“复制可分享链接”。发送者将此链接提供给同一个Hub上的任何其他用户。当另一个用户点击分享链接时,文件的最新保存版本将从发送者的笔记本服务器复制到接收者。如果发送者更改了文件,接收者可以再次点击链接以创建反映更改的另一份副本。在给定的时间间隔后,链接将过期。

在提供用户在生成时选择项的Hub上,例如基于容器的生成器,共享链接会编码发送者运行该笔记本时使用的笔记本和选项(例如容器镜像)。接收者将自动被引导到具有相同选项的服务器:服务将找到一个合适的服务器,或者必要时生成一个。因此,接收者可以确信他们将在兼容的软件环境中运行笔记本。

这种方法不适用于持久共享,如需要长期维护的画廊或链接列表。对于这些用例,最好编码软件依赖项(如Binder存储库)而不是依赖特定镜像的可用性。

## 尝试一下 — 带容器或无容器

这种方法应与任何生成器兼容。这里给出两个例子,一个本地进程生成器和一个基于容器的生成器。

### 带容器

  1. 使用pip安装。

    ` pip install jupyterhub-share-link `

  2. 安装[DockerSpawner](https://github.com/jupyterhub/dockerspawner)。

    ` pip install dockerspawner `

  3. 生成一个密钥对,用于签名和验证共享链接。

    ` # 在当前目录中创建private.pem和public.pem python -m jupyterhub_share_link.generate_keys `

  4. 使用本存储库中提供的示例配置启动JupyterHub。

    ` jupyterhub -f example_config_dockerspawner.py `

  5. 使用任何用户名和密码登录——例如,alice。(此演示配置使用DummyAuthenticator。)

  6. 使用默认镜像danielballan/base-notebook-with-image-spec-extension生成服务器。

  7. 创建并保存要共享的笔记本Untitled.ipynb

  8. 在文件浏览器中找到Untitled.ipynb,右键单击它。将出现一个对话框。单击按钮以复制链接。

  9. 以不同用户身份登录并粘贴共享链接。

  10. 用户将启动一个新的服务器,运行与alice相同的镜像,并将笔记本复制并打开。

### 无容器

  1. 使用pip安装。

    ` pip install jupyterhub-share-link `

  2. 生成一个密钥对,用于签名和验证共享链接。

    ` # 在当前目录中创建private.pem和public.pem python -m jupyterhub_share_link.generate_keys `

  3. 将labextension安装到用户环境中。

    ` # 禁用默认的 share-file 扩展并注册我们的自定义扩展。 jupyter labextension disable @jupyterlab/filebrowser-extension:share-file jupyter labextension install jupyterhub-share-link-labextension `

  4. 使用本存储库中提供的示例配置启动JupyterHub。(为了能够以多个用户身份登录,您可能需要以root身份运行。)

    ` jupyterhub -f example_config_no_containers.py `

  5. 以系统用户身份登录并启动用户的服务器。

  6. 创建并保存要共享的笔记本Untitled.ipynb

  7. 在文件浏览器中找到Untitled.ipynb,右键单击它。将出现一个对话框。单击按钮以复制链接。

  8. 以不同用户身份登录并粘贴共享链接。

  9. 笔记本将被复制到该用户的服务器并打开。

## 设计

这包括

  • 一个无状态的Hub服务(在此存储库中)具有以下路由

    ` POST /create # 发布可共享链接 GET /open # 打开共享链接 GET / # 版本信息 `

  • 属于服务的公钥/私钥对,使其能够发布“共享”链接,并验证接收者未对其进行篡改。

  • 一个labextension,用于自定义“复制共享链接”上下文菜单项的行为,存储在[danielballan/jupyterhub-share-link-labextension](https://github.com/danielballan/jupyterhub-share-link-labextension)。

文件复制是通过笔记本的ContentsManager进行的,因此用户不必在同一个文件系统上。他们只需在同一个Hub上。

## 开放性问题

  • 加密路径以防止将目录结构泄露给接收者?

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

jupyterhub-share-link-0.1.1.tar.gz (28.7 kB 查看哈希值)

上传时间: 源代码

构建分发

jupyterhub_share_link-0.1.1-py3-none-any.whl (11.0 kB 查看哈希值)

上传时间: Python 3