使用docker-compose搭建Halo并配置Nginx Proxy Manager反向代理

使用docker-compose搭建Halo并配置Nginx Proxy Manager反向代理

66 2024-05-19

一,准备工作

1.vps一台

2.域名

二,开始搭建

1.本次搭建使用的是KiwiVM-2核2GVPS,使用系统为Debian 12 x86_64,cloudflare域名

2-1.搭建docker(国内国外视自己网络环境决定,二选一)


// 国外。
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

// 国内 
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun  
systemctl start docker

2-2.更新现有的软件包列表

apt update
apt install sudo
sudo apt update

2-3.安装一些必备的软件包

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

2-4.将官方 Docker hub 的 GPG key 添加到系统中

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

2-5.将 docker 版本库添加到APT源

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

2-6.用新添加的 docker 软件包来进行升级更新

apt update

2-7.安装 docker-ce

apt install docker-ce -y
# 检查docker版本
docker --version

2-8.查看 docker 是否正在运行,并设置默认启动

systemctl status docker

systemctl start docker

systemctl enable docker

2-9.安装 docker-compose

apt install docker-compose -y
# 检查docker-compose 版本
docker-compose --version

3-1.搭建Nginx Proxy Manager创建目录

Nginx Proxy Manager中文版本镜像网站:hub.docker.com/r/chishin/nginx-proxy-manager-zh

Nginx Proxy Manager官网

lsb_release -a  #查看系统版本
docker -v  #查看docker版本
docker-compose -v  #查看docker-compose版本
ls  #查看当前目录下文件
mkdir -p docker/data/nginx_proxy_manager  #创建nginx_proxy_manager目录
cd docker/data/nginx_proxy_manager   #进入nginx_proxy_manager目录

3-2.在nginx_proxy_manager目录下创建docker-compose.yml文件

vim docker-compose.yml

3-3.复制下面代码粘贴到docker-compose.yml里

version: '3.8'
services:
  app:
    image: 'chishin/nginx-proxy-manager-zh'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

3-4.保存退出

esc
:wq  

3-5.运行docker-compose.yml

docker-compase up -d

3-6.查看是否运行成功

docker ps

3-7.如下图表示运行成功

3-8.如要修改docker-compose.yml,可根据以下命令进行

cd docker/data/nginx_proxy_manager   #进入nginx_proxy_manager目录
vim docker-compose.yml    #进入docker-compose.yml
i    #进入编辑模式
esc   #退出编辑模式
:wq  #保存退出
docker compose pull  #更新docker-compose.yml
docker compose up -d  #重启docker-compose.yml

3-9.打开浏览器输入VPS公网IP加81端口号进入Nginx Proxy Manager的web界面

3-9.输入官方默认账号密码进入

Email:    admin@example.com
Password: changeme

3-10.进入后重新输入邮箱为登陆账号,并修改登陆密码

3-11.创建域名(A类,二级名称,VPS公网IP,关闭代理状态)

3-12-1.创建证书步骤一

3-12-2.步骤2

3-12-3.步骤3(说明:1.需要注册证书的域名一般填写一级域名例:kcccc.org,在填写二级域名例:*.kcccc.org。2.填写常用邮箱。3.打开“使用DNS认证”。4.选择域名对应的代理商。5.填写代理商API。6.打开“同意”。7.保存)

3-12-4.添加反代

说明:1.刚创建好的二级域名。2.VPS公网IP。3.nginx管理页面端口号。4.打开“防止常见漏洞”。5.保存

说明:1.选择SSL。2.选择刚创建好的SSL。3.打开所有选项。4.保存

创建完成

4-1.安装halo创建目录

Halo - 强大易用的开源建站工具(官网)

mkdir -p docker/data/halo  #创建halo 目录
cd docker/data/halo   #进入halo 目录

4-2.创建docker-compose.yml

vim docker-compose.yml

4-3.复制以下代码粘贴至docker-compose.yml里

说明:需要关注并修改的几个点:

1.image: halohub/halo:2.6.0 #这个是halo的安装版本 ,后果后期升级或者降级需要来这里修改版本号

2. volumes: - ./:/root/.halo2 #数据存放目录,这个默认就行

3.ports: - "8090:8090" #网站的端口号

4.- --halo.external-url=https://bk.kcccc.org #=号后面修改成自己的访问域名

5.- --halo.security.initializer.superadminusername=admin #=号后面修改登陆用户名

6.- --halo.security.initializer.superadminpassword=********** #=号后面修改登陆密码

version: "3"

services:
  halo:
    image: halohub/halo:2.6.0
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"
    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=https://bk.kcccc.org
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=***********

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_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"
    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:

4-4.修改完后保存退出

esc
:wq

4.5.运行docker-compose.yml

docker-compase up -d

4.6.查看运行状态

docker ps

4.7.如下图表示运行成功

4-8.打开浏览器输入VPS公网IP加端口号进行测试

4.9.创建域名

4-10.创建反代

4-11.测试

4-12.域名后面加console 进入后台管理