> For AI agents: the complete documentation index is available at https://docs.halo.run/llms.txt, the full documentation bundle is available at https://docs.halo.run/llms-full.txt.

# 使用离线包部署

:::info 先阅读《写在前面》
在继续操作之前，我们推荐您先阅读[《写在前面》](https://docs.halo.run/guide/prepare.md)，这可以快速帮助你了解 Halo。
:::

Halo 离线安装包使用 Docker + Docker Compose 的方式部署 Halo 及其他服务，安装包中内置了 Docker 程序和容器镜像文件，可以帮助用户在无法访问互联网的服务器上，完成 Halo 的安装部署。

## 下载安装包

请自行前往[飞致云开源社区](https://community.fit2cloud.com/#/products/halo/downloads)下载 Halo 最新版本的安装包，并复制到目标机器的 /tmp 目录下。

## 安装部署

### 解压安装包

以 root 用户 ssh 登录到目标机器，并执行如下命令：

```bash
cd /tmp
# 解压安装包（halo-offline-installer-v2.17.0-amd64.tar.gz 为示例安装包名称，操作时可根据实际安装包名称替换）
tar zxvf halo-offline-installer-v2.17.0-amd64.tar.gz
```

:::info 离线安装包目录结构
安装包目录说明

```tree
├── docker                      # 离线安装 Docker 使用到的文件
│   ├── bin
│   │   ├── containerd
│   │   ├── containerd-shim-runc-v2
│   │   ├── ctr
│   │   ├── docker
│   │   ├── docker-compose
│   │   ├── dockerd
│   │   ├── docker-init
│   │   ├── docker-proxy
│   │   └── runc
│   └── service
│       └── docker.service
├── docker-compose.yaml         # 包含 Halo 及数据库服务的 Docker Compose 文件
├── .env                        # Docker Compose 文件使用的变量声明文件，部分参数从该文件中读取
├── images                      # Halo 及数据库的容器镜像文件
│   ├── halo.tar.gz
│   ├── mysql.tar.gz
│   └── postgres.tar.gz
├── install.sh                  # 安装脚本
├── LICENSE
└── README.md
```

:::

### 执行安装脚本

```bash
# 进入安装包目录（halo-offline-installer-v2.17.0-amd64 为示例安装包目录名称，操作时可根据实际安装包名称替换）
cd halo-offline-installer-v2.17.0-amd64

# 运行安装脚本
/bin/bash install.sh
```

根据脚本给出的提示，输入安装目录、服务端口、数据库信息等相关配置信息，等待脚本执行完成。

:::info 默认安装目录结构
假设采用默认安装位置 /opt/halo 完成安装，安装目录的文件结构如下：

```tree
├── data                            # 数据存储目录
│   ├── db                          # 数据库数据存储目录，挂载至数据库容器
│   └── halo                        # Halo 数据存储目录，挂载至 Halo 容器
│       ├── indices
│       ├── keys
│       ├── logs
│       ├── plugins
│       └── themes
├── docker-compose.yaml             # Docker Compose 文件
├── .env                            # Docker Compose 文件使用的变量声明文件，部分参数从该文件中读取
├── install.log                     # 安装脚本日志文件
├── LICENSE
└── README.md
```

安装完成后，可以直接进入 /opt/halo 目录，使用 docker-compose 命令完成后续维护操作，也可以修改 docker-compose.yaml 中的相关配置满足不同需求。

运行参数详解：

| 参数名                        | 描述                                             |
| -------------------------- | ---------------------------------------------- |
| `spring.r2dbc.url`         | 数据库连接地址，详细可查阅下方的 `数据库配置`                       |
| `spring.r2dbc.username`    | 数据库用户名                                         |
| `spring.r2dbc.password`    | 数据库密码                                          |
| `spring.sql.init.platform` | 数据库平台名称，支持 `postgresql`、`mysql`、`mariadb`、`h2` |
| `halo.external-url`        | 外部访问链接，如果需要在公网访问，需要配置为实际访问地址                   |

数据库配置：

| 链接方式           | 链接地址格式                                                                             | `spring.sql.init.platform` |
| -------------- | ---------------------------------------------------------------------------------- | -------------------------- |
| PostgreSQL（推荐） | `r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}`                                 | postgresql                 |
| MySQL          | `r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}`                                      | mysql                      |
| MariaDB        | `r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}`                                    | mariadb                    |
| H2 Database    | `r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE` | h2                         |

:::

### 登录访问

用浏览器访问 /console 即可进入 Halo 管理页面，首次启动会进入初始化页面。
