Debian VPS 开机指南:从裸机到 Docker 生产环境

Debian VPS 开机指南:从裸机到 Docker 生产环境

一台新买的 VPS,第一件事不是部署服务,而是先给它“开光”。

本文记录一台全新 Debian VPS 从初始化到 Docker 运行环境搭建的完整过程,适合新购服务器、业务迁移及个人服务部署。

系统环境: Debian 12 / Debian 13
适用场景: VPS、云服务器、Docker 服务部署
最后更新: 2026 年 10 月


一、为什么选择 Debian?

最近准备迁移自己的 API 服务,需要重新购买一台日本 VPS。之前一直使用 Ubuntu、Rocky Linux 等发行版,这次决定尝试 Debian。

选择 Debian 主要有几个原因:

  • 足够精简: 没有图形化界面需求,操作系统自然越轻量越好。
  • 稳定性好: Debian Stable 适合长期运行的服务端环境。
  • 维护简单: APT 包管理器成熟,生态完善。
  • Docker 友好: 官方支持 Debian,可以直接通过 APT 安装 Docker Engine 和 Compose。

对于个人 VPS 来说,我更关心的是运行稳定性、资源开销以及维护成本,而不是桌面生态。

二、系统初始化

2.1 查看系统信息

连接服务器后,先确认操作系统和硬件环境。

cat /etc/os-release
uname -a
free -h
df -h

查看 CPU:

lscpu

查看公网 IP:

curl -4 https://api.ipify.org

2.2 更新软件包

apt update && apt upgrade -y

如果升级涉及内核,建议安排合适的时间重启服务器。

2.3 安装常用工具

Debian 最小化安装通常只包含基础软件包,需要补充一些常用工具。

apt install -y \
  curl wget git vim nano \
  htop tree unzip zip jq \
  bash-completion \
  ca-certificates gnupg \
  dnsutils traceroute mtr-tiny

其中:

  • htop:系统资源监控。
  • jq:JSON 格式化与解析。
  • mtr:网络链路质量诊断。
  • dnsutils:提供 dig 等 DNS 调试工具。
  • bash-completion:增强命令自动补全。

三、配置 Bash 终端颜色与 ll 命令

刚安装完 Debian,可能会发现一个不太习惯的地方:

执行 ll 提示:

bash: ll: command not found

而且执行 ls 时,文件和目录也没有熟悉的颜色高亮。

其实 ll 并不是 Linux 自带的独立命令,而是 Shell 中定义的 alias。

3.1 添加常用别名

编辑 Bash 配置:

nano ~/.bashrc

在末尾添加:

# 启用文件颜色
eval "$(dircolors -b)"

alias ls='ls --color=auto'
alias ll='ls -alhF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'

# grep 高亮
alias grep='grep --color=auto'

# 彩色 Bash 提示符
PS1='\[\e[01;32m\]\u@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\]\$ '

立即生效:

source ~/.bashrc

现在执行:

ll

就可以看到熟悉的文件颜色区分,以及文件权限、大小、修改时间等详细信息。

如果重新登录后配置没有生效,需要检查 ~/.profile 是否正确加载了 ~/.bashrc。

四、VPS IP 质量检测

对于海外 VPS 来说,IP 质量是购买之后非常值得检查的一项指标。

特别是部署 API 服务、访问海外平台、使用第三方服务时,IP 的信誉和网络环境会直接影响实际体验。

这里使用开源项目 IPQuality。

项目地址:

https://github.com/xykt/IPQuality

4.1 一键检测 IP 质量

