写在开头

  拥有了一台服务器,但是不知道要怎么玩?
不如来搭建一个属于自己的博客吧!可以将自己有用的经验以及有趣的经历分享给大家。
我选择的是Halo快速建站,只需5分钟快速拥有属于自己的博客。

  Halo[官网直达]是一个强大易用的开源建站工具,并且 代码开源 、易于部署 。而且到目前更新到2.10版本已经内置应用市场,可以方便的选择需要的插件以及好看的主题。

dashboard-2023-12-03.webp

Docker Compose部署Halo

  先检查vps上是否已经安装docker comopse

docker-compose --version

  如果显示类似Docker Compose version v2.21.0表示安装成功。
  如果没有安装好,那么前往博客VPS安装Docker/Docker Compose快速部署。

创建文件夹 & yml文件

  1. 新建halo文件夹路径为/root/docker-data/halo,本博客所有docker部署的文件同一放在/root/docker-data文件夹下,方便统一管理。
mkdir -p /root/docker-data/halo
  1. 前往halo文件夹
cd /root/docker-data/halo

  这里我选择创建 Halo + MySQL 的实例,官网还有创建 Halo + PostgreSQL 的实例和仅创建 Halo 实例(使用默认的 H2 数据库,不推荐用于生产环境,建议体验和测试的时候使用)两种方式,大家可以前往官方文档自行查看。

[window type="green" title="注意⚠️"]

  1. halo默认使用8090端口,先检查端口是否被占用。检查方式:输入lsof -i:8090
    如果没有返回,则表示端口没有被占用。
    如果出现lsof: command not found则输入:apt install lsof #安装 lsof
  2. 下面代码之中 #外部访问地址,请根据实际需要修改 --halo.external-url=http://localhost:8090/ 部分大家可以把url改为自己的域名。
  3. MySQL 的密码可以修改,但是要与下方MYSQL_ROOT_PASSWORD保持一致。(这个现在不急着改但是之后一定要改,小心人家直接登陆你数据库直接删没了)
  4. 如果是在大厂买的服务器(腾讯云,阿里云,微软云,亚马逊云),要检查一下,在网页控制台上打开8090端口。
    [/window]
  1. 创建 docker-compose.yaml
vim docker-compose.yaml

  看完上面三条注意事项后,英文输入法,按下i将下面代码粘贴到docker-compose.yaml文件之中,英文输入法下输入:wq回车即可。

version: "3"

services:
  halo:
    image: halohub/halo:2.10
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=o#DwN&JSa56
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

  halodb:
    image: mysql:8.1.0
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
      - MYSQL_DATABASE=halo

networks:
  halo_network:

  启动 Halo 服务

docker-compose up -d

反向代理

  如果要进行反向代理可以查看使用docker compose部署Nginx Proxy Manager进行反向代理一文进行部署。

  部署完成之后,现在就可以通过IP:8090进入到博客后台,进行一些初始化设置了。

  这里是Halo应用市场官网,上面安装部署的Halo2.10内也已经安装好应用市场,大家可以根据自己喜好进行选择有趣的插件和主题。

更新Halo

  前往~/halo

cd /root/docker-data/halo

  修改 docker-compose.yaml 中配置的镜像版本。

vim docker-compose.yaml
services:
  halo:
    image: halohub/halo:2.10 #更新为想要的版本
    container_name: halo
docker-compose up -d

备份Halo

  在 Console 中,点击左侧菜单的 备份,进入备份页面。

  点击右上角的 创建备份 按钮,即可创建一个新的备份请求,需要注意的是,创建备份请求并不会立即开始备份,而是会在后台异步执行,因此需要等待一段时间才能看到备份的结果。

删除Halo

  删除 ~ /.halo 文件夹

rm -rf /root/docker-data/halo  # 完全删除映射到本地的数据