VPS 建站指南
VPS 服务商
海外 VPS 优惠/评测/推荐:科技 lion 官方网站 - KEJILION
我选择了 RackNerd 1 核 1G 一年 10 刀的极致性价比套餐,这使得我的机器资源比较吃紧,只能省着用,选择最轻量级的部署方式。

性能优化
重装
在云服务平台选购完毕后,通常会让用户选择一个系统,个人喜欢选择最小化方式安装 Debian 系统,选择任意最近的两个稳定版本即可。如果没有初次安装的选项,控制台通常也会提供重装的选项。

开启 Swap 区
Swap 文件是 Linux 系统中用于扩展物理内存的一种机制。当系统的物理内存(RAM)不足时,Swap 文件可以将不常用的数据从内存转移到硬盘的交换区域,从而释放更多的内存供其他进程使用。
如果你的服务器内存比较吃紧,或者需要部署的网站和应用比较多,建议开启 Swap 区,内部其实是将一段物理磁盘即 swap 分区充当内存来使用,这个过程会出现换出(把进程暂时不用的内存数据存储到磁盘中)和换入(进程需要再次访问这些内存的时候,把它们从磁盘读到内存中)两个过程。
查看是否开启
# 方法1:查看所有激活的swap设备/文件(看是否有输出)
swapon --show
# 方法2:查看内存概览,看Swap那一行的used/total
free -h
# 方法3:查看内核swap统计信息
cat /proc/swaps官方建议 Swap 大小
创建 Swap 文件,使用 dd 命令创建指定大小的 swap 文件:
# 创建1GB的swap文件
sudo dd if=/dev/zero of=/var/swap bs=1024 count=1048576格式化 Swap 文件
# 将文件格式化为swap格式
sudo mkswap /var/swap
# 设置正确的权限
sudo chmod 0600 /var/swap启用 Swap
# 启用swap文件
sudo swapon /var/swap
# 验证swap是否启用
swapon -s永久启用 Swap,为了系统重启后自动启用 swap,需要将其添加到 /etc/fstab 文件:
# 添加swap文件到fstab
echo '/var/swap swap swap defaults 0 0' >> /etc/fstab禁用 Swap
# 禁用swap文件
sudo swapoff /var/swap
# 验证swap是否已禁用
swapon -sSwap 优化方式:
- 调整 Swappiness
- 调整 swap 的 I/O 调度
开启 BBR 加速
BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 开发的一种 TCP 拥塞控制算法。
相比传统的拥塞控制算法,BBR 有如下好处:
- 提高网络吞吐量:更好地利用可用带宽
- 减少延迟:降低网络延迟和抖动
- 提升用户体验:特别适合高带宽、高延迟的网络环境
- 自动适应:根据网络状况自动调整参数
内核版本要求:4.9 及以上,查看 当前内核版本:uname -r
开启 BBR 方式如下:
验证本系统是否兼容 BBR ,主流的 Debian/Ubuntu 版本通常都支持 BBR
# 加载BBR算法模块,确保不报错
sudo modprobe tcp_bbr
#验证BBR模块是否已加载
lsmod | grep tcp_预期输出:
修改/etc/sysctl.conf配置文件来启用 BBR
- 设置了Fair Queuing(公平排队)作为默认的排队规则
- 指定
bbr作为拥塞控制算法。
# 设置默认队列规则为fq
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
# 设置TCP拥塞控制算法为bbr
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 应用配置
sysctl -p验证 BBR 启用状态
# 查看可用的拥塞控制算法
sysctl net.ipv4.tcp_available_congestion_control
# 预期输出 net.ipv4.tcp_available_congestion_control = reno cubic bbr
# 查看默认队列规则
sysctl net.core.default_qdisc
# 预期输出 net.core.default_qdisc = fq
# 查看当前使用的拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
# 预期输出 net.ipv4.tcp_congestion_control = bbr通过以上步骤,网络连接已经能够够享受到 BBR 带来的性能提升,包括更高的吞吐量和更低的延迟。
安全防护
开启防火墙
建议打开 systemctl,默认拒绝所有。但是好似云服务商的具有前置防火墙如安全组 (Security Group) / ACL 规则,这是位于服务器实例以外的“云上虚拟防火墙”。例如只要有安全组规则放行了 22 端口,流量就已经能进入系统,系统内部的 firewalld 再怎么阻止也无能为力了。
# 查看firewalld服务状态
systemctl status firewalld
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙状态
firewall-cmd --state
# 查看防火墙规则
firewall-cmd --list-all防暴力破解 fail2ban
服务器的 SSH/服务每天都会遭到大量登录尝试。

查看日志:grep "Failed password" /var/log/auth.log | tail -20,几乎是每分钟 5 次。

