一、写在前面
(1)为什么选择这种组合
-
FutureTerminal:云服务器已进入黑暗森林时代,教你一招通过FutureTerminal安全连接。FutureTerminal非常适合通过 SSH 访问远程 Linux 服务器,并利用 SSH 隧道把远程 Jupyter 安全地转发到本地浏览器。
-
Conda:把 Python、R、Jupyter 及其依赖隔离在独立环境中,减少不同项目之间的版本冲突。
-
JupyterLab:在同一个交互式工作区中运行终端命令、Python单元和R单元,便于数据分析与结果留痕。
-
Python + R + Linux:Python适合通用编程与可视化,R适合统计分析与 ggplot2 绘图,Linux命令则便于文件管理、环境检查和批处理。
生信Linux交流群欢迎大家加入
(2)前期准备
Linux和Conda是我们本节环境搭建的基础,这两部分我们在前期推送中也有相关内容介绍。如果还没有接触过的同学可以跟随我们十小时学会Linux、生信软件管家------conda的安装、使用、卸载和利用conda打包/复刻生信环境教程内容提前学习一下。
jupyter notebook作为Python的集成环境,可以逐行运行Python代码并返回结果,并且支持markerdown语法编译,可以说是一个学习Python的笔记本。jupyter notebook使用可以参考码Python神器:jupyter notebook。
Python语法简洁、库资源丰富,计算高效,是数据科学、自动化开发等领域的首选,兼顾新手入门与资深者高效需求。因此,同学们在学习这个教程前,需要有一定得Python知识,可以参考生信Python速查手册进行快速学习。
(3)使用前提
-
已获得服务器的合法访问权限;
-
FutureTerminal 已能通过 SSH 登录服务器;
-
服务器可以访问Conda官方源或 conda-forge。
-
如果你没有服务器,随时滴滴**Biomamba_zhushou咨询获取试用:https://biomamba.xiyoucloud.net/\*\*

二、配置过程
1. 在 FutureTerminal 中创建 Conda 环境
以下命令应在 FutureTerminal 的远程 SSH 终端中执行。若服务器已经安装 Conda,可跳过 Miniconda 安装部分。
bash
# ===== FutureTerminal 远程终端中执行 =====
# 下面是 Shell 命令示例;请复制到 FutureTerminal 的终端,而不是 Python 单元中执行。
# 安装 Miniconda(安装目录按实际权限修改,例如我这里设置为家目录)
cd ~
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash
# 执行安装步骤
bash Miniconda3-latest-Linux-x86_64.sh
# 当前终端加载 Conda
source /home/biomamba_lucky/miniconda3/bin/activate base
# 如需长期生效,可将下面一行加入 ~/.bashrc(确认路径无误后再执行)
echo 'source /home/biomamba_lucky/miniconda3/bin/activate base' >> ~/.bashrc
cs
# 接受 Anaconda 默认通道服务条款(新版本 Conda 可能需要)
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
# 创建 Python 3.10 环境,这里python版本可以根据自己实际软件需求调整
conda create -n test_env python=3.10 -y
conda activate test_env
# 安装 JupyterLab 与 Jupyter Server
conda install jupyter -y -vv
conda install -c conda-forge jupyterlab jupyter_server -y
安全提示:Jupyter 登录方式:
推荐使用 SSH 隧道 + Jupyter 内置 token/密码,不要把 Jupyter 端口直接暴露到公网。jupyter notebook password会交互式要求输入密码
nginx
# 生成 Jupyter 配置文件
cd ~
jupyter notebook --generate-config
# 设置 Jupyter 登录密码(交互式执行),后续可以用这里设置的密码登录jupyter
# !!! 注意:linux终端中输入密码不显示,但是实际伴随你输入完成密码也会设置完成
jupyter notebook password
bash
# 写入远程访问端口配置
cd ~
cat >> ~/.jupyter/jupyter_notebook_config.py <<'EOF'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
EOF
2. 安装 R 内核与 R 绘图库
这里将 r-irkernel 安装到 test_env 环境中。为了让 R 内核能稳定出现在 Jupyter 中,建议同时安装 R、IRkernel 和 ggplot2。
css
# 在 FutureTerminal 终端执行
conda activate test_env
conda install -c conda-forge r-base r-irkernel r-ggplot2 -y
# 进入R,依次完成以下输入:
R
# 关联R和jupyter lab
IRkernel::installspec()
q()
# 退出R并选择n,不保存工作空间
3、安装python库
nginx
# 安装python库
conda install -c conda-forge matplotlib -y
4. 在 FutureTerminal 中配置SSH隧道并启动jupyter lab
4.1 建立 SSH 隧道
(1)导出配置

(2)导入配置

(3)连接远程终端

(4)建立隧道 - 点击编辑

(5)建立隧道 - 新建隧道

(6)建立隧道 - 应用jupyter

(7)建立隧道 - 点击右侧浏览器访问
打开终端后进入隧道位置查看目前已经建立的隧道,显示jupyter,点击右侧浏览器访问

(8)建立隧道 - 打开页面

(9)建立隧道 - 输入密码并点击登入

4.2 启动jupyter lab
启动Jupyter服务。启动日志通常会显示带 token 的访问地址;通过 SSH 隧道访问时,浏览器地址一般使用本机的 localhost 端口。
nginx
# 终端运行
jupyter lab
启动成功标志


5. Jupyter中运行Linux命令
Jupyter 的代码单元可以用 ! 执行单条 Shell 命令,也可以用 %%bash 执行多行 Shell 脚本。下面的示例只做环境检查,不修改系统文件。
bash
# 单条 Linux 命令
!whoami
!pwd
!uname -a
biomamba_lucky
/home/biomamba_lucky
Linux shpc-52909-instance-NAA0QSBY 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
bash
# 查看 Jupyter 已识别的内核
! jupyter kernelspec list
# 查看conda安装地址
! which conda
# 查看目前已经建立的conda环境
! conda env list
Available kernels:
ir /home/biomamba_lucky/miniconda3/envs/test_env/share/jupyter/kernels/ir
python3 /home/biomamba_lucky/miniconda3/envs/test_env/share/jupyter/kernels/python3
test_env /home/biomamba_lucky/.local/share/jupyter/kernels/test_env /home/biomamba_lucky/miniconda3/condabin/conda
#conda environments:
#* -> active
#+ -> frozen
base /home/biomamba_lucky/miniconda3
bash
test_env * /home/biomamba_lucky/miniconda3/envs/test_env
bash
# 查看 `~/.jupyter/jupyter_notebook_config.py`
!cat ~/.jupyter/jupyter_notebook_config.py | tail -n 3
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
6. Jupyter中运行Python:绘制散点图
该示例使用 matplotlib 和 numpy 模拟在python中可视化场景。
6.1 指定kernel

python
# 通过python检查文件是否存在以及行内容
from pathlib import Path
config_path = Path.home() / '.jupyter' / 'jupyter_notebook_config.py'
if config_path.exists():
content = config_path.read_text(encoding='utf-8')
lines = content.splitlines()
# 取末尾三行
print('\n'.join(lines[-3:]))
else:
print(f'配置文件不存在:{config_path}')
print('请先在终端执行:jupyter notebook --generate-config')
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
6.2 绘制图形
apache
# 导入库
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟数据
rng = np.random.default_rng(42)
x = np.linspace(0, 10, 80)
y = 1.8 * x + rng.normal(0, 2.0, size=x.size)
# 绘制散点图
fig, ax = plt.subplots(figsize=(7, 4.5), dpi=120)
ax.scatter(x, y, s=42, alpha=0.78, color='
ax.set_title('Python scatter plot')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.grid(True, alpha=0.22)
fig.tight_layout()
plt.show()

7. Jupyter中运行R:使用ggplot2绘制散点图
7.1 指定kernel

7.2 绘制图形
perl
library(ggplot2)
set.seed(42)
r_data <- data.frame(
x = seq(0, 10, length.out = 80),
y = 1.8 * seq(0, 10, length.out = 80) + rnorm(80, mean = 0, sd = 2)
)
ggplot(r_data, aes(x = x, y = y)) +
geom_point(size = 2.4, alpha = 0.78, colour = '#D97706') +
labs(
title = 'R ggplot2 scatter plot',
x = 'X',
y = 'Y'
) +
theme_minimal(base_size = 12)
Warning message:
"package 'ggplot2' was built under R version 4.4.3"
8. 故障排查清单
-
conda: command not found:重新执行 source /home/biomamba_lucky/miniconda3/bin/activate base,并确认安装路径。 -
无法激活环境:conda activate test_env检查环境名称无误。
-
Jupyter 看不到 R 内核:确认r-base、r-irkernel 已在目标环境安装,并重新运行 IRkernel::installspec();随后刷新或重启 JupyterLab。
-
浏览器无法连接:检查远程 Jupyter 是否仍在运行、端口是否一致,以及 SSH 隧道左侧端口和浏览器端口是否一致。
-
端口被占用:将本地隧道端口改为空闲端口。
9. 完成检查
-
FutureTerminal 可以 SSH 登录服务器;
-
test_env已创建并使用 Python 3.10;
-
jupyter kernelspec list中出现 Python 和 R 内核;
-
JupyterLab 通过 SSH 隧道访问,而不是直接暴露公网;
-
Linux命令、Python 散点图和 R ggplot2 散点图均成功运行。