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 加密数据,这需要两个步骤
- 通过 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
- 在设置中设置相关的参数
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