Ubuntu / Debian 新机到手第一步要做的事情
每次拿到一台新的 Ubuntu / Debian 服务器必执行的初始化配置:一键换源、安装常用工具、启用 BBR、安装 Docker、开启虚拟内存等,让你的服务器快速进入生产状态。
每次拿到一台新的 Ubuntu / Debian 服务器,我都会执行以下这些步骤来进行初始化配置。这些命令经过长期实践验证,可以帮助你快速完成服务器的基础环境搭建。
前置说明:本文适用于 Ubuntu 20.04+ / Debian 11+,请以 root 或具备 sudo 权限的用户执行。标有「可选」的步骤可按需选择。
一键换源
换源是第一步,可以显著提升后续软件包的下载速度。
海外机
如果你的服务器在海外,使用官方源即可:
bash <(curl -sSL https://raw.githubusercontent.com/SuperManito/LinuxMirrors/main/ChangeMirrors.sh) --use-official-source true
国内机
国内服务器可使用以下任一方式换源。
方式一:linuxmirrors.cn(推荐)
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
方式二:Gitee 镜像
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
更新常用工具包
换源后先更新索引,再安装日常运维必备工具:
apt update && apt install -y curl wget git zip unzip tar gzip lsof vim sudo htop tmux net-tools ca-certificates gnupg lsb-release
常用工具说明:
curl/wget- 下载文件git- 版本控制zip/unzip/tar/gzip- 压缩解压lsof- 查看端口占用、进程打开的文件vim- 文本编辑器sudo- 权限管理htop- 进程监控tmux- 终端多会话,断线不中断net-tools- 提供 ifconfig、netstat 等网络命令ca-certificates/gnupg/lsb-release- 很多脚本和 Docker 依赖
切换主机名
修改主机名,方便识别:
hostnamectl set-hostname localhost
你可以将 localhost 替换为你想要的主机名,比如 web-server 或 my-vps。
创建普通用户(推荐)
长期用 root 风险较高,建议创建普通用户并加入 sudo:
adduser your_username
usermod -aG sudo your_username
将 your_username 替换为你的用户名。之后可用 su - your_username 切换,用 sudo 执行需提权命令。
SSH 加固(可选)
在确认能用密钥登录后再执行,避免锁死自己。
1. 本机生成密钥,把公钥写入服务器:
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
2. 禁用密码登录、禁止 root 直连(可选):
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
配置防火墙 UFW
只开放必要端口,降低暴露面:
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
sudo ufw status
若 SSH 使用非 22 端口,请先 ufw allow 你的端口/tcp 再 enable,避免断连。
安装 fail2ban(可选)
防止 SSH 等服务的暴力破解,自动封禁异常 IP:
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
查看状态:sudo fail2ban-client status
开启自动安全更新(可选)
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
一键启用 BBR
BBR 是 Google 开发的 TCP 拥塞控制算法,可以显著提升网络传输速度:
sudo modprobe tcp_bbr && echo "net.ipv4.tcp_congestion_control = bbr" | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
验证是否启用成功:
sysctl net.ipv4.tcp_congestion_control
# 输出应为:net.ipv4.tcp_congestion_control = bbr
部分 OpenVZ 等虚拟化环境不支持 BBR,需先确认内核是否支持
tcp_bbr。
一键安装 Docker
Docker 是现代应用部署的标配。
海外机
curl -fsSL https://get.docker.com | sh
国内机
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
Docker 换源(国内机)
国内环境拉取镜像较慢,安装完 Docker 后可一键配置镜像加速:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
安装完成后建议执行:
1. 将当前用户加入 docker 组,免去每次 sudo:
sudo usermod -aG docker $USER
需重新登录后生效。
2. 设置开机自启:
sudo systemctl enable docker
sudo systemctl start docker
3. 安装 Docker Compose 插件(常用):
sudo apt install -y docker-compose-plugin
docker compose version
验证 Docker 是否正常运行:
docker --version
docker run hello-world
开启虚拟内存
对于内存较小的 VPS,开启 Swap 可以防止内存不足导致的程序崩溃:
sudo fallocate -l 2G /swapfile && sudo chmod 700 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
建议 Swap 大小设置为物理内存的 1-2 倍,但不超过 4G。若使用 XFS 且
fallocate报错,可改用:sudo dd if=/dev/zero of=/swapfile bs=1M count=2048再执行后续步骤。
(可选)降低 Swap 使用倾向,减少频繁换页,优先用物理内存:
echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
验证 Swap 是否启用:
free -h
设置时区与时间同步
将系统时区设置为中国标准时间,并开启 NTP 同步:
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
验证时区与同步状态:
date
timedatectl status
磁盘与资源检查(可选)
有数据盘或担心空间不足时,可先查看磁盘与 inode:
df -h
df -i
df -h 看容量,df -i 看 inode 是否快用满(小文件多时易触发)。
总结
以上步骤覆盖了换源、基础工具、时区、主机名、虚拟内存、BBR、用户与 SSH、防火墙、Docker 及可选的安全与自动化更新。建议执行顺序:
- 必做:换源 → 更新与安装工具包 → 时区 → 主机名 → 虚拟内存 → BBR
- 安全:创建普通用户 →(可选)SSH 加固 → UFW →(可选)fail2ban
- 应用:安装 Docker → 国内机做 Docker 换源 → 用户组与自启
- 可选:自动安全更新、磁盘检查
可将上述命令按顺序保存为脚本(如 init.sh),按需删减后执行。如有其他好用的初始化技巧,欢迎在评论区分享!