bash <(curl -Ls https://Check.Place) -I

该命令会启动交互式检测界面。

也可以直接进行默认双栈检测:

bash <(curl -Ls https://IP.Check.Place)

仅检测 IPv4:

bash <(curl -Ls https://IP.Check.Place) -4

仅检测 IPv6:

bash <(curl -Ls https://IP.Check.Place) -6

检测结果可以帮助了解 IP 的部分属性、风险评分和平台访问情况。

重点关注:

  1. IP 类型: 机房 IP、住宅 IP 等分类。
  2. 风险评分: 不同数据库对 IP 的风险判断。
  3. 黑名单记录: 是否被部分安全数据库标记。
  4. 平台访问: 部分海外服务是否可以正常访问。
  5. 地理位置: IP 的数据库定位是否与预期一致。

需要注意,IP 质量评分仅用于参考。不同数据库的结果可能存在差异,也不能保证某个平台一定接受该 IP。

另外,运行第三方脚本之前,建议先阅读项目源码。curl 下载并直接执行远程脚本具有一定的安全风险。

五、网络质量与回国线路检测

由于这次 VPS 位于日本,而实际服务的主要访问者在中国大陆,因此仅仅检测 IP 信誉还不够。

IP 质量好,并不代表国内访问速度一定快。

例如,一台 VPS 的 IP 信誉不错,但晚高峰可能出现明显的延迟波动和丢包。

5.1 网络综合检测

可以使用同一系列的网络检测工具:

bash <(curl -Ls https://Net.Check.Place)

仅测试 IPv4:

bash <(curl -Ls https://Net.Check.Place) -4

测试延迟:

bash <(curl -Ls https://Net.Check.Place) -P

5.2 使用 MTR 进行链路诊断

mtr -rwzc 100 目标IP

其中:

  • -r:生成报告。
  • -w:宽格式输出。
  • -z:显示 AS 信息(支持时)。
  • -c 100:发送 100 次探测。

可以重点观察延迟、丢包率,以及不同节点之间的变化。

需要注意,中间路由节点可能限制 ICMP 响应,因此单个中间节点显示丢包,不一定意味着真实业务数据发生丢包。

5.3 晚高峰测试

如果 VPS 的主要用户位于中国大陆,建议在北京时间 20:00—23:00 之间进行额外测试。

重点关注:

  • 三大运营商实际访问延迟。
  • TCP 连接建立时间。
  • HTTPS 请求耗时。
  • 高峰期丢包和超时情况。
  • 大文件下载的实际吞吐。

尤其需要注意:服务器主动访问国内的回程测试,不能完全代表国内用户访问服务器的去程表现。最好结合国内实际客户端进行双向测试。

六、安装 Docker Engine 和 Docker Compose

Docker 是我部署服务的主要方式。

相比直接在宿主机安装数据库、运行时和各类服务,容器化部署更方便迁移、升级和回滚。

这里采用 Docker 官方 APT 软件源,而不是 Debian 自带的 docker.io 包。

6.1 安装依赖

apt update
apt install -y ca-certificates curl

6.2 添加 Docker 官方仓库

install -m 0755 -d /etc/apt/keyrings

curl -fsSL \
  https://download.docker.com/linux/debian/gpg \
  -o /etc/apt/keyrings/docker.asc

chmod a+r /etc/apt/keyrings/docker.asc

配置 APT 软件源:

cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

更新仓库:

apt update

6.3 安装 Docker

apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

以上命令适用于全新系统。如果已经安装 docker.io、旧版 docker-compose 或其他冲突组件,应先检查和处理,避免直接覆盖现有环境。

6.4 配置开机自启

systemctl enable --now docker

检查运行状态:

systemctl status docker

6.5 验证 Docker 与 Compose

docker --version
docker compose version

运行测试容器:

docker run --rm hello-world

至此,Docker 环境安装完成。

需要注意,新版本 Docker Compose 的命令为:

docker compose

而不是过去的:

docker-compose

七、Docker 生产环境基础优化

7.1 日志轮转

Docker 默认的 json-file 日志如果不加限制,长期运行可能占用大量磁盘空间。

全新环境可以配置:

mkdir -p /etc/docker

cat > /etc/docker/daemon.json <<'EOF'
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  },
  "live-restore": true
}
EOF

检查配置:

dockerd --validate \
  --config-file /etc/docker/daemon.json

然后重启 Docker:

systemctl restart docker

如果已有 daemon.json,应该合并配置而不是直接覆盖。

注意,默认日志配置主要对新创建的容器生效;已有容器需要重新创建后才能使用新的日志策略。

7.2 Docker Compose 自动重启

在业务项目中,可以配置:

services:
  app:
    image: nginx:stable
    container_name: demo-app
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:80"

启动:

docker compose up -d

查看日志:

docker compose logs -f

这里将端口绑定到 127.0.0.1,仅允许本机访问,适合后续通过 Caddy 或 Nginx 反向代理暴露服务。

八、SSH 安全加固

VPS 暴露在公网后,SSH 通常会持续受到自动扫描。

建议至少完成以下配置:

  1. 创建具有 sudo 权限的普通管理用户。
  2. 使用 SSH 公钥登录。
  3. 确认新用户可以正常连接后,禁用 root 远程登录。
  4. 根据需要关闭 SSH 密码认证。
  5. 配置防火墙并仅开放必要端口。

例如,在确认公钥认证已经正常工作后,可以创建 SSH 配置片段:

cat > /etc/ssh/sshd_config.d/99-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
EOF

检查配置语法:

sshd -t

确认没有报错后:

systemctl reload ssh

特别注意: 关闭 root 登录或密码登录前,必须先在另一个终端验证普通用户的公钥登录能力,否则可能导致自己无法再次连接服务器。

此外,Docker 发布容器端口时可能绕过部分 UFW 规则,因此不要仅依赖 UFW 管理 Docker 容器的公网暴露权限。

九、最终检查清单

一台 Debian VPS 完成初始化后,我通常会检查以下项目:

十、总结

一台 VPS 从购买到真正投入使用,中间其实还有不少初始化工作。

Debian 的优势在于精简、稳定、可控,尤其适合以 Docker 为主的服务部署场景。

我的服务器初始化流程基本可以归纳为:

系统更新 → 常用工具 → Shell 优化 → IP/网络检测 → Docker 安装 → 安全加固 → 业务部署。

对于海外 VPS,还有一个经验值得强调:

不要只看 CPU、内存和带宽参数,网络线路和晚高峰表现同样重要。

特别是面向中国大陆用户的日本 VPS,网络质量往往比表面上的带宽数值更能影响实际体验。

至此,一台全新的 Debian VPS 就算正式“开机”完成了。

接下来就可以愉快地部署自己的服务了。


参考资料

posted @ 2026-11-01 13:48  fengzeng  阅读(10)  评论(0)    收藏  举报