环境准备
- 一台 VPS(本文用 Debian 13)
- 一个域名,DNS 的 A 记录指向服务器 IP
- 服务器放行 80 / 443 端口(Let's Encrypt 签发证书需要)
1. 安装 Docker
apt update && apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
添加 Docker 官方源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
安装:
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
验证:
docker --version && docker compose version
2. 准备部署文件
mkdir -p /opt/halo && cd /opt/halo
新建 docker-compose.yml(把 你的域名 换成自己的):
services:
halo:
image: halohub/halo:2.20
container_name: halo
restart: unless-stopped
volumes:
- ./halo2:/root/.halo2
networks:
- halo-net
command:
- --halo.external-url=https://你的域名/
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy-data:/data
- ./caddy-config:/config
networks:
- halo-net
networks:
halo-net:
新建 Caddyfile:
你的域名 {
reverse_proxy halo:8090
}
3. 启动
docker compose up -d
Caddy 会自动申请 Let's Encrypt 证书并配置 HTTPS,全自动,不用操心。等一两分钟,打开 https://你的域名 应该就能看到 Halo 的初始化页面。
4. 初始化博客
浏览器访问:
https://你的域名/system/setup
创建管理员账号、填写站点标题,完成。
为什么用 Caddy 而不是 Nginx
就一个理由:HTTPS 全自动。证书申请、续期都不用管,省下来的时间可以多写两篇文章。
下一篇讲怎么换主题、美化博客。