设置远程服务器
TL;DR: 分步指南,教你如何设置用于生物信息学的 Linux 服务器。涵盖 SSH 访问、基本安全(防火墙、密钥)、环境设置(Conda、Docker)以及高级存储配置(RAID)。
为什么需要远程服务器?
生物信息学通常需要比笔记本电脑更多的内存和 CPU。迁移到远程服务器可以让你:
- 运行长时间作业(数天/数周)而无需保持笔记本电脑开机
- 访问更强大的计算资源(64GB+ 内存,数十个核心)
- 通过共享数据和环境进行协作
- 通过适当的备份策略确保数据安全
![]()
第一部分:初始访问
无论你使用的是 AWS、DigitalOcean、Oracle Cloud 还是大学的高性能计算集群,你都将通过 SSH 访问它。
1. 通过终端连接
# 语法:ssh 用户名@IP地址
ssh [email protected]
如果你有 PEM 密钥(AWS/Oracle 常见):
chmod 400 key.pem
ssh -i key.pem [email protected]
2. 设置 SSH 密钥(免密码登录)
停止使用密码!它们不安全且繁琐。
在你的本地机器上:
# 生成密钥对(如果尚未生成)
ssh-keygen -t ed25519 -C "[email protected]"
# 将公钥复制到服务器
ssh-copy-id [email protected]
现在你可以只用 ssh [email protected] 登录。
第二部分:基本安全
在安装分析工具之前,请确保服务器安全。
1. 更新系统
sudo apt update && sudo apt upgrade -y
2. 配置防火墙(UFW)
只允许必要的端口。
# 默认拒绝所有传入连接
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 SSH(关键:在启用防火墙之前做这一步!)
sudo ufw allow ssh
# 允许 HTTP/HTTPS(如果托管 Web 应用/Shiny)
sudo ufw allow http
sudo ufw allow https
# 启用防火墙
sudo ufw enable
3. 创建非 root 用户
避免以 root 身份工作。
# 创建用户 'bioinfo'
sudo adduser bioinfo
# 授予 sudo 权限
sudo usermod -aG sudo bioinfo
# 切换到新用户
su - bioinfo
第三部分:生物信息学环境
1. 安装 Mamba(更快的 Conda)
Mamba 是 2026 年包管理的标准。
# 下载 Miniforge(包含 Mamba)
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-*.sh
# 按照提示操作,然后重启 shell
source ~/.bashrc
2. 安装常用工具
sudo apt install -y build-essential git htop tmux tree unzip wget
3. 连接 VS Code
这是在服务器上编辑代码的最佳方式。
- 在本地安装 VS Code。
- 安装 Remote - SSH 扩展。
- 点击左下角的绿色图标 > "Connect to Host..."。
- 输入
[email protected]。
现在你可以像在本地一样在服务器上编辑文件和运行终端。
第四部分:高级存储(RAID)
如果你正在设置物理服务器或具有多个原始磁盘的裸机实例,可能需要配置 RAID 以提高性能或冗余性。
注意: 云虚拟机(EC2、Droplets)通常为你处理此问题。本节适用于物理设置。
1. 检查驱动器
lsblk
sudo fdisk -l
2. 创建分区
假设 /dev/sdc 和 /dev/sdd 是你的新数据驱动器:
sudo fdisk /dev/sdc
# 步骤:n (新建) > p (主分区) > 1 > Enter > Enter > t (类型) > fd (RAID) > w (写入)
# 对 /dev/sdd 重复此操作
3. 创建 RAID 阵列
使用 mdadm 工具。
选项 A:RAID 1(镜像)
最适合安全性。如果一个驱动器故障,数据是安全的。
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
选项 B:RAID 0(条带化)
最适合速度。合并容量,但如果一个故障,所有数据都会丢失。
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1
4. 格式化和挂载
# 格式化为 ext4
sudo mkfs.ext4 /dev/md0
# 创建挂载点
sudo mkdir -p /mnt/data
# 挂载
sudo mount /dev/md0 /mnt/data
5. 在重启后保持挂载
添加到 /etc/fstab 以便自动挂载。
# 获取 UUID
sudo blkid /dev/md0
# 编辑 fstab
sudo nano /etc/fstab
# 添加行:
# UUID=xxxx-xxxx-xxxx /mnt/data ext4 defaults 0 2
第五部分:暴露服务(可选)
如果你正在托管 Shiny 应用或 RStudio Server,可能需要 Cloudflare Tunnels 来安全地暴露它而无需开放端口。
- 在服务器上安装
cloudflared。 - 认证:
cloudflared tunnel login - 启动隧道:
cloudflared tunnel --url http://localhost:3838
这将为你的本地服务提供一个安全的 https://...trycloudflare.com URL。
故障排除
"Permission denied (publickey)"
原因: SSH 密钥未添加到服务器。
解决方法: 再次运行 ssh-copy-id 或检查 ~/.ssh/authorized_keys 的权限(应为 600)。
"Sudouser is not in the sudoers file"
原因: 忘记将用户添加到 sudo 组。
解决方法: 以 root/ubuntu 身份登录并运行 sudo usermod -aG sudo username。
磁盘已满,但我刚添加了 10TB?
原因: 新磁盘未挂载。
解决方法: 检查 df -h。如果 /mnt/data 不存在,请按照上面的“格式化和挂载”步骤操作。
资源
另请参阅: