从零开始:使用 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 才生效,期间刷新了无数次浏览器,考验耐心。
如果你也是个热爱折腾的学生,强烈建议自己动手搭一个博客。它不仅是你的数字简历,更是你技术成长的最好见证。
