创建可分享的笔记本链接。
项目描述
# JupyterHub Share Link
这是一个仍在开发中的新项目。请勿在生产环境中使用。欢迎贡献者!
## 演示
在这个GIF中,Alice登录后,右键点击一个笔记本并选择“复制可分享链接”。出现一个对话框,说:
> 在接下来的一个小时里,任何拥有此链接的JupyterHub上的其他用户都将 > 能够获取dask-examples/array.ipynb的最新保存版本的副本。
她复制了链接并给了Bob。然后,在右边,Bob登录并将链接粘贴到他的浏览器中。他得到了Alice的笔记本的副本。

## 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存储库)而不是依赖特定镜像的可用性。
## 尝试一下 — 带容器或无容器
这种方法应与任何生成器兼容。这里给出两个例子,一个本地进程生成器和一个基于容器的生成器。
### 带容器
使用pip安装。
` pip install jupyterhub-share-link `
安装[DockerSpawner](https://github.com/jupyterhub/dockerspawner)。
` pip install dockerspawner `
生成一个密钥对,用于签名和验证共享链接。
` # 在当前目录中创建private.pem和public.pem python -m jupyterhub_share_link.generate_keys `
使用本存储库中提供的示例配置启动JupyterHub。
` jupyterhub -f example_config_dockerspawner.py `
使用任何用户名和密码登录——例如,alice。(此演示配置使用DummyAuthenticator。)
使用默认镜像danielballan/base-notebook-with-image-spec-extension生成服务器。
创建并保存要共享的笔记本Untitled.ipynb。
在文件浏览器中找到Untitled.ipynb,右键单击它。将出现一个对话框。单击按钮以复制链接。
以不同用户身份登录并粘贴共享链接。
用户将启动一个新的服务器,运行与alice相同的镜像,并将笔记本复制并打开。
### 无容器
使用pip安装。
` pip install jupyterhub-share-link `
生成一个密钥对,用于签名和验证共享链接。
` # 在当前目录中创建private.pem和public.pem python -m jupyterhub_share_link.generate_keys `
将labextension安装到用户环境中。
` # 禁用默认的 share-file 扩展并注册我们的自定义扩展。 jupyter labextension disable @jupyterlab/filebrowser-extension:share-file jupyter labextension install jupyterhub-share-link-labextension `
使用本存储库中提供的示例配置启动JupyterHub。(为了能够以多个用户身份登录,您可能需要以root身份运行。)
` jupyterhub -f example_config_no_containers.py `
以系统用户身份登录并启动用户的服务器。
创建并保存要共享的笔记本Untitled.ipynb。
在文件浏览器中找到Untitled.ipynb,右键单击它。将出现一个对话框。单击按钮以复制链接。
以不同用户身份登录并粘贴共享链接。
笔记本将被复制到该用户的服务器并打开。
## 设计
这包括
一个无状态的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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 58bb43b1b4f38788165532ba029a6d3ff90dd90f4a8c309277a62429a0b76b93 |
|
MD5 | 5e6bb362440b4a285526c45966e24d33 |
|
BLAKE2b-256 | b99616a51e9b9ab33349d9d74ead47443995af5d22060b83b715ae847487e503 |
jupyterhub_share_link-0.1.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7af5faa734ba6fc9da54fda1a042382c5090cf6d23a29df60eb87bc8136e228d |
|
MD5 | 351768234b005c382a2573896a9c0582 |
|
BLAKE2b-256 | b0e3d45bfee5c70a761d7f3ee204a7cf068dbba3e0d8357050060487852cf103 |