安装 fail2ban 可以实时扫描日志,识别重复失败的登录尝试后,自动向防火墙(如 iptables、firewalld、nftables)下发规则临时封禁恶意 IP,从而: 降低暴力破解成功率;
apt install fail2ban -y
systemctl enable --now fail2ban # 添加开机自启动与启动创建 /etc/fail2ban/jail.d/common.local 基本配置
[DEFAULT]
# 白名单(替换为你信任的 IP)
ignoreip = 127.0.0.1/8 ::1 203.0.113.5
# 封禁 1 小时(可改为 86400 秒或 -1 永久)
bantime = 1h
# 在 10 分钟内统计失败次数
findtime = 10m
# 失败 5 次触发封禁
maxretry = 5
backend = auto
[sshd]
enabled = true
port = ssh
# debian/Ubuntu
logpath = /var/log/auth.log
# CentOS
#logpath = /var/log/secure查看封禁列表
fail2ban-client status sshd手动解除封禁
fail2ban-client set sshd unbanip 1.2.3.4服务器管理
一体式
直接安装一体化的面板,适合新手入门,几乎包揽服务器所有模块,网站配置、运行环境、容器管理、数据库、防火墙、监控、终端等等,使用一体化面板管理服务器、网站和应用基本可以摆脱命令行。
常见的 Linux 运维管理一体化面板有:宝塔面板、1Panel、aaPanel
1Panel 安装脚本
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"组合式
如果不喜欢这类糅合了所有管理功能的面板,看起来十分的臃肿,用的不熟练容易找不到配置的位置。可以组合使用不同层面上的 web 管理工具,例如有些面板只专注于 Linux 系统管理,有些面板只做类 Nginx 的 HTTP 服务器可视化,有些面板是做 docker 容器的可视化编排和管理,这很好地体现了“单一职责”的理念。如果说你追求轻量级、视觉清新的管理方案可以采用这种方式。
我通过实际体验总结了有如下几个方案:
- 高可用方案:Cockpit + nginx-ui + Portainer
- 极致轻量级方案:Cockpit + nginx-proxy-manager + dockge
- 我的方案:Cockpit + nginx-ui + dockge
以下介绍我的方案及安装部署步骤
安装 Cockpit,访问默认端口 9090,输入系统用户密码
apt install cockpit -y
# 启动服务
systemctl start cockpit
# 验证服务状态
sudo systemctl status cockpit
# 验证服务自启动
sudo systemctl is-enabled cockpit
安装 nginx-ui(提前或者之后安装 nginx),访问端口 9090
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install -r https://cloud.nginxui.com/
Cockpit 如果需要通过 nginx 反向代理,需要编辑配置 /etc/cockpit/cockpit.conf
[WebService]
Origins = https://cockpit.domain.tld wss://cockpit.domain.tld
ProtocolHeader = X-Forwarded-Proto还要开启 WebScocket 保持实时的数据包发送,Nginx 示例配置如下
server {
listen 80;
listen 443 ssl;
server_name cockpit.domain.tld;
location / {
# Required to proxy the connection to Cockpit
proxy_pass https://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
# Required for web sockets to function
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Pass ETag header from Cockpit to clients.
# See: https://github.com/cockpit-project/cockpit/issues/5239
gzip off;
}
}安装适合家庭站和个人使用的 portainer-ce
curl -L https://downloads.portainer.io/ce-sts/portainer-compose.yaml -o portainer-compose.yaml
mv portainer-compose.yaml compose.yaml
# 调整 compose.yaml 内容
docker compose up -d
portainer 暂不支持多语言,若需要汉化,可以参考此汉化教程——Docker 安装 Portainer CE 监控面板和汉化教程 - 虞泽 - 博客园 或是直接下载汉化版本的 portainer。
由于无法 portainer 的编排功能无法自定义 docker-compose.yaml 路径 和 容器挂载的存储根路径,我最终还是选择了 dockge 来管理。
docker-compose.yaml 如下
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
# Host Port : Container Port
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
# If you want to use private registries, you need to share the auth file with Dockge:
# - /root/.docker/:/root/.docker
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- /编排文件的存放位置,例如 /root/docker:/opt/stacks
environment:
# Tell Dockge where is your stacks directory
- DOCKGE_STACKS_DIR=/opt/stacks这样所有编排文件和容器配置都在一个总目录 /root/docker 之下

你用命令行编排的容器,dockge 也能识别到,但是缺少了一些 docker 监控及配置等高级功能。
1panel
查看、修改账号信息
1pctl user-info # 查看账号信息
1pctl update password # 修改密码服务重启
1pctl restart core
1pctl restart agent
1pctl restart all完全卸载
1pctl uninstall
sudo rm -rf /usr/local/bin/1panel
sudo rm -f /etc/systemd/system/1panel.service
sudo systemctl daemon-reload自建机场
服务部署
通过面板 或 Nginx 部署静态页面
通过面板 或 Node.js 部署 SSR 页面
搜索引擎优化(SEO)
部署完网站之后,虽然可以直接通过 url 访问我们的网站,但是我们无法通过搜索引擎检索到我们网站的相关内容,所以我们需要进行 网站验证,网站验证主要就是为了让各大搜索引擎收录我们的网站,这样可以让更多的人通过搜索引擎找到我们的网站。
