2026年4月18日,我的个人博客成立了!之前一直是在 workspace 写文章,后来这个网站不知道什么时候崩了,就在本地的笔记软件写文章。但本地笔记不好分享,又恰好在2026.4.16抢到了一年的阿里云2C2G服务器,想着服务器空着也是空着,不如搭个博客网站,把一些笔记和文章放上去,以便展示。
第一篇文章就记录一下怎么用 Halo 把博客搭起来的吧,总体来说还是非常简单的!
0. 运行环境
- 服务器:阿里云 (2核2G)
- 操作系统:Ubuntu 22.04 LTS
- 部署方式:Docker 容器化
- 博客引擎:Halo 2.20
1. 准备步骤
由于我这个服务器只有2G内存,后续跑MySQL、博客等应用时内存很快就会见底,为防止系统因为OOM杀掉核心进程,必须得给它加一道保险——把一部分硬盘当内存用,即Swap空间。阿里云默认是关闭Swap的,我们现在就用原生命令给它开一个 2GB 的 Swap 空间。(注:如果你的内存充足或已开启Swap空间,可以跳过这一块)
1.1 在根目录切出一块2G大小的文件
sudo fallocate -l 2G /swapfile
1.2 修改权限,只允许 root 读写(防止安全泄漏)
sudo chmod 600 /swapfile
1.3 把这个文件格式化为 Swap 专属格式
sudo mkswap /swapfile
1.4 正式激活它!
sudo swapon /swapfile
1.5 让它开机自启(写入系统挂载配置)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
1.6 验证
free -h
成功了的话就能看到 Swap 的 total 从之前的 0B 变成 现在的 2.0Gi 了。

2. 下载并配置docker
这里我采用的是 docker 容器化部署,有了 docker 后直接拉取 halo 镜像就行了,会非常方便。
2.1 使用阿里云镜像安装docker
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2.2 创建配置文件夹
sudo mkdir -p /etc/docker
2.3 写入加速地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.baidubce.com",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
2.4 重新加载配置并重启 Docker 服务(让刚才的加速地址生效)
sudo systemctl daemon-reload
sudo systemctl restart docker
2.5 验证加速器是否生效
docker info
看到最下面那一行,如果有刚才填的那几个网址就说明配置成功了:

3. 部署Halo博客项目
有了 docker 后博客项目只需简单几步操作就能部署成功了。
3.1 拉取Halo镜像
docker pull halohub/halo:2.20
3.2 创建宿主机数据目录
我们在当前用户的 Home 目录下建一个 .halo2 的隐藏文件夹(这是 Halo 2.x 版本的默认工作目录):
mkdir -p ~/.halo2
3.3 一键拉起 Halo 容器
文件夹建好后,直接用一条命令把容器跑起来,并且把刚刚建好的文件夹映射进去:
docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.20
参数解释:
-d: 后台静默运行,不卡住你的终端。--name halo: 给这个容器起个名字叫 halo。-p 8090:8090: 把容器内部的 8090 端口,暴露给宿主机的 8090 端口。-v ~/.halo2:/root/.halo2: 核心操作!把你刚建的目录和容器内部的存储目录打通
3.4 验证程序是否运行
docker ps
STATUS 栏是 Up 即表示程序已经在后台稳稳跑起来了:

4. 访问博客项目
4.1 开放安全组
云服务器默认是有安全组/防火墙拦截拦截外部流量的。容器虽然跑起来了,但外面还进不去。 你必须去云服务商的管理控制台,找到这台服务器的安全组(或防火墙)设置,手动添加一条规则:
- 协议:TCP
- 端口范围:8090
- 授权对象/源IP:0.0.0.0/0 (允许所有人访问)
4.2 浏览器访问
开放完毕后,直接在你的电脑浏览器里输入:
http://<你的云服务器公网IP>:8090
即可跳转到 Halo 精美的初始化安装界面了,跟着界面设置一下账号和密码之类的,个人博客就正式宣告落成了!