个人向 Linux 新服务器初始化清单
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
服务器发行版我个人推荐 Debian 系列,CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
azure 干净的 debian 11 镜像,资源使用情况供参考
~1G Disk, ~100M RAM, ~300 packages
本文仅列举主要事项和操作,新手可先行阅读这篇文章熟悉概念。云服务器入门指南
正文开始
1 - 基础环境搭建
1.1 防火墙
检查服务商防火墙和系统自带防火墙 (debian 系一般为 ufw
, cent os 系一般为 firewall-cmd
). 放行 SSH (22), 新的 SSH (自定义), HTTP, HTTPS, 以及其他常用开发端口
1.2 新建用户与检查 sudoer
也可直接编辑 /etc/sudoers
文件为新用户添加 sudo 权限,使用 visudo
指令可以自动帮你校验,避免配置写错把系统搞崩
1.3 镜像源与基础软件
如为境内服务器需要更换镜像源
更换国内镜像源
一般情况下,将 /etc/apt/sources.list
文件中 Debian 默认的源地址 http://deb.debian.org/
替换为 http://mirrors.ustc.edu.cn
即可。
CentOS 系建议启用 EPEL, PowerTools 等 repo 以更方便地安装常用软件和工具。此处不再赘述
推荐的几个国内镜像站:清华大学 TUNA 镜像站 , 中科大 USTC LUG 镜像站 , 腾讯镜像站
基础软件
1.4 SSH 安全
修改端口,配置文件 /etc/ssh/sshd_config
. 重启机器或 sshd 服务后生效
在本机检查 ~/.ssh/
有无 id_rsa 等已生成的 key. 如没有再使用 ssh-keygen
生成私钥
将本机的公钥上传到远端,再写入远端的 authorized_keys
中
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
注意修改权限,~/.ssh/authorized_keys
权限为 600. ~/.ssh/
为 700
可以参考以下设置
.ssh/ 0700/rwx——
.ssh/.pub 644/rw-r–r–
.ssh/ 0600/rw——-
如失败可参考这篇文章 debug. https://superuser.com/questions/1137438/ssh-key-authentication-fails
1.5 设置 hostname
可选,为了便于识别和后续配置 oh-my-zsh 更美观。这里修改完后还需要更新 hosts 设置,把刚才设置的新的主机名指向 localhost
修改后需重启
1.6 SWAP
可选,建议内存 < 2G 配置 swap, 大小至少为 2 倍物理内存
推荐用 fallocate
, 因为这个是最简单、最快速的创建交换空间的方法。 fallocate
命令用于为文件预分配块 / 大小。
以下内容参考 linux.cn
使用 fallocate
创建交换空间,首先在 /
目录下创建一个名为 swap_space
的文件。然后分配 2GB 到 swap_space
文件:
每次重启后都要重新挂载磁盘分区。因此为了使之持久化,就像上面一样,我们编辑 /etc/fstab
并输入下面行:
/swap_space swap swap sw 0 0
保存并退出文件。现在我们的交换分区会一直被挂载了。我们重启后可以在终端运行 free -m
来检查交换分区是否生效。
还可以按需选择使用 zram,提升内存可用量,不过会略微增加 cpu 使用和内存延时。可以搜索 zramctl, zramswap 等关键字
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 中,可能需要手动执行前缀使用。如 /usr/sbin/swapon
1.7 绑定域名
可选,绑定一个域名或者改下本地 host 便于后续访问
1.8 添加本地 SSH 别名
配置文件为本机的 ~/.ssh/config
格式如下
2 - 常用工具与配置
2.1 Docker 环境
Docker 安装
可参考官网文档,注意是 docker engine 的安装。Docker 官方安装文档
或者我之前写的 RSS MAN 部署文档中 docker 安装的部分 RSS MAN X 安装部署指南 /#1-docker 环境准备
Docker 镜像源配置及日志配置
docker mirror 配置可以加速 image pull, 国内公开可用的加速站点可以参考这里 docker 加速站点
此外服务器上的 docker 都是长时间持续运行的,不少容器日志打的很随意,log 文件容易占据过多空间,也最好限制一下。
文件位置 /etc/docker/daemon.json
, 下面的配置供参考
修改完保存重启 docker 服务即可生效。可使用 docker info
命令检查是否生效
2.2 OH-MY-ZSH
安装 OH-MY-ZSH, 在此之前确保已安装 git
和 zsh
安装插件
git clone 速度不佳可以考虑一些开放的加速服务,比如: - https://ghproxy.org/ - https://mirror.ghproxy.com/
按需修改配置。文件位置 ~/.zshrc
, 下面为个人常用配置供参考。注意去源文件修改对应项,没有再到末尾加
自定义配置,添加到末尾
保存并应用
2.3 nano 代码文件规则
日常常用文本编辑器为 nano, 轻量级编辑需求完全满足。
2.4 时区调整
一般安装完都是 UTC+0, 看日志什么的不方便。服务器初始化的时候配置好后面可以免去很多麻烦
debian 系可用过 timedatectl
命令调整时区。东八区可以用这个命令
2.5 厂商监控 / SDK 卸载
懂得都懂,自己搜
2.6 fail2ban 配置
使用 fail2ban 可以很好地保护你的服务器,避免被人恶意爆破 SSH 等服务。
之后需要按照实际情况修改一下配置文件。这里记录一下最小配置。注意默认的配置 /etc/fail2ban/jail.conf
不要改,不然每次软件更新会被覆盖。在 jaid.d 这个目录下面新建一个文件 /etc/fail2ban/jail.d/local.conf
之后重启 sudo systemctl restart fail2ban
,然后可以看下服务状态是否正常 sudo systemctl status fail2ban
,如果配置文件有问题会报错。如果是显示 active (running)
就说明没有问题了。
fail2ban 的测试及关闭服务方法:
查看当前封禁 IP:sudo fail2ban-client status sshd
解禁某一 IP: sudo fail2ban-client set sshd unbanip IP_ADDRESS
停止 fail2ban 服务:sudo systemctl stop fail2ban
关闭 fail2ban 服务:sudo systemctl disable fail2ban
刚配置没一会就有 IP 被封禁了,可以看到效果还是很给力,也安心了不少
➜ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 6
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 154.216.19.42
3 - 进阶内容
3.1 内核参数调优
一些内核参数调整,交换内存阈值和 bbr, tcp fast open 等,按需启用。启用前务必确认自己了解对应字段的含义,否则不如保留系统初始值。
配置文件位置 /etc/sysctl.conf
配置完之后保存并应用
3.2 其他进阶配置
一些其他的系统维护技巧与策略,如
配置文件管理
所有应用 docker 化,通过 docker compose
文件管理
配置共享存储,rclone
挂载 webdav, 同步 docker compose 等配置文件;
traefik 网关作为统一出口,负责服务发现和自动维护 HTTPS 证书,自定义配置通过 headless CMS 如 directus 管理,traefik 设定为通过 http 方式获取远端配置即可。
数据库备份
所有数据相关的统一挂载到 /data/database/xxx
, 配置定时任务进行备份
以及配置 s3 等,上传到其他存储介质和其他地域。
这些内容此处不再赘述,有机会再单独写篇文章分享吧
END
附录
- Install Docker Engine https://docs.docker.com/engine/install/
- RSSManX 安装部署指南 https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/
- 云服务器入门指南 https://blog.colinx.one/posts/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/
- Portainer Install Doc https://docs.portainer.io/start/install-ce/server/docker/linux
Related Issues not found
Please contact @Colin-XKL to initialize the comment