Debian 服务器初始化全攻略:从裸机到生产环境
为什么选择 Debian?
Debian 作为最稳定、最可靠的 Linux 发行版之一,一直是服务器环境的首选。它的包管理系统稳定、安全,并且拥有庞大的软件仓库。本文将带你从一台全新的 Debian 13 服务器开始,一步步完成初始化配置,打造一个安全、高效的生产环境。
准备工作
在开始之前,我们需要:
- 一台安装好 Debian 13 的云服务器
- 服务器 IP 地址已解析到
maze.com域名 - 掌握
root密码,用于初始登录
第一步:登录服务器
首先,让我们通过 SSH 登录到服务器:
$ ssh root@maze.com
root@maze.com's password:第二步:设置主机名
为了便于识别和管理,我们需要设置主机名为maze.com:
$ hostnamectl hostname maze.com第三步:创建普通用户
直接使用root用户操作服务器存在安全风险,我们需要创建一个具有 sudo 权限的普通用户。这里我们创建一个名为mazeuser的用户:
# 创建用户并设置默认 shell 为 bash
$ useradd mazeuser -m -s /bin/bash
# 设置用户密码
$ passwd mazeuser
New password:
Retype new password:
passwd: password updated successfully
# 编辑 sudoers 文件,授予无密码 sudo 权限
$ /sbin/visudo在打开的sudoers文件中添加以下内容:
mazeuser ALL=(ALL) NOPASSWD: ALL第四步:配置 SSH 密钥登录
为了提高安全性并方便登录,我们使用 SSH 密钥进行无密码认证:
在本地机器上生成 SSH 密钥对
# 生成 Ed25519 密钥对(更安全、更高效)
$ ssh-keygen -t ed25519 -C "your_email@example.com"
# 将公钥复制到远程服务器
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub mazeuser@maze.com
mazeuser@maze.com's password:配置本地 SSH 客户端
修改本地的~/.ssh/config文件,添加如下内容:
Host maze.com
IdentityFile ~/.ssh/id_ed25519
User mazeuser
Port 22
ServerAliveInterval 60测试 SSH 登录
现在尝试登录服务器,应该不需要输入密码了:
$ ssh mazeuser@maze.com如果登录成功,说明配置正确,我们可以把mazeuser的密码删除:
$ sudo passwd --delete mazeuser
passwd: password changed.增强安全性:禁用密码登录(可选)
为了进一步提高安全性,我们可以禁用密码登录,只允许 SSH 密钥认证:
# 编辑 SSH 配置文件
$ sudo nano /etc/ssh/sshd_config
# 修改以下配置
PasswordAuthentication no
ChallengeResponseAuthentication no
# 重启 SSH 服务
$ sudo systemctl restart sshd第五步:更新系统
保持系统更新是安全的关键,让我们更新所有软件包:
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt autoremove -y
# 重启服务器以应用更新
$ sudo /sbin/reboot第六步:安全加固
配置防火墙
使用ufw作为防火墙,我们需要配置它只允许必要的端口:
# 安装 ufw
$ sudo apt install -y ufw
# 启用防火墙
$ sudo /sbin/ufw enable
# 允许 SSH、HTTP 和 HTTPS
$ sudo /sbin/ufw allow ssh
$ sudo /sbin/ufw allow http
$ sudo /sbin/ufw allow https
# 查看状态
$ sudo /sbin/ufw status安装 Fail2ban
Fail2ban 可以防止暴力破解 SSH 登录:
$ sudo apt install -y fail2ban
# 复制配置文件
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 启动并设置开机自启
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban第七步:安装必要的软件
安装 Caddy 服务器
Caddy 是一款现代化的 Web 服务器,它会自动处理 SSL 证书的申请和更新,以及 HTTP 到 HTTPS 的跳转,非常适合作为反向代理:
# 添加 Caddy 官方源
$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
$ sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
$ sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
# 安装 Caddy
$ sudo apt update
$ sudo apt install caddy
# 启动并设置开机自启
$ sudo systemctl enable caddy
$ sudo systemctl start caddy安装 Node.js
Debian 13 默认的 Node.js 版本比较低,我们使用 nvm 安装最新的 Node.js 25 版本:
# 下载并安装 nvm
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
# 加载 nvm(无需重启 shell)
$ \. "$HOME/.nvm/nvm.sh"
# 安装 Node.js 25
$ nvm install 25
$ nvm use 25
# 安装 pnpm(更高效的包管理器)
$ curl -fsSL https://get.pnpm.io/install.sh | bash
# 验证安装
$ node -v
v25.9.0
$ npm -v
11.12.1
$ pnpm -v
10.33.0安装 Podman
Podman 是一个无守护进程的容器运行时,比 Docker 更轻量、更安全。我们使用 Homebrew 安装最新版本:
# 安装 Homebrew (确保 git 已安装)
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 加载 Homebrew
$ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
$ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# 安装 Podman(slirp4netns 和 fuse-overlayfs 会以依赖的形式安装,rootlesskit 之后再说)
$ brew install podman
# 验证安装
$ podman version
# 尝试运行 Podman 容器(果然失败)
$ podman run hello-world这里尝试启动 Podman 容器是会失败的,因为没有配置 rootless 模式。
配置 Podman Rootless 模式
Rootless 模式允许普通用户运行容器。
刚刚的尝试中提示缺少uidmap,我们需要安装它。
sudo apt install uidmap再运行一次 Podman 的hello-world,这次成功了。
启用 unprivileged user namespaces:
$ sudo sysctl kernel.unprivileged_userns_clone # =1 to set the value
kernel.unprivileged_userns_clone = 1为用户分配 subuid 和 subgid:
$ sudo /sbin/usermod --add-subuids 100000-165535 --add-subgids 100000-165535 mazeuser创建 podman-system-generator 和 podman-user-generator。有了它们执行systemctl --user daemon-reload,会自动产生 systemd unit 文件。
$ sudo ln -sf /home/linuxbrew/.linuxbrew/opt/podman/libexec/podman/quadlet /usr/lib/systemd/system-generators/podman-system-generator
$ sudo ln -sf /home/linuxbrew/.linuxbrew/opt/podman/libexec/podman/quadlet /usr/lib/systemd/user-generators/podman-user-generator创建 conmon、crun 和 pasta,执行容器的时候需要它们
$ sudo ln -s /home/linuxbrew/.linuxbrew/bin/conmon /usr/local/bin/conmon
$ sudo ln -s /home/linuxbrew/.linuxbrew/bin/crun /usr/local/bin/crun
$ sudo ln -s /home/linuxbrew/.linuxbrew/bin/pasta /usr/local/bin/pasta此外,还需要安装 rootlesskit,它是一个 Podman 插件,用于在 rootless 模式下运行容器。
$ brew install podman rootlesskit总结:服务器已就绪
恭喜你!你已经成功完成了 Debian 服务器的初始化配置,现在你拥有了一个:
- 安全的服务器环境:SSH 密钥认证、禁用密码登录、防火墙配置
- 最新的软件包和系统更新
- 现代化的 Web 服务器 Caddy
- 最新版本的 Node.js 环境
- 轻量级的容器运行时 Podman
这台服务器现在已经准备好部署你的应用了。无论是运行网站、API 服务还是其他应用,它都能为你提供稳定、安全的运行环境。
当然,服务器管理是一个持续的过程,你还需要定期更新系统、监控性能、备份数据等。但现在,你已经有了一个坚实的基础,可以开始构建你的应用了!
