本文最后更新于 2024-07-09,文章内容可能已经过时。

因特殊原因,本文从雨云论坛复制(原创),Halo自动将复制的图片以链接方式载入,所以点击图片跳转到雨云论坛为正常行为,请正常食用本文

开始之前

需要准备的东西:

服务器 x1

SSH连接工具 x1(可选)

准备中:

我这里采用雨云的服务器,可以点击这里打开,(也可以搜索雨云官网进行注册,注册时填写以下我的优惠码:Chack,谢谢了)

打开官网后,我们可以点击右上角的<登陆/注册>打开

image


然后会出现以下界面

image


如果你有账号的话可以填写你的用户名/手机号/邮箱进行登录,若没有账号,可以点击下方的按钮进行注册。然后按照提示注册即可(优惠码填写Chack,帮忙一下吧)

image


登陆后点击云服务器,然后点击购买服务器。(在下面的预安装APP里选择Docker环境最新版,至于系统版本按你的喜好选择)

选择一个心仪的购买就可以了(如果提示余额不足,可以按照提示进行充值)

image


购买后运行状态是创建中,我们只要等它变成运行中就可以了。

进入后台。买完服务器后可能会有领取积分的提示,先不要领取,否则无法7天无理由退款了。等你确定需求先在领取也不迟
image

2.安装中

登录终端

然后点击远程连接(VNC)

你也可以使用自己的SSH连接工具进行连接,这里就不举例了

选择第一个
image

image


注意:填入密码的时候密码是不显示的。

然后开始安装Docker Compose

下载Docker Compose的最新版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予权限
sudo chmod +x /usr/local/bin/docker-compose
验证安装是否成功
docker-compose --version

如果成功的显示了,并且没有任何的报错,那么安装成功,祝贺你QWQ

拉取镜像

声明:以下内容部分来自Halo官方文档 2

创建一个文件夹

mkdir ~/halo && cd ~/halo

成功后创建docker-compose.yaml文件

vim docker-compose.yaml

进入操作界面后,按i键切换至编辑模式。

然后复制代码拉取Halo镜像。

警告:

不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时 备份数据
本文使用H2数据库,因为查看本文章而使用H2数据库造成的损失,我概不负责!

version: "3"

services:
  halo:
    image: halohub/halo:2.13
    container_name: halo
    restart: on-failure:3
    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:
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

注意:外部访问地址一定要改为你的域名,不然会无法访问的。

如果有Nginx或其他服务占用了80端口,那么可以使用端口映射解决

编辑好后,按Esc(键盘左上角那个)然后输入:wq,再Enter回车保存

启动Halo服务

docker-compose up -d

首次启动的时候会拉取镜像,根据你的带宽决定镜像拉取速度。

拉取完后会自动启动容器

实时查看日志:

docker-compose logs -f

然后访问就大告成了。

访问一下试试(请在防火墙令端口通行)格式为http://<你的域名>:<端口>

如果你没有使用80端口访问的需求,你就可以去研究你的博客了。

拉取管理后台

声明:以下内容部分来自Halo官方文档

Halo官方文档直达

首先,我们创建一个文件夹来存放 NPM 的 docker-compose.yml 文件:

mkdir -p ~/data/docker_data/nginxproxymanager   # 创建一个 npm 的文件夹

cd ~/data/docker_data/nginxproxymanager    # 进入该文件夹

vi docker-compose.yml

在英文状态的输入法下,按下 i ,左下角出现 --INSERT-- 后,粘贴填入下面的内容:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

注意:安装了 NPM 之后,就不需要再安装 Nginx 了,否则会端口冲突(不建议修改 NPM 的 80、443 端口)。如果你的服务器安装了宝塔面板,也可以和 NPM 一起使用,只要你到软件后台把宝塔安装的 Nginx 关闭或者卸载即可。

之后,同样在英文输入法下,按一下 esc ,然后 :wq 保存退出。

启动:

docker-compose up -d     # -d 表示后台运行

docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

按照我说的安装,那么一般选择第一个docker-compose up -d 就可以了。

不出意外,你可以按照以下格式访问后反向代理管理后台了

http://你的IP:端口号默认81

默认登陆的用户名:admin@example.com 密码:changeme

第一次登陆会提示更改用户名和密码,建议修改一个复杂一点的密码。

image
然后点击Add Proxy Host
翻译后

image
看起来都是英文,很复杂,但是其实很简单,我们只要用到其中的几个功能即可,这边稍微解释一下:

  • Domain Names :填我们 Halo 网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上

  • Scheme :默认 http 即可,除非你有自签名证书

  • Forward Hostname/IP :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)

  • Forward Port:填入 Halo 映射出的端口,这边默认是 8090

  • Cache Assets :缓存,可以选择打开

  • Block Common Exploits: 阻止常见的漏洞,可以选择打开

  • Websockets Support :WS 支持,可以选择打开

  • Access List: 这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究。
    域名填写你的域名,如果没有域名,可以在雨云申请免费的二级域名,如果有可以可以直接填写。

雨云二级域名申请

image
从上到下从左到右的顺序排序

点击总览,然后点击域名服务,输入英文到子域名里(www是禁止的)然后点击主域名,选择一个你喜欢的,

默认选择雨云产品,然后第四个选择你需要绑定的雨云产品,选择的是ID,可以在服务器管理页查看产品ID。

image


最后点击立即创建就可以了。
点击SSL
image
image
点击申请新的SSL证书。
image
勾选强制启用SSL。

然后访问

https://你的域名/

这样子就可以了,成功的安装了Halo

如果你遇到任何关于服务器的问题可以提交工单。

image


image

image