Administrator
发布于 2026-10-09 / 5 阅读
0
0

Docker 部署 Halo 博客全记录

环境准备

  • 一台 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 全自动。证书申请、续期都不用管,省下来的时间可以多写两篇文章。


下一篇讲怎么换主题、美化博客。


评论