24
0
2

从零开始:使用 Docker 在佛系云部署 Halo 博客并配置 Ethereal 主题

文章摘要
|
环境与准备
· 一台云服务器:我选的是佛系云,配置不用太高,2核2G 即可流畅运行。系统我选用了 Ubuntu 22.04。
· 一个域名:blog.foldx.cn,解析到你的服务器 IP。
· 基础工具:熟悉 Linux 常用命令,会使用 SSH 连接服务器。
· 核心依赖:Docker 和 Docker Compose。

第一步:使用 Docker 部署 Halo

Halo 是一个基于 Java (Spring Boot) 开发的现代化博客系统,用它来建站非常优雅。由于我已经习惯了容器化部署,直接用 Docker Compose 一把梭。

首先,在服务器上创建一个目录用于存放 Halo 的数据:

mkdir -p /opt/halo && cd /opt/halo

然后编写 docker-compose.yml 文件。这里我选择搭配 MySQL 作为数据库

version: "3"

services:
  halo:
    image: halohub/halo:2.26
    container_name: halo
    restart: on-failure:3
    depends_on:
      - halo-mysql
    volumes:
      - ./data:/root/.halo2
    ports:
      - "8090:8090"
    environment:
      # 如果使用 MySQL,JDBC 连接字符串
      SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
      SPRING_DATASOURCE_URL: jdbc:mysql://halo-mysql:3306/halo?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
      SPRING_DATASOURCE_USERNAME: halo
      SPRING_DATASOURCE_PASSWORD: 你的数据库密码
    command:
      - --halo.external-url=https://blog.foldx.cn
      - --halo.security.initializer.superadminusername=admin
      - --halo.security.initializer.superadminpassword=你的管理员密码

  halo-mysql:
    image: mysql:8.0
    container_name: halo-mysql
    restart: on-failure:3
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root密码
      MYSQL_DATABASE: halo
      MYSQL_USER: halo
      MYSQL_PASSWORD: 你的数据库密码

保存退出后,直接一键启动:

docker compose up -d

第二步:配置 Nginx 反向代理与 HTTPS

为了能用域名直接访问并开启 HTTPS,我们需要配置 Nginx。

在服务器上安装 Nginx 后,新建配置文件 /etc/nginx/sites-available/blog.foldx.cn:

server {
    listen 80;
    server_name blog.foldx.cn;

    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

软链接并重启 Nginx。随后使用 certbot 一键申请免费的 Let's Encrypt SSL 证书,实现全站 HTTPS 加密。

第三步:初始化后台与安装 Ethereal 主题

在浏览器输入 https://blog.foldx.cn,就可以看到 Halo 的初始化安装界面了。跟着提示设置好管理员账号和密码

登录后台后,第一件事就是换上我心仪已久的 Ethereal 主题,进入 外观 -> 主题 -> 应用市场,搜索 Ethereal 并安装启用

Ethereal 的极简风格和清爽的排版深得我心,配合顶部自定义的文案(比如那句“蘸朱紫将登金银楼,染冰雪先披琉璃胄”),非常有文艺气息

第四步:完善细节与插件生态

Halo 2.x 强大的插件系统是它的核心魅力。我在应用市场安装了以下必备插件:

1. 瞬间(Moments):用来发一些简短的动态,类似于微博。配置好之后,我在导航栏加上了“瞬间”菜单,随时记录碎碎念。

2. RSS 订阅:安装官方 RSS 插件后,订阅地址变为了 https://blog.foldx.cn/rss.xml。这里提醒大家,RSS 是给阅读器看的 XML 数据,直接在浏览器打开会是一堆代码,这是正常的。

第五步:创建必要的页面

为了让博客看起来更正规,我创建了几个基础页面,并统一放在了菜单和页脚:

· 关于:介绍了自己(学生、云计算与 AI 爱好者)、常用工具(Java、Python、Docker)和兴趣爱好(编程、游戏、音乐)。

· 隐私政策:声明了如何收集和使用访客数据。

· 用户协议:规定了使用本站服务的条款。

· 技能:在后台配置了技能卡片

踩坑与总结

· 端口占用:一开始 8090 端口被占用,用 netstat -tulnp 检查后 kill 掉旧进程就解决了。

· 域名解析不生效:等了大概十分钟 DNS 才生效,期间刷新了无数次浏览器,考验耐心。

如果你也是个热爱折腾的学生,强烈建议自己动手搭一个博客。它不仅是你的数字简历,更是你技术成长的最好见证。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

从零开始:使用 Docker 在佛系云部署 Halo 博客并配置 Ethereal 主题
/archives/cong-ling-kai-shi-shi-yong-docker-zai-fo-xi-yun-bu-shu-halo-bo-ke-bing-pei-zhi-ethereal-zhu-ti
作者
Sienna Fuca
发布于
2026-09-25
许可协议
CC BY-NC-SA 4.0

评论

欢迎来到我的博客!