当前位置: 首页 > news >正文

jupyter服务器创建账户加映射对外账户地址

文章目录

      • 一、创建test1-test10用户(跳过已存在的test3)
      • 二、检查必要组件是否安装
      • 三、启动多用户映射的脚本(整合Code-Server启动与JupyterLab代理配置)
      • 说明

以下是根据需求生成的命令、检查脚本及启动脚本,按步骤执行即可:

一、创建test1-test10用户(跳过已存在的test3)

# 循环创建用户,若用户已存在则跳过
for U in test1 test2 test3 test4 test5 test6 test7 test8 test9 test10; doif ! id "$U" &>/dev/null; then# 用户不存在时创建,家目录自动生成,默认shell为bashuseradd -m -s /bin/bash "$U"# 为新用户设置密码(可根据需要修改密码)echo "$U:StrongPassword123" | chpasswdecho "用户 $U 创建完成"elseecho "用户 $U 已存在,跳过创建"fi
done

二、检查必要组件是否安装

创建检查脚本 check_dependencies.sh,用于验证 code-serverjupyterlabjupyter-server-proxy 是否安装:

#!/bin/bash# 检查code-server是否安装
if command -v code-server &>/dev/null; thenecho "✅ code-server 已安装,版本:$(code-server --version | head -n1)"
elseecho "❌ code-server 未安装,请先执行安装命令:curl -fsSL https://code-server.dev/install.sh | sh"
fi# 检查jupyterlab是否安装
if command -v jupyter &>/dev/null && jupyter lab --version &>/dev/null; thenecho "✅ JupyterLab 已安装,版本:$(jupyter lab --version)"
elseecho "❌ JupyterLab 未安装,请先执行安装命令:pip install jupyterlab"
fi# 检查jupyter-server-proxy是否安装
if pip show jupyter-server-proxy &>/dev/null; thenecho "✅ jupyter-server-proxy 已安装,版本:$(pip show jupyter-server-proxy | grep Version | awk '{print $2}')"
elseecho "❌ jupyter-server-proxy 未安装,请先执行安装命令:pip install jupyter-server-proxy"
fi# 检查jupyter-server-proxy扩展是否启用
if jupyter server extension list 2>/dev/null | grep -q "jupyter_server_proxy.*enabled"; thenecho "✅ jupyter-server-proxy 扩展已启用"
elseecho "❌ jupyter-server-proxy 扩展未启用,请执行:jupyter server extension enable --sys-prefix jupyter_server_proxy"
fi

执行检查脚本:

chmod +x check_dependencies.sh
./check_dependencies.sh

根据输出提示,安装缺失的组件(若有)。

三、启动多用户映射的脚本(整合Code-Server启动与JupyterLab代理配置)

创建启动脚本 start_multi_user_ide.sh,实现自动配置端口代理、启动各用户Code-Server及JupyterLab:

#!/bin/bash# 配置参数
USERS=(test1 test2 test3 test4 test5 test6 test7 test8 test9 test10)  # 用户列表
BASE_PORT=8881  # 起始端口(test1→8881,test2→8882,...,test10→8890)
JUPYTER_PORT=8900  # JupyterLab端口(与Code-Server不冲突)
JUPYTER_CONFIG_DIR="/opt/conda/etc/jupyter/jupyter_server_config.d"  # Jupyter配置目录# 步骤1:配置Jupyter允许代理的端口
echo "🔧 配置Jupyter代理允许的端口(8881-8890)..."
mkdir -p "$JUPYTER_CONFIG_DIR"
cat > "$JUPYTER_CONFIG_DIR/proxy-allowed-ports.json" << 'EOF'
{"ServerProxy": {"allowed_ports": [8881,8882,8883,8884,8885,8886,8887,8888,8889,8890]}
}
EOF# 步骤2:启动各用户的Code-Server
echo -e "\n🚀 启动各用户的Code-Server..."
for idx in "${!USERS[@]}"; doUSER="${USERS[$idx]}"PORT=$((BASE_PORT + idx))  # 计算当前用户的端口HOME_DIR="/home/${USER}"DATA_DIR="${HOME_DIR}/.local/share/code-server"  # 存储用户配置EXT_DIR="${HOME_DIR}/.local/share/code-server/extensions"  # 扩展目录LOG_FILE="${HOME_DIR}/code-server.log"  # 日志文件# 创建必要目录并授权mkdir -p "${DATA_DIR}" "${EXT_DIR}"chown -R "${USER}:${USER}" "${HOME_DIR}/.local/share"# 停止该端口已有的Code-Server进程if ss -ltn | grep -q ":${PORT} "; thenecho "⚠️ 端口 ${PORT} 已被占用,正在关闭旧进程..."pkill -f "code-server.*:${PORT}"sleep 2  # 等待进程退出fi# 以用户身份启动Code-Server(后台运行,日志写入文件)echo "▶️ 启动用户 ${USER} 的Code-Server(端口:${PORT})"su - "$USER" -c "\nohup code-server \--auth password \  # 如需免密,改为--auth none--bind-addr 127.0.0.1:${PORT} \--user-data-dir \"${DATA_DIR}\" \--extensions-dir \"${EXT_DIR}\" \\"${HOME_DIR}\" \> \"${LOG_FILE}\" 2>&1 &\"
done# 步骤3:启动JupyterLab(作为反向代理入口)
echo -e "\n🌐 启动JupyterLab(端口:${JUPYTER_PORT})..."
# 停止已有的JupyterLab进程
if ss -ltn | grep -q ":${JUPYTER_PORT} "; thenecho "⚠️ JupyterLab端口 ${JUPYTER_PORT} 已被占用,正在关闭旧进程..."pkill -f "jupyter-lab.*:${JUPYTER_PORT}"sleep 2
fi# 启动JupyterLab(后台运行,日志写入/var/log/jupyterlab.log)
nohup jupyter lab \--ip=0.0.0.0 \--port="${JUPYTER_PORT}" \--allow-root \
> /var/log/jupyterlab.log 2>&1 &# 等待3秒后检查服务状态
sleep 3
echo -e "\n✅ 启动完成,状态检查:"
echo "Code-Server端口监听情况:"
ss -ltnp | grep "888[1-9]\|8890" | awk '{print $4, $7}'
echo -e "\nJupyterLab监听情况:"
ss -ltnp | grep "${JUPYTER_PORT}" | awk '{print $4, $7}'# 输出访问地址示例
echo -e "\n📌 访问地址示例:"
echo "JupyterLab主页:http://<宿主机IP>:<宿主机映射端口>/lab?token=<日志中的token>"
echo "test1的Code-Server:http://<宿主机IP>:<宿主机映射端口>/proxy/8881/"
echo "test10的Code-Server:http://<宿主机IP>:<宿主机映射端口>/proxy/8890/"

执行启动脚本:

chmod +x start_multi_user_ide.sh
./start_multi_user_ide.sh

说明

  1. 用户创建:仅创建不存在的用户,test3若已存在会自动跳过。
  2. 依赖检查:通过脚本快速定位缺失的组件,确保环境就绪。
  3. 启动脚本
    • 自动配置Jupyter代理允许的端口(8881-8890)。
    • 为每个用户启动独立的Code-Server,绑定专属端口,日志存储在用户家目录。
    • 启动JupyterLab作为统一入口,后台运行并生成访问日志。
  4. 访问方式:通过宿主机映射的JupyterLab端口,访问 /proxy/<用户端口>/ 即可进入对应用户的Code-Server(初始需输入用户的Linux密码,如需免密可修改脚本中--auth参数)。
    本回答由AI生成,仅供参考,请仔细甄别,如有需求请咨询专业人士。
http://www.xdnf.cn/news/1267651.html

相关文章:

  • 2025-08-09 李沐深度学习12——卷积神经网络基础
  • Zabbix自动注册:轻松实现大规模监控
  • Vue3环境搭建+Mybatis-plus的使用
  • 【ref、toRef、toRefs、reactive】ai
  • 具体数学:和式(四)求和的一般方法
  • 【linux基础】Linux目录和Windows目录的区别
  • Openlayers基础教程|从前端框架到GIS开发系列课程(19)地图控件和矢量图形绘制
  • SimBA算法实现过程
  • GitHub第三方登录全解析:OAuth 2.0流程详解(适合初学者)
  • 华为实验: 单区域/多区域OSPF
  • 华为实验-VLAN基础
  • ComfyUI——舒服地让大模型为我所用
  • 微信原生小程序 Timeline 组件实现
  • AI大语言模型在生活场景中的应用日益广泛,主要包括四大类需求:文本处理、信息获取、决策支持和创意生成。
  • python学智能算法(三十六)|SVM-拉格朗日函数求解(中)-软边界
  • 算法题(183):质量检测
  • Java异常:认识异常、异常的作用、自定义异常
  • 扣证件照要点
  • 全栈:JDBC驱动版本和SQLserver版本是否有关系?怎么选择JDBC的版本号?
  • 数据结构—二叉树及gdb的应用
  • WebGIS视角下基孔肯雅热流行风险地区分类实战解析
  • 开源智能手机安全相机推荐:Snap Safe
  • Python如何将图片转换为PDF格式
  • PDF编辑工具,免费OCR识别表单
  • 论文阅读-ZeroDCE和ZeroDCE++
  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • elementui input无法输入问题
  • 202506 电子学会青少年等级考试机器人一级理论综合真题
  • 【n8n教程笔记——工作流Workflow】文本课程(第二阶段)——5 自动化业务工作流——0 用例 (Use case)
  • 阿里云 ECS 怎么用 nginx 部署80端口多个网站