无界面的 Ubuntu 系统配置远程访问配置 JupyterLab(Jupyter Notebook),在windows中通过网页访问,解决网页空白的问题和API的404问题

404错误:

[W 2025-07-18 16:49:04.843 ServerApp] 404 GET /api/kernels?1752828544725 (6f99c1ab21584553b5ac0af7dc7d5f6d@172.1.172.91) 2.03ms referer=http://127.0.0.1:8889/lab?

本方法使用于在无界面的linux系统中安装Jupyter,然后在windows中通过网页访问,之前用的别的方法,登录后网页是空白的,显示很多404错误,下面的方法可以解决,第一步是安装(我用的是miniconda并且重新构建了,pip也可以的),可以跳过




一,安装 Jupyter Notebook ,已安装的可以跳过

  1. 使用conda安装
# 使用conda安装(更可靠的依赖解析)
conda install jupyterlab notebook -c conda-forge
  1. 查询版本,看看是否安装成功
(myenv) root@fuwuqi:~/yilai# jupyter --version
Selected Jupyter core packages...
IPython          : 8.20.0
ipykernel        : 6.28.0
ipywidgets       : 8.1.1
jupyter_client   : 8.6.3
jupyter_core     : 5.8.1
jupyter_server   : 2.16.0
jupyterlab       : 4.4.4
nbclient         : 0.9.0
nbconvert        : 7.16.5
nbformat         : 5.10.4
notebook         : 7.4.4
qtconsole        : not installed
traitlets        : 5.14.1

  1. 重建 JupyterLab 资源

JupyterLab 的构建过程必须依赖 Node.js。这是因为 JupyterLab 的前端界面基于现代 JavaScript 框架开发,需要 Node.js 和 npm(或 yarn)来编译、打包和优化这些资源。

如果没安装node的,需要先安装node

  • 3.1 在系统上安装 Node.js 20.x

    # 安装 NodeSource 仓库(提供官方 Node.js)
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    
    # 安装 Node.js 和 npm
    sudo apt-get install -y nodejs
    
    # 验证版本
    node --version  # 应显示 v20.x.x以上
    npm --version   # 应显示 9.x.x以上
    
  • 3.2 配置 JupyterLab 使用系统 Node.js

    # 激活你的 Conda 环境
    conda activate myenv
    
    # 检查系统 Node.js 路径
    which node  # 通常是 /usr/bin/node
    
    # 设置环境变量,让 JupyterLab 使用系统 Node.js
    export NODE_EXECUTABLE=$(which node)
    
    # 清理并重建 JupyterLab
    jupyter lab clean
    jupyter lab build --dev-build=False --minimize=False
    
  • 3.3 清理并重建 JupyterLab

    jupyter lab clean
    jupyter lab build
    
  1. 配置方式1(参考):配置 JupyterLab 远程访问

    • 4.1 生成配置文件

      jupyter lab --generate-config
      

      配置文件路径:~/.jupyter/jupyter_lab_config.py

    • 4.2. 设置密码:按提示输入密码,加密后的密码会保存在配置文件中

      jupyter lab password
      
    • 4.3. 修改配置文件
      打开配置文件:

      nano ~/.jupyter/jupyter_lab_config.py
      

      添加 / 修改以下内容(取消注释并更新值):

      c.ServerApp.ip = '0.0.0.0'          # 允许所有IP访问
      c.ServerApp.port = 8889             # 指定端口
      c.ServerApp.open_browser = False    # 禁止自动打开浏览器
      c.ServerApp.allow_remote_access = True  # 允许远程访问
      c.ServerApp.root_dir = '/'          # 工作目录(可选)
      

      按 Ctrl+O 保存,Ctrl+X 退出

    • 4.4. 后台运行 JupyterLab

      • 使用 screen 或 tmux 创建持久会话(推荐 screen):

        screen -S jupyter
        jupyter lab
        
        
        #jupyter notebook
        

        按 Ctrl+A+D 分离会话(JupyterLab 继续运行)。未来可通过 screen -r jupyter 重新连接。

      • 使用nohup让 Jupyter 在后台运行:

        nohup jupyter lab &
        
    • 4.5. 防火墙配置(如果需要)
      开放 8889 端口:

      sudo ufw allow 8889
      
  2. 配置方式2(参考):直接启动JupyterLab 远程访问

    • 5.1 jupyter lab启动

      jupyter lab --no-browser --port=8888
      
      • –no-browser:不自动打开浏览器(适用于无界面服务器)
      • –port=8888:指定端口(可自定义
    • 5.2. 后台运行 JupyterLab

      # 方法1:使用 nohup
      nohup jupyter lab --no-browser --port=8889 &
      
      # 方法2:使用 screen(推荐,方便后续管理)
      screen -S jupyter
      jupyter lab --no-browser --port=8889
      # 按 Ctrl+A+D 分离会话,后续可通过 screen -r jupyter 重新连接
      



二,服务器上开启jupyter lab

jupyter-lab --ip 0.0.0.0 --port 8889 --no-browser --allow-root

#--ip 0.0.0.0 :代表不限制ip
#--port 8889  :端口号
#--no-browser :启动的时候不自动打开浏览器
#--allow-root :允许root 身份运行




三,本地做端口映射

打开cmd ,把本地8888端口映射到服务器8889上,

ssh -N -f -L localhost:8888:localhost:8889 user_name@server_ip -p 22

#user_name:服务器ssh的登录名
#server_ip: 服务器的ip地址

服务器可以用netstat网络命令查看端口占用情况:

  • netstat:这是一个用于显示网络连接、路由表和网络接口等网络相关信息的工具。
  • -tulnp:这是 netstat 的一组选项参数,各个字母代表的含义如下:
  • -t:用于显示 TCP 协议的连接情况。
  • -u:用于显示 UDP 协议的连接情况。
  • -l:只显示处于监听状态(Listening)的服务。
  • -n:直接使用 IP 地址和端口号,而不通过 DNS 进行反向解析查找对应的主机名。
  • -p:显示与网络连接相关的进程 ID(PID)以及进程名称。
(myenv) root@fuwuqi:~/yilai# netstat -tulnp | grep 8889
tcp        0      0 0.0.0.0:8889            0.0.0.0:*               LISTEN      2207257/python3.10

#tcp:表明这是一个 TCP 协议的连接。
#0.0.0.0:8889:意味着该服务正在监听所有可用的网络接口,使用的端口号是 8889。
#LISTEN:说明当前服务正处于监听状态,随时准备接受客户端的连接请求。
#2207257/python3.10:这里的 2207257 是进程 ID(PID),python3.10是进程名称,这表明是 Python 程序在使用这个端口。



四,本地浏览器进行访问

  1. 打开本地浏览器,若有设置密码,则输入之前设置的密码登录:
http://localhost:8888

在这里插入图片描述

在这里插入图片描述

  1. 验证 GPU 支持(可选):
    在 JupyterLab 中创建新笔记本,运行:
import torch
print(f"CUDA可用: {torch.cuda.is_available()}")
  1. 故障排除
  • 端口被占用:修改配置文件中的 port 为其他值(如 8889)。
  • 忘记密码:删除 ~/.jupyter/jupyter_server_config.json 中的密码字段,重新设置密码
  • JupyterLab 已成功启动,但由于以 root 用户 运行而被阻止。这是 Jupyter 的安全机制,默认禁止 root 用户直接启动。
    • 错误信息: [C 2025-07-18 … Running as root is not recommended.]

    • 解决1:强制以 root 身份运行

      • 添加 --allow-root 参数:
        jupyter lab --no-browser --port=8888 --allow-root
        
      • 修改配置文件 ~/.jupyter/jupyter_lab_config.py:
        c.ServerApp.allow_root = True
        
    • 解决2:以普通用户身份运行,创建新用户并授予必要权限

      adduser jupyter  # 创建新用户
      usermod -aG sudo jupyter  # 添加 sudo 权限
      su - jupyter  # 切换到新用户
      
      # 在新用户环境中重新安装 Jupyter 或激活环境
      conda activate myenv
      jupyter lab --no-browser --port=8888
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值