9 Commits

Author SHA1 Message Date
dependabot[bot]
47b3f39974 build(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 10:11:11 +00:00
github-actions[bot]
f718df5a11 chore: lint text and auto correct 2025-06-23 19:40:48 +08:00
ad8fbc6fc2 Update 个人向Linux新服务器初始化清单.md 2025-06-23 19:40:32 +08:00
d2368e9008 feat: update post 2025-06-21 16:17:57 +08:00
dependabot[bot]
c0e9369ebf build(deps): bump actions/deploy-pages from 1 to 4
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 1 to 4.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v1...v4)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 20:05:19 +08:00
dependabot[bot]
0f95c8de33 build(deps): bump actions/configure-pages from 2 to 5
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 2 to 5.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v2...v5)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 20:05:11 +08:00
dependabot[bot]
767e3ae8a5 build(deps): bump actions/upload-pages-artifact from 1 to 3
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 3.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 18:51:40 +08:00
github-actions[bot]
b7d529f579 chore: lint text and auto correct 2025-06-15 18:49:28 +08:00
b1565d9c3e feat: update article 2025-06-15 18:44:09 +08:00
5 changed files with 98 additions and 29 deletions

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Find and Replace Release
uses: jacobtomlinson/gha-find-replace@2.0.0

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: true
- name: Build And Deploy

View File

@@ -37,12 +37,12 @@ jobs:
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@v2
uses: actions/configure-pages@v5
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
@@ -53,7 +53,7 @@ jobs:
--minify \
--baseURL "/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
uses: actions/upload-pages-artifact@v3
with:
path: ./public
@@ -67,4 +67,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v4

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: huacnlee.autocorrect
uses: huacnlee/autocorrect-action@v2.10.0

View File

@@ -1,6 +1,7 @@
---
title: 个人向 Linux 新服务器初始化清单
date: 2023-03-14
lastmod: 2025-06-21
description: 一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。以目前最新的 Debian 11 Bullseye 为例
categories:
- 技术
@@ -8,16 +9,14 @@ tags:
- 技术
- Linux
- Debian
- Traefik
- Headless CMS
---
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
服务器发行版我个人推荐 Debian 系列CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
服务器发行版我个人推荐 Debian 系列CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例。Debian 12 bookworm 也测试通过。
> azure 干净的 debian 11 镜像,资源使用情况供参考
> azure 干净的 debian 11 镜像,资源使用情况供参考
>
> ~1G Disk, ~100M RAM, ~300 packages
@@ -32,12 +31,15 @@ tags:
检查服务商防火墙和系统自带防火墙 (debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
### 1.2 新建用户与检查 sudoer
登录到 root 用户,创建个人账户并设定密码
```shell
// -m 创建对应home文件夹
// 添加到 sudo 用户组自动获得sudo权限, 部分发行版为wheel组
useradd -m --groups sudo colin
// 设定密码
passwd colin
```
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限,使用 `visudo` 指令可以自动帮你校验,避免配置写错把系统搞崩
@@ -54,7 +56,6 @@ useradd -m --groups sudo colin
//for debian
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
//for ubuntu
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
```
@@ -73,7 +74,8 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
### 1.4 SSH 安全
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
此外最好将`PermitRootLogin`修改为`no`, 可以禁用 root 登录。
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
将本机的公钥上传到远端,再写入远端的 `authorized_keys`
@@ -83,12 +85,10 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
注意修改权限,`~/.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](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
### 1.5 设置 hostname
@@ -100,18 +100,18 @@ sudo hostnamectl set-hostname my-new-server
sudo hostnamectl status
```
此外`/etc/hosts` 中默认会有个本机 hostname 映射到`127.0.0.1` 的配置,修改 host 之后这里别名的映射也要修改下,不然终端执行命令会一直弹 `sudo: unable to resolve host xxx: Name or service not known`
修改后需重启
---
### 1.6 SWAP
可选,建议内存<2G 配置 swap, 大小至少为 2 倍物理内存
可选,建议内存<2G 配置 swap, 大小至少为 2 倍物理内存可以有效避免意外爆内存的情况仅推荐 SSD 盘的服务器开启
推荐用 `fallocate` , 因为这个是最简单最快速的创建交换空间的方法 `fallocate`  命令用于为文件预分配块 / 大小
以下内容参考 linux.cn
使用  `fallocate`  创建交换空间首先在  `/`  目录下创建一个名为  `swap_space`  的文件然后分配 2GB  `swap_space`  文件
```shell
@@ -132,8 +132,6 @@ sudo swapon -s
```
每次重启后都要重新挂载磁盘分区因此为了使之持久化就像上面一样我们编辑  `/etc/fstab`  并输入下面行
```
@@ -146,9 +144,6 @@ sudo swapon -s
还可以按需选择使用 zram提升内存可用量不过会略微增加 cpu 使用和内存延时可以搜索 zramctl, zramswap 等关键字
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 可能需要手动执行前缀使用 /usr/sbin/swapon
---
### 1.7 绑定域名  
@@ -200,7 +195,7 @@ docker mirror 配置可以加速 image pull, 国内公开可用的加速站点
],
"log-opts": {
"max-file": "5",
"max-size": "10m"
"max-size": "1m"
}
}
```
@@ -290,12 +285,14 @@ sudo systemctl enable fail2ban
```conf
[sshd]
enabled = true
port = 20000 # 这里修改为实际的 sshd 端口
# 这里修改为实际的 sshd 端口
port = 20000
filter = sshd
banaction = iptables-allports
[DEFAULT]
findtime = 3600 # 1h 时间窗口
# 1h 时间窗口
findtime = 3600
maxretry = 3
bantime = 6h
```
@@ -332,7 +329,7 @@ Status for the jail: sshd
配置文件位置 `/etc/sysctl.conf`
```c
```conf
# mem
vm.swappiness = 10
@@ -341,6 +338,11 @@ net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_slow_start_after_idle=0
# zram 相关配置,配合下文 zram 使用
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0
```
配置完之后保存并应用
@@ -349,7 +351,74 @@ net.ipv4.tcp_slow_start_after_idle=0
sudo sysctl -p
```
### 3.2 其他进阶配置
### 3.2 更多内存空间 - ZRAM
ZRAM 内存压缩对于个人服务器来说始终活跃的程序占用的内存只有比较小一部分启用 zram 可以将这部分内存压缩从而可以部署更多的服务
建议使用`zramtool`, 简单方便
```shell
sudo apt install zram-tools
```
修改`/etc/default/zramswap`, 末尾添加
```ini
ALGO=zstd
PERCENT=60
```
之后执行`sudo service zramswap reload`重载生效
可以使用 swapon 命令查看生效情况
```
~ » sudo swapon -show
NAME TYPE SIZE USED PRIO
/swap_space file 2G 32.1M -2
/dev/zram0 partition 489.9M 0B 100
```
这样一来会将机器物理内存的 50% 配置 zram, 使用 zstd 压缩算法一般压缩比能达到 3:1, 也就是说1G 的机器可以相当于有`0.5G+3*0.5G=2G`的内存
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 可能需要手动执行前缀使用 /usr/sbin/swapon
### 3.3 更多内存空间 - 关闭 kdump释放预留的内存空间
新服务器开起来之后你会发现无论是 htop 还是 free 等命令看到的总内存就是比你买服务器时页面上写的要小比如我开的两核 1G 的机器实际机器上看到的总内存只有 816M. 这是因为 linux 系统会默认开启 kdump预留了一部分内存不让我们使用
Kdump Linux 系统的一种内核崩溃转储机制它允许在系统发生内核崩溃例如内核 panic捕获内存的转储信息从而帮助事后分析故障原因默认的配置`2G-8G:256M,8G-16G:512M,16G-:768M`, 如果你买的是 2G 的机器上来就有 1/8 的空间用不了
但是我们个人日常使用的 linux 机器基本用不到这个功能不用预留这部分空间
操作方法有两种将预留内存改为 0 or 直接关闭 kdump 服务对于个人玩家小内存机器我建议直接关闭操作如下
```bash
# 备份grub配置文件
sudo cp /etc/default/grub /etc/default/grub.bak
# 编辑grub配置,删除 crashkernel=0M-2G:0M,2G-8G:192M 这样的部分
sudo nano /etc/default/grub
# 部分发行版镜像可能还有单独的kdump配置文件,直接删除
sudo rm /etc/default/grub.d/kdump-tools.cfg
# 更新grub配置
sudo update-grub
# 关闭并禁用Kdump服务
sudo systemctl disable kdump-tools
sudo systemctl stop kdump-tools
# 重启系统
sudo reboot
# 检查是否生效, 状态为 inactive(dead),即 kdump 服务已停止运行
sudo systemctl status kdump
# 检查 crash size 是否为0
cat /sys/kernel/kexec_crash_size
```
更多内容可以参见这篇文档[预留内存相关文档 - 阿里云](https://help.aliyun.com/zh/ecs/use-cases/view-and-change-the-size-of-reserved-memory-on-a-linux-instance#7d5ae6803amdp) 或者 [预留内存相关文档 - 腾讯云](https://cloud.tencent.com/document/product/213/115734)
### 3.3 其他进阶配置
一些其他的系统维护技巧与策略