安装 Jupyter lab
1 | pip install jupyterlab |
配置 Jupyter lab
生成 Jupyter 密码密文
自动生成
1 | jupyter notebook password |
1 | output: |
手动生成
1 | # 在 ipython 中依次输入 |
也可以使用如下命令生成密文
1 | from notebook.auth import passwd; passwd() |
修改 Jupyter 配置文件
- 生成配置文件(配置文件路径默认为
~/.jupyter/jupyter_notebook_config.py
)
1 | jupyter-lab --generate-config |
- 修改配置文件
1 | vim ~/.jupyter/jupyter_notebook_config.py # 打开配置文件 |
将 Jupyter lab 配置为系统服务
为了方便管理,可以将 jupyter 配置为系统服务,具体步骤如下:
- 创建服务脚本
vim /usr/lib/systemd/system/jupyter.service
1 | [Unit] |
- 管理
jupyter.service
服务
1 | systemctl daemon-reload # 重载 systemctl |
- 检测服务端口是否启动
1 | netstat -na |grep 8888 |
远程访问 Jupyter lab
首先启动服务端 Jupyter lab
,在服务器终端输入:
1 | jupyter-lab --no-browser # no-browser 参数代表不需要打开浏览器 |
启动 Jupyter
后终端弹出的提示信息会包含在服务器访问的地址(http://localhost:8888/lab?...
)
1 | [C 2022-06-08 22:59:18.094 ServerApp] |
这表明 Jupyter 启动成功,现在可以转到本地进行操作。
通过 IP 地址访问
将上面得到的链接中的 localhost:8888
替换为服务器的 IP 地址,然后把替换后的地址放到本地浏览器打开即可。
可以使用
ip addr
查看服务器 IP 地址
但如果服务器的 IP 地址非公网 IP ,这种方法就不能远程访问 Jupyter,这就需要使用下面介绍到的方法。
通过 SSH 端口转发
- 在本地终端输入如下命令,通过建立 SSH 隧道实现把服务器的
8888
端口转发到本地8888
端口上来。
1 | ssh -N -f -L localhost:8888:localhost:8888 name@IP |
- 在本地浏览器输入
http://localhost:8888/lab
即可。
路由端配置 ddnsto 访问
无意中发现 DDNSTO 可以在路由端自动映射局域网内的 web 页面,而 Jupyter
从使用角度来讲就是一个 web 页面,因此就可以利用 ddnsto
轻松实现 Jupyter
的远程访问。
ddnsto
安装
我的路由器为 RT-N56UB1-newifi3D2-512M
,安装了老毛子系统 ,系统自带 ddnsto
,可以直接进行配置,其他路由器的安装可参考ddnsto 官方文档。
- 路由端配置
ddnsto
登录官网 控制台 拿到“令牌”
登录路由器后台做如下操作
在官网控制台设置域名,将局域网内的 Jupyter
主机地址设为目标主机地址(我这里将目标地址设置为 http://192.168.123.60:8888
),详细设置参考。
- 远程登录
Jupyter
等待一分钟左右,用生成的 kooldns.cn
后缀的域名即可访问。出于安全考虑,首次登录需要微信认证,认证通过后就会出现 Jupyter
的登录界面。
输入密码或 token 登录即可。
token 获取:如果是将
Jupyter
配置为系统服务,可 ssh 登录服务主机后使用journalctl -u jupyter.service | grep token
获取。
- ddnsto 方法缺点
虽然通过这种方法配置十分简单,但 ddnsto
出于安全考虑只允许用户本人使用,也就是说,多人访问 Jupyter
的情景不适合这种访问方式。
参考文献
[1] Project Jupyter | Installing Jupyter