设置远程服务器

· Tutorials

设置远程服务器

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

这是在服务器上编辑代码的最佳方式。

  1. 在本地安装 VS Code。
  2. 安装 Remote - SSH 扩展。
  3. 点击左下角的绿色图标 > "Connect to Host..."。
  4. 输入 [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 来安全地暴露它而无需开放端口。

  1. 在服务器上安装 cloudflared。
  2. 认证:cloudflared tunnel login
  3. 启动隧道: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 不存在,请按照上面的“格式化和挂载”步骤操作。


资源


另请参阅:

Server Setup