Skip to content

Jupyter Server 配置

通过 jupyter server --generate-config 会自动创建 $HOME/.jupyter/jupyter_server_config.py 配置文件,其中以 c.ServerApp 这样的前缀来指定配置项目。

Tips

Jupyter Server 扩展在 jupyter --paths 中的 jupyter_{ext_name}_config.py|json 文件中配置

Tips

一些老的教程介绍的都是 Notebook Server 的选项(在 jupyter_notebook_config.py 文件中),他们通常以 c.NotebookApp 作为前缀。如果要迁移他们对应到就是 jupyter_server_config.py 中的 c.ServerApp

安全访问 Jupyter Server

默认情况下 Jupyter Server 只能由 localhost 访问,如果想要在公网访问需要做一些安全设置。

设置登录密码

默认情况下 Jupyter Server 通过 token 来鉴权,如果需要公网访问就需要设置登录密码,这可以通过 jupyter server password 来实现:

Bash
$ jupyter server password
Enter password:  ****
Verify password: ****
[JupyterPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_server_config.json

Tips

如果密码丢失或者需要重置密码可以重新运行该命令。

使用 SSL 加密通信

我们需要通过 SSL 来加密内容来在公开的网络上传输数据,这就需要 SSL 加密数据,这需要两个步骤

  1. 通过 openssl 生成 SSL 签名证书,注意这只是自签名浏览器会发出警告(不过我们可以自己核对是否有问题),如果不想浏览器发出警告就需要我们通过签发机构来发证书(例如免费的 Let's Encrypt)
Bash
# 创建了一个有效期 365 天的签名证书(*.key 密钥, *.pem 证书)
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout jupyter_server.key -out jupyter_server.pem
  1. 在设置中设置相关的参数
Python
c.ServerApp.certfile = '/absolute/path/to/your/certificate/mycert.pem'
c.ServerApp.keyfile = '/absolute/path/to/your/certificate/mykey.key'

开启监听端口

默认只监听回环网卡(127.0.0.1)上的端口,我们可以设置为 * 来监听所有网络访问:

Python
c.ServerApp.ip = '*'
# 不要自动打开浏览器
c.ServerApp.open_browser = False
# It is a good idea to set a known, fixed port for server access
c.ServerApp.port = 9999

参考