记录此博客的搭建过程,便于后续维护和迁移,同时也可给其他小伙伴作为参考;

安装环境:

  • Ubuntu 22

  • docker和docker-compose

  • 注意,Halo对VPS配置有一定要求,如果像我一样同时安装这两个博客,建议配置在2C2G以上

安装docker

安装Halo

  1. 创建文件目录
mkdir /data/docker_data/halo
cd /data/docker_data/halo
  1. 编辑docker-compose.yml文件
version: "3"

services:
  halo:
    image: halohub/halo:2.11
    container_name: halo
    restart: unless-stopped
    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=J~Y7g)4v8H-e
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://xfun.one

  halodb:
    image: mysql:8.1.0
    container_name: halodb
    restart: unless-stopped
    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=J~Y7g)4v8H-e
      - MYSQL_DATABASE=halo

networks:
  halo_network:
  1. 运行docker-compose
    在halo目录下执行
docker-compose up -d

安装lsky_pro

使用的是 Github HalcyonAzure大佬创建容器

  1. 创建文件目录
mkdir /data/docker_data/lsky_pro
cd /data/docker_data/lsky_pro
  1. 编辑docker-compose.yml文件
version: '3'
services:
  lskypro:
    image: halcyonazure/lsky-pro-docker:latest
    restart: unless-stopped
    hostname: lskypro
    container_name: lskypro
    environment:
      - WEB_PORT=8089
    volumes:
      - $PWD/web:/var/www/html/
    ports:
      - "9080:8089"
    networks:
      - lsky-net

  # 注:arm64的无法使用该镜像,请选择sqlite或自建数据库
  mysql-lsky:
    image: mysql:5.7.22
    restart: unless-stopped
    # 主机名,可作为"数据库连接地址"
    hostname: mysql-lsky
    # 容器名称
    container_name: mysql-lsky
    # 修改加密规则
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - $PWD/mysql/data:/var/lib/mysql
      - $PWD/mysql/conf:/etc/mysql
      - $PWD/mysql/log:/var/log/mysql
    environment:
      MYSQL_ROOT_PASSWORD: J~Y7g)4v8H-e # 数据库root用户密码,自行修改
      MYSQL_DATABASE: `lsky-data` # 可作为"数据库名称/路径"
    networks:
      - lsky-net

networks:
  lsky-net: {}
  1. 运行docker-compose
    在lsky_pro目录下执行
docker-compose up -d

使用Nginx Proxy Manager反向代理

Nginx Proxy Manager的安装教程比较多,我使用的是 猪猫 整理的脚本

wget -N --no-check-certificate https://fly-uni.com/onekey/zhumao.sh && chmod 700 ./zhumao.sh && ./zhumao.sh

安装完成后,设置反向代理需要先获取docker的IP地址,使用命令ip addr show docker0
对于 Halo 的代理端口是 8090 ,对于lsky_pro的代理端口是9080

特别注意:
由于是使用的docker-compose进行安装,lsky_pro进入安装页面后按照如下格式填写,
数据库连接地址填写mysql-lsky
端口 留空,不需要填写
数据库名称/路径填写lsky-data
用户名填写root
密码填写J~Y7g)4v8H-e,此处参考yml配置文件里的信息可以自行修改查阅

其余补充说明

偶尔出现重启VPS后,lsky图床无法上传图片的情况,可以在后台lsky_pro目录下执行

docker-compose restart

PS:如果修改了docker-compose.yml文件后,同样需要执行此命令使修改生效

lsky_pro的运行路径为/data/docker_data/lsky_pro,因此我们可以在这里进一步DIY。
可以将/web/public路径下的favicon.ico 替换为自己想要的图标;
对于水印字体,可以上传到/storage/app/public路径下

文章作者: Kinut
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 安静的角落
计算机 VPS
喜欢就支持一下吧