由于我的服务器只构建个人博客,对服务器的占用并不高。最近看到有人在服务器上部署了云Jupyter Notebook,可惜原文教程链接进不去,于是我自己摸索,最后成功构建成功了。但是这期间也踩了许多坑,都一并分享一下。
推荐使用1panel+docker(+OpenResty)构建,方便且更加安全。
!下面以Unbuntu系统为例,其余系统类似(可按照步骤自行询问AI)
方式一:直接构建Jupyter Notebook环境(不推荐)
这种方式可能有一点问题,安全性和稳定性也比较低,仅适用于测试或低配置的服务器构建。
STEP 1:创建普通用户(可跳过,但使用默认root用户安全性低)
在终端执行下面代码:
sudo adduser jupyter_user # 创建一个新用户
赋予root权限(要安装Python):
sudo usermod -aG sudo jupyter_user
换到普通用户:
su - jupyter_user # 切换到新用户
cd ~ # 进入用户主目录
STEP 2:配置Python环境
1.安装 Python 和 pip
sudo apt update
sudo apt install python3-pip python3-venv -y
2.创建虚拟环境(可不需要,但推荐)
python3 -m venv ~/jupyter_venv # 创建虚拟环境
source ~/jupyter_venv/bin/activate # 激活环境
激活后,终端提示符会显示 (jupyter_venv)
3.安装 Jupyter Notebook
pip install notebook
STEP 3:配置 Jupyter Notebook
(1)生成配置文件
jupyter notebook --generate-config
配置文件路径:~/.jupyter/jupyter_notebook_config.py
。
(2)修改默认设置
nano ~/.jupyter/jupyter_notebook_config.py
找到并修改以下行(取消注释并调整,或者直接复制到文件里面):
c.NotebookApp.ip = '0.0.0.0' # 允许外部访问
c.NotebookApp.port = 8888 # 指定端口
c.NotebookApp.open_browser = False # 禁用自动打开浏览器
c.NotebookApp.notebook_dir = '/home/jupyter_user/workspace' # 设置默认目录
保存并退出(Ctrl+X
→ Y
→ Enter
)。
(3)创建默认目录
mkdir ~/workspace # 确保目录存在
STEP 4:启动 Jupyter Notebook
直接运行(需要一直挂ssh):
jupyter notebook
或后台运行(可断开ssh):
nohup jupyter notebook > ~/jupyter.log 2>&1 &
这样就配置好了。
在浏览器输入:
http://<服务器IP>:8888
如果设置了密码,输入密码;否则使用日志中的 token。
STEP 5:其它设置
-->设置密码(可选)
生成密码并避免使用 token:
jupyter notebook password
输入并确认密码后,下次登录可直接使用密码。
-->配置防火墙
开放 Jupyter 端口(如 8888):
sudo ufw allow 8888/tcp
-->恢复 root 权限
如果后续需要 root 权限操作:
exit # 退出普通用户,返回 root
方式二:使用docker+Nginx构建(较推荐)
1. 安装Docker
如果尚未安装Docker,先执行:
# 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker --version
2. 拉取Jupyter Notebook镜像
使用官方Jupyter镜像(包含Python环境):
sudo docker pull jupyter/base-notebook
3. 运行Jupyter Notebook容器
基础命令(无持久化存储)
sudo docker run -d \
--name jupyter \
-p 8888:8888 \
-e JUPYTER_ENABLE_LAB=yes \ # 使用JupyterLab界面
jupyter/base-notebook
推荐命令(带持久化存储和密码保护)
# 创建数据目录
mkdir -p ~/jupyter_data
# 运行容器(带密码和持久化)
sudo docker run -d \
--name jupyter \
-p 8888:8888 \
-v ~/jupyter_data:/home/jovyan/work \ # 挂载本地目录
-e JUPYTER_TOKEN=yourpassword123 \ # 设置访问令牌
jupyter/base-notebook
4. 访问Jupyter Notebook
获取访问URL:
sudo docker logs jupyter 2>&1 | grep "http://127.0.0.1:8888"
输出类似:
http://127.0.0.1:8888/?token=abcdef123456...
通过浏览器访问:
本地访问:
http://服务器IP:8888
输入日志中的token(或你设置的
JUPYTER_TOKEN
)
5. 高级配置
自定义Python环境
使用jupyter/scipy-notebook
镜像(包含科学计算库):
sudo docker pull jupyter/scipy-notebook
限制资源使用
sudo docker run -d \
--name jupyter \
-p 8888:8888 \
--memory=4g \ # 限制内存
--cpus=2 \ # 限制CPU核心
-v ~/jupyter_data:/home/jovyan/work \
jupyter/base-notebook
使用Nginx反向代理(HTTPS)
安装Nginx并配置:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启Nginx:
sudo systemctl restart nginx
6. 管理容器
停止/启动:
sudo docker stop jupyter
sudo docker start jupyter
删除容器:
sudo docker rm -f jupyter
更新镜像:
sudo docker pull jupyter/base-notebook
sudo docker stop jupyter
sudo docker rm jupyter
# 重新运行run命令
常见问题解决
端口冲突:
如果8888
端口被占用,修改-p
参数,例如-p 8899:8888
。
权限问题:
如果挂载目录无权限,添加--user root
参数:
sudo docker run -d --user root -v ~/jupyter_data:/home/jovyan/work ...
方式三:使用1panel+docker+Openresty构建(推荐)
Step 1:安装1panel和Openresty
首先下载安装『 1panel 』和『 Openresty 』,可以参考这篇文章:
安装好后,会自带docker容器。
Step 2:拉取镜像
按照下述步骤:在镜像名输入
jupyter/base-notebook
注:仓库大约1GB,可能需要等待一会,在此期间请勿重复拉取镜像。
Step 3:配置docker
按照下述步骤进入配置界面:
按照下面示例进行配置:
command中可以输入下面示例(--NotebookApp.token就是等会的登陆凭证):
start-notebook.sh --NotebookApp.token='yourpassword'
标签和环境变量可以不输,系统会自动生成。
确认之后就配置好了,可尝试ip访问:
http://服务器IP:8888
配置反向代理,以便外部访问
如果你想使用域名访问你的notebook,你可以参考下述链接:
pip设置国内镜像
如果服务器部署在国内,通常通过pip下载会很慢,这时候可以选择设置国内镜像源。
1. 临时使用国内镜像源
在 pip install
时直接指定镜像源:
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 永久配置全局镜像源
方法一:修改 pip 配置文件(推荐)
创建/修改配置文件:
mkdir -p ~/.pip
echo "[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn" > ~/.pip/pip.conf
验证配置:
pip config list
应输出:
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
方法二:通过命令配置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
3. 常用国内镜像源列表
4. 恢复默认官方源
pip config unset global.index-url