本地小服务器搭建的话先要组装好一台电脑,我的简单服务器是 ubuntu 2024 server 的操作系统,安装系统

服务器的基本配置

板 U 的配置如下,内存我用的是自己家里的 DDR3 4G

电源我用的是长城神威 4000SW,额定 300W,ATXTX,配置如下:

机箱:

SSD 固态硬盘:

总表格:

CPU Intel Core i5-4590
主板 华南 B85,M-ATX
散热器 寒冰 A400 四热管塔式风冷
内存 套装自带 DDR3
系统盘 长城 GW600 256GB 2.5 英寸 SATA SSD
电源 长城神威 4000SW,额定 300W,ATX
机箱 鑫谷直男3青春版,M-ATX
显卡 集显
系统 Ubuntu Server 24.04.4 LTS amd64

检查项 本项目要求 原因
主板兼容 支持 M-ATX B85 主板尺寸属于 M-ATX。
电源兼容 支持标准 ATX 电源 长城 4000SW 是普通 ATX 电源。
散热限高 至少 160 mm A400 塔式风冷接近 155 mm,155 mm 机箱容差过小。
硬盘位 至少 1 个 2.5 英寸位 用于固定 SATA SSD。
风道 后置 120 mm 排风优先 无独显时无需堆满风扇,一个后排风即可改善热量排出。
装机空间 不必追求极限小体积 第一次装机时空间更宽松,插线和排障更容易。

装机操作

我装机是参考的是 Bilibili 的:【装机教程】全网最好的装机教程,没有之一

主板的相关内容:

由于商家已经把 cpu 装好了,现在就只是装风扇即可,装的时候记得先撕下保护膜,之后涂上硅脂

之后安装说明,用力按压风扇的固定片,这个我用了很大力也没有安装好,咨询客服确认了就是得用很大力,之后就是安装内存条了,下图中的右边的黄色卡槽就可以安装内存条,下图中的下面的是安装显卡的(虽然实测显卡还没有自带集显流畅的)

之后主板固定在机箱内,接上电源并且排线我忘拍照了,其实就按照 Bilibili 的 3D 装机视频走就行了,最后插上 SSD 卡即可。

点亮后多按几下 delete 进入 BIOS 中,出现这个界面就是成功了。

安装系统

制作系统盘

