一台新到手的VPS必做的十二项配置（以Ubuntu为例）——2024年最新版

近来，我的服务器被撑爆了，因为服务器磁盘空间不足（其实这个问题已经存在很久了，一直没有下定决心整改）。这次一不留神备份服务时撑爆了，我就顺便重装系统，认真调教一些配置，将一些过程进行记录，以备查用。

一、更新组件，包管理

要在 Ubuntu 系统上更新软件包，可以使用以下命令：

不推荐，安装时间太长了

Copy
apt update && apt upgrade -y

推荐用下面两条

Copy
sudo apt update #这个命令会更新软件包列表，让系统知道有哪些软件包可以更新。
sudo apt upgrade --only-upgrade #这个命令会安装所有可用的软件包更新。

二、常用工具

1、VIM 编辑器

检查有没有安装 VIM（主要是我习惯用 vim 编辑器了，Ubuntu 是默认自带 nano 的）

Copy
vim --version

没有的话就用命令安装

Copy
apt install vim

配置 VIM 为默认的系统编辑器。

很简单，执行这条命令，选择 Vim，以后凡是自动调用编辑器的地方，都会用 Vim 啦。

Copy
sudo update-alternatives --config editor

2、安装 command-not-found

很多服务器提供商可能会提供精简版本的 Ubuntu，于是一些实用的命令行工具并不会预装。比如command-not-found，它可以当你在打命令时，提示对应的但没有安装的 package。

Copy
sudo apt install command-not-found

安装完后，就可以在使用命令行的过程中更加方便了。

三、添加普通用户

Copy
adduser {your-username} {your-password}
visudo

在 User Privilege Specification 下加入一行 ubuntu ALL=(ALL) NOPASSWD: ALL即可。

检验是否添加成功

Copy
su - newuser #切换到新用户
ls /root #列出/root目录下的文件（没有root权限是看不了的）
sudo ls /root #然后用给普通用户授予root权限（这样就有权限可以看到了）
exit #退出

四、防火墙配置

要在 Ubuntu 上使用 ufw（Uncomplicated Firewall）开启端口 22、80 和 443，你可以按照以下步骤进行配置：

检查 ufw 是否安装：

如果尚未安装 ufw，你可以使用以下命令安装：sudo apt install ufw

开启端口：

开启端口 22：sudo ufw allow 22

开启端口 80：sudo ufw allow 80

开启端口 443：sudo ufw allow 443

启用防火墙：

启用 ufw 防火墙：sudo ufw enable

检查配置：

可以运行 sudo ufw status 来查看防火墙的状态和已开启的端口。

参考文章

https://blog.csdn.net/qq_53679247/article/details/128374607

五、配置 SSH 登录及 SSH Server 安全设定

先在 windows 端生成 ssh 公私钥对

Copy
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxxx

在用户目录下创建authorized_keys文件，并将公钥（pub 结尾）的内容粘入authorized_keys文件中

Copy
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

禁用 root 身份登录

找到PermitRootLogin Yes这一项，然后把它后面的设定值改为no即可。

Copy
vim /etc/ssh/sshd_config

如下：

Copy
PermitRootLogin no

把 PasswordAuthentication 设置成 no，禁止密码登录，更安全：

Copy
PasswordAuthentication no

SSH 端口号改为其他数字，注意了，改成其他端口后，记得防火墙设置也要更新。

Copy
Port {SSH端口号，最好在10000以上}

最后重启 SSH Server 生效：

Copy
sudo systemctl restart sshd.service

六、自定义 shell 界面安装

安装 oh-my-zsh

Copy
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

其他主题、插件等配置参考：

https://www.hackerneo.com/blog/dev-tools/better-use-terminal-with-zsh

七、Docker 配置

1、安装 Docker

官方地址：https://docs.docker.com/install/linux/docker-ce/ubuntu/

首先安装基本环境：

Copy
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

再安装 key：

Copy
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

再增加 Docker 官方源：

Copy
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

最后就可以安装 Docker 了，我一般也同时会用 Docker Compose，一起安装上去吧！

Copy
sudo apt update
sudo apt install docker-ce docker-compose

安装好 Docker 以后，记得将当前用户加到 docker 用户组里去（如果你不想每次都用 sudo 用 Docker 的话）

Copy
sudo gpasswd docker -a username

2、Docker 日志管理

全局配置日志大小限制

创建或修改文件 /etc/docker/daemon.json，并增加以下配置（3 份日志、每份 10M）。

Copy
{
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "10m"
}
}

随后重启 Docker 服务

Copy
sudo systemctl daemon-reload
sudo systemctl restart docker

不过已存在的容器不会生效，需要重建才可以！

单个容器日志大小限制

写在 docker-compose 中

Copy
logging:
driver: json-file
options:
max-size: "100m"
max-file: "3"

八、swap 配置

Copy
swapoff -a #删除原分区
dd if=/dev/zero of=/root/swapfile bs=1M count=1024 #配置新分区大小
mkswap /root/swapfile
swapon /root/swapfile

最后设置开机启动：可以编辑 /etc/fstab 文件，把最后一行改成：/root/swapfile swap swap defaults 0 0

参考文章：

https://skywt.cn/blog/changeswap/

九、logrotate 日志大小限制

Copy
sudo apt install logrotate
sudo apt install cron

Copy
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
weekly
rotate 3
maxsize 100M
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

参考文章：

https://www.cnblogs.com/uglyliu/p/13206868.html

https://wsgzao.github.io/post/logrotate/

https://www.noisyfox.io/logrotate.html

https://www.cnblogs.com/liujunjun/p/17924699.html

https://nj.transwarp.cn:8180/?p=10556

十、Fail2ban 封禁 IP

https://aws.amazon.com/cn/blogs/china/open-source-tool-to-protect-ec2-instances-fail2ban/
https://github.com/fail2ban/fail2ban/issues/3420

十一、面板安装 ——1panel

Copy
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

sudo apt autoremove docker-compose

参考文章：

https://blog.pppfz.com/posts/5.html

十二、常规安全更新

安装 unattended-upgrades 来自动更新 security upgrade

通过 unattended-upgrades，可以使 Ubuntu 系统自动进行常规的安全相关更新，使系统一直保持 security。

Copy
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades