如何创建这样的Halo博客

1.准备服务器及域名

本博客使用雨云云服务器,示例使用雨云

  • 找到云产品中云服务器分类,点击立刻购买

  • 根据下图配置

建议选用非大陆地区节点,不需要备案

建议使用KVM标配版以上,不然会有点坐牢

  • 其余保持默认即可

本博客使用阿里云域名代理商,示例使用阿里云

  • 点击阿里云万网右侧的“域名注册”

  • 根据下图操作

选一个.cn以外的域名

  • 购买域名即可

2.远程连接服务器

  • 点击右上角加号“新建会话”,在下图填入对应的内容

  • 其余内容保持不变

  • 点击保存并连接

  • 当你在终端看到root@RainYun-K1XrwALt:#之类的就成功了

    • 此处错误处理方法:重启服务器再试一遍,如果没办法只能给你算一卦了

3.部署应用

安装Docker

  • 在终端输入以下内容即可

  • 设置Docker的APT 仓库

sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc   echo \   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \   $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update

  • 安装最新版本

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 将你加入Docker用户组

sudo usermod -aG docker $USER
newgrp docker

部署Nginx+Halo+MySQL

  • 创建目录

mkdir ~/halo && cd ~/halo
  • 创建docker编排

vim docker-compose.yml
  • i进入vim编辑模式,粘贴内容

version: "3.8"

services:
  nginx:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    networks:
      halo_network:
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./nginx/data:/data
      - ./nginx/letsencrypt:/etc/letsencrypt

  halo:
    image: halohub/halo:2.13
    container_name: halo
    restart: always
    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
      - --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: always
    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/mysql:/var/lib/mysql
      - ./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:
  • esc 退出编辑模式,按:输入wq 保存并退出

  • 输入命令启动

docker compose up -d

4.内容初始化、域名解析

内容初始化

  • 配置后台用户名及密码

域名解析

  • 回到阿里云控制台,打开域名,选用下方的“域名解析”

  • 添加两条记录,主机记录分别为www和@,记录类型为A,记录值为服务器公网ip

5.Nginx Proxy Manager 反向代理

安装 Npm

mkdir npm
  • 重新启动Docker

docker compose up -d

  • 访问http://服务器公网 IP:81

  • 创建账户

进入 NPM 仪表盘,点击代理服务进入代理服务配置页面

如图上配置

结束awa

你已经可以通过域名访问你的Blog了

其余内容查看Nginx Proxy Manager 反向代理 | Halo 文档