在 ubuntu 官方网站(https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso)下载 ubuntu-24.04.4-live-server-amd64.iso 镜像。下载好 rufus 软件(https://rufus.ie/

用一个 U 盘制作成系统盘,做好后插入机箱即可

BIOS 设定

之后看到这个界面,屏幕提示的意思是:“你的 U 盘被 Rufus 制作为“仅支持 UEFI 启动”,但主板现在却用 BIOS/Legacy 模式启动它,所以无法进入安装程序。”

虽然有报错,但是这并不意味着 U 盘本身损坏;只需在 BIOS 启动菜单中选择带“UEFI:”前缀的同一 U 盘,而不是不带前缀的 Legacy 入口。只有主板确实无法 UEFI 启动时,才重新用 MBR + BIOS/UEFI-CSM 制作。

之后在 Boot Option #1 中选择 UEFI: VendorCoProdu…(实际名称按 U 盘而定)。 不要选择不带 UEFI 前缀的 USB 设备。 按 F10 保存并重启;进入 Ubuntu 安装器后不再修改 CSM。 安装完成并拔掉 U 盘

询问 AI,AI 建议的 BIOS 项

项目 建议值 说明
SATA Mode AHCI 适合 SATA SSD;不要为安装 Ubuntu 切到 RAID。
Boot Mode UEFI 优先 GPT 安装盘和 EFI 分区匹配。
Fast Boot 安装/排障阶段 Disabled 便于进入 BIOS 和识别 U 盘。
Onboard LAN Enabled 网卡排障时确认板载网卡未被关闭。
Restore AC Power Loss 系统稳定后设为 Power On 或 Last State 断电恢复后可自动开机,适合无人值守服务器。
超频/电压/刷 BIOS 保持默认 旧平台能稳定使用时不要为追求性能修改。

安装类型

之后就是安装系统了,安装类型我是选择了标准 Ubuntu Server;不选 minimized,第三方驱动也是保持未勾选的

磁盘布局

出现这个已经说明了系统识别到我的 长城 256GB SSD,选择整盘安装到 Great_Wall_GW600_256GB;LVM 与 LUKS 均不勾选。由于商家是按照十进制标注的 256GB,Linux 是二进制显示的,因此显示的会有缩水。

分区摘要:约 1.049GB EFI/FAT32 + 约 237.422GB ext4 根分区

之后会进入用户账户的配置界面,自己按照提示设定就行。在 SSH Setup 界面中勾选 Install OpenSSH server;暂不导入外部 SSH identity。

安装推荐服务器软件

我选择的是都不勾选,因为我是静态 blog 的,我之后选择自己安装 Caddy 的,方便管理的

安装完成

顶部出现 installation complete! 说明安装成功了。之后选择 Reboot Now,出现提示后拔掉 Ubuntu 安装 U 盘,再按 Enter 进行重启。

之后输入账号密码就成功了

服务器基础设置

设置中国时区与系统更新

当前系统时间是 UTC,需要切换到中国标准时间。输入:

1
2
sudo timedatectl set-timezone Asia/Shanghai
timedatectl

看到<font style="color:#000000;">Time zone: Asia/Shanghai (CST, +0800)</font>说明时区设置成功

系统更新:

1
2
3
sudo apt update
sudo apt full-upgrade -y
sudo reboot

安装基础工具并检查硬件

1
2
3
4
5
6
7
8
9
10
11
sudo apt install -y \
curl \
wget \
git \
vim \
htop \
lm-sensors \
smartmontools \
ufw \
ca-certificates \
gnupg

查看相关硬件(这些忘拍照了,只能靠 AI 对话和记忆了):

1
2
3
4
5
6
7
8
9
10
11
12
13
lscpu #查看 CPU 
# Intel(R) Core(TM) i5-4590
# CPU(s): 4

free -h # 查看内存


lsblk -o NAME,SIZE,MODEL,FSTYPE,MOUNTPOINTS # 查看硬盘
# sda
# ├─sda1 1G vfat /boot/efi
# └─sda2 237G ext4 /

sudo smartctl -a /dev/sda # 检查 SSD 健康信息

开 ssh 与设置防火墙

1
2
3
4
5
6
7
8
sudo ufw allow OpenSSH
sudo ufw enable

# 查看状态
sudo ufw status verbose
# Status: active

# OpenSSH ALLOW

Blog 环境设置

Caddy 的安装流程(主要是 AI 辅助)

这一节是 Caddy 官方的 Ubuntu/Debian 安装流程,用于以后重装服务器。安装完成后,官方软件包会创建并启动名为 <font style="color:#000000;">caddy</font> 的 systemd 服务。

3.1 安装仓库依赖

1
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

安装 Debian/Ubuntu 软件仓库签名需要的 keyring 工具。

安装 HTTPS APT 支持和 <font style="color:#000000;">curl</font> 下载工具。

3.2 导入 Caddy 官方仓库签名密钥

1
2
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

参数说明:

  • <font style="color:#000000;">-1</font>:要求 TLS 1.x。
  • <font style="color:#000000;">-sS</font>:安静运行,但发生错误时仍显示错误。
  • <font style="color:#000000;">-L</font>:跟随 HTTP 重定向。
  • <font style="color:#000000;">-f</font>:HTTP 请求失败时返回非零状态。
  • <font style="color:#000000;">gpg --dearmor</font>:把文本格式签名密钥转换成 APT 可使用的二进制 keyring。

3.3 添加 Caddy Stable 软件源

1
2
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list

作用是把 Caddy Stable 仓库配置写入 APT 软件源目录。

3.4 调整仓库文件读取权限

1
2
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list

作用是确保 APT 的非 root 辅助进程能读取软件源和签名文件。

3.5 安装 Caddy

1
2
3
4
5
sudo apt update
sudo apt install -y caddy
# 验证安装:
caddy version
systemctl status caddy --no-pager

安装好后当前的架构可以被抽象为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Internet
|
中国联通光猫(不要恢复出厂设置)
|
TP-LINK TL-WDR8661 易展版 V1.0
路由器管理地址:192.168.0.1
|
Ubuntu Server 24.04.4 LTS
主机名:lfischl-server
用户:lfischl
网卡:enp2s0
MAC:0A:E0:AF:F4:02:79
固定租约:192.168.0.110/24
|
Caddy(systemd 服务)
HTTP 80 -> 自动跳转 HTTPS 443
|
Hexo 静态文件:/srv/lfischl-blog/current

官方安装文档:https://caddyserver.com/docs/install

固定 ip

我发现服务器每次重启内网 ip 都会变化,不易管理,因此需要固定下 ip,由于主包找不到当时的截图了,所以就用文字描述一下了。先在家中的路由器确认下管理员登录的网址(如 192.168.0.1),之后登录进去找到连接设备管理,之后就找到本服务器的 ip 之后选择固定 ip 就行了。

配置局域网 HTTPS

Hexo 在我 Windows 电脑上生成静态文件部署到 Ubuntu 这个目录下:

1
/srv/lfischl-blog/current

一开始Caddy 只监听 HTTP(/etc/caddy/Caddyfile 如下图所示)

1
2
3
4
5
6
7
8
9
10
:80 {
root * /srv/lfischl-blog/current
encode zstd gzip
file_server

handle_errors {
rewrite * /404.html
file_server
}
}

之后出现访问失败的问题,初次部署排查期间,浏览器访问当时的临时地址 <font style="color:#000000;">192.168.0.110</font> 曾出现 <font style="color:#000000;">ERR_EMPTY_RESPONSE</font>。这表示浏览器已连接到该地址,但当时的 Web 服务没有返回有效 HTTP 响应;它不是当前服务器的最终地址。因此得修改下 caddyfile

Caddyfile:

1
/etc/caddy/Caddyfile

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
skip_install_trust
}

192.168.0.110 {
tls internal
root * /srv/lfischl-blog/current
encode zstd gzip
file_server

handle_errors {
rewrite * /404.html
file_server
}
}

验证结果:

1
2
http://192.168.0.102/  -> 308 Permanent Redirect
https://192.168.0.102/ -> 200 OK

Caddyfile 的相关内容说明

skip_install_trust:

<font style="color:#000000;">skip_install_trust</font> 表示 Caddy 启动时不尝试把内部 CA 根证书自动写入 Ubuntu 系统信任库。

当 Caddy 作为 systemd 服务运行时,进程使用低权限的 <font style="color:#000000;">caddy</font> 用户。当初日志中出现过:

1
2
failed to install root certificate
caddy : user NOT in sudoers

这并不影响 Caddy 为站点签发证书和提供 HTTPS,只表示服务账户不能调用 <font style="color:#000000;">sudo</font> 修改 Ubuntu 的系统信任库。加入 <font style="color:#000000;">skip_install_trust</font> 后可以避免每次重载产生这类误导性日志。

局域网 IP:

<font style="color:#000000;">192.168.0.110</font>指定站点使用当前服务器的固定局域网 IP。因为写了具体主机地址,Caddy 会启用自动 HTTPS 和 HTTP 到 HTTPS 跳转。

证书:

<font style="color:#000000;">tls internal</font>表示使用 Caddy 自己的内部 CA 为 <font style="color:#000000;">192.168.0.110</font> 签发证书。

这是局域网 HTTPS,默认不会被其他电脑或手机信任。每台客户端都需要导入 Caddy 的 <font style="color:#000000;">root.crt</font>。只能分发根证书 <font style="color:#000000;">root.crt</font>,绝不能复制或泄露根 CA 私钥。Caddy 会自动续签短期叶证书,不需要手工更新。

官方说明:https://caddyserver.com/docs/caddyfile/directives/tls

https://caddyserver.com/docs/automatic-https

静态文件服务

1
2
3
root * /srv/lfischl-blog/current
encode zstd gzip
file_server

<font style="color:#000000;">root * ...</font>:把所有请求的站点根目录设为 Hexo 构建目录。

<font style="color:#000000;">encode zstd gzip</font>:客户端支持时压缩响应,优先使用 Zstandard,也兼容 gzip。

<font style="color:#000000;">file_server</font>:启用静态文件服务器。

自定义错误页

1
2
3
4
handle_errors {
rewrite * /404.html
file_server
}

当 Caddy 处理请求时产生错误,将内部请求改写到 Hexo 生成的 <font style="color:#000000;">/404.html</font>,再把它作为静态文件返回。

证书相关

根证书在服务器上的位置

1
/var/lib/caddy/.local/share/caddy/pki/authorities/local/root.crt

Caddy 内部 CA 的数据和私钥位于 <font style="color:#000000;">/var/lib/caddy</font>。不要删除该目录,否则 Caddy 可能生成新的 CA,所有客户端都需要重新信任。

导入 Windows 当前用户信任库

1
2
3
4
5
6
certutil.exe -user -addstore Root \
"D:\下载\test\caddy-local-root.crt"

# 成功输出:
# 证书 "Caddy Local Authority - 2026 ECC Root" 添加到存储。
# CertUtil: -addstore 命令成功完成。

<font style="color:#000000;">-user</font>:只写入当前 Windows 用户的证书库,不修改计算机的全局证书库。

<font style="color:#000000;">-addstore Root</font>:添加到“受信任的根证书颁发机构”。

导入后需要完全关闭并重新打开 Chrome,浏览器才能稳定重新读取信任库。

日常维护命令清单

Caddy 状态

1
2
3
systemctl status caddy --no-pager
systemctl is-active caddy
systemctl is-enabled caddy

修改配置的安全流程

1
2
3
4
5
6
7
8
sudo cp /etc/caddy/Caddyfile \
/etc/caddy/Caddyfile.bak-$(date +%Y%m%d-%H%M%S)

sudoedit /etc/caddy/Caddyfile # 用用户编辑器安全编辑 root 文件。
sudo caddy fmt --overwrite /etc/caddy/Caddyfile # 统一 Caddyfile 缩进和格式。
sudo caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
sudo systemctl reload caddy
systemctl is-active caddy

必须在 validate 成功后才 reload。

查看日志

1
2
sudo journalctl -u caddy -f
# -f 会持续跟踪新日志,按 Ctrl+C 退出,不会停止 Caddy。

查看监听端口

1
sudo ss -lntup | grep -E ':(80|443)\b'

更新 Caddy

1
2
3
4
5
6
7
8
sudo apt update
apt list --upgradable 2>/dev/null | grep caddy
sudo apt install --only-upgrade caddy

# 更新后检查:
caddy version
systemctl is-active caddy
sudo journalctl -u caddy -n 50 --no-pager

回滚 Caddyfile

1
2
3
4
5
6
7
8
9
# 查看备份:
sudo ls -lt /etc/caddy/Caddyfile.bak-*

# 选择正确的备份后:
sudo cp /etc/caddy/Caddyfile.bak-YYYYMMDD-HHMMSS \
/etc/caddy/Caddyfile

sudo caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile
sudo systemctl reload caddy

不要不加检查地使用“最新文件”,应先确认备份内容:

1
sudo cat /etc/caddy/Caddyfile.bak-YYYYMMDD-HHMMSS

公网访问

正在施工中……