142 lines
6.7 KiB
Markdown
Executable file
142 lines
6.7 KiB
Markdown
Executable file
LibreSpeed的Docker版本可以在这里找到:[GitHub Packages](https://github.com/librespeed/speedtest/pkgs/container/speedtest)
|
||
|
||
## 下载 Docker 镜像
|
||
要从 Docker 仓库下载 LibreSpeed,请使用以下命令:
|
||
|
||
```
|
||
docker pull ghcr.io/kumakaiha/speedtest
|
||
```
|
||
|
||
现在您将拥有一个名为 `kumakaiha/speedtest` 的新 Docker 镜像。
|
||
|
||
## Docker Compose
|
||
要使用 [docker compose](https://docs.docker.com/compose/) 启动容器,可以使用以下配置:
|
||
|
||
```yml
|
||
version: '3.7'
|
||
services:
|
||
speedtest:
|
||
container_name: speedtest
|
||
image: ghcr.io/kumakaiha/speedtest:latest
|
||
restart: always
|
||
environment:
|
||
MODE: standalone
|
||
#TITLE: "LibreSpeed"
|
||
#TELEMETRY: "false"
|
||
#ENABLE_ID_OBFUSCATION: "false"
|
||
#REDACT_IP_ADDRESSES: "false"
|
||
#PASSWORD:
|
||
#EMAIL:
|
||
#DISABLE_IPINFO: "false"
|
||
#DISTANCE: "km"
|
||
#WEBPORT: 80
|
||
ports:
|
||
- "80:80" # webport mapping (host:container)
|
||
```
|
||
|
||
请根据预期的操作模式调整环境变量。
|
||
|
||
## 独立模式
|
||
如果您想在单个服务器上安装 LibreSpeed,则需要将其配置为独立模式。为此,请将 `MODE` 环境变量设置为 `standalone`。
|
||
|
||
测试可以通过端口 80 访问。
|
||
|
||
以下是在此模式下可用的其他环境变量列表:
|
||
* __`TITLE`__: 您的速度测试标题。默认值:`LibreSpeed`
|
||
* __`TELEMETRY`__: 是否启用遥测。如果启用,您可能希望持久保存数据。请参见下文。默认值:`false`
|
||
* __`ENABLE_ID_OBFUSCATION`__: 当启用遥测并设置为 true 时,测试 ID 将被模糊化,以避免暴露数据库内部的顺序 ID。默认值:`false`
|
||
* __`REDACT_IP_ADDRESSES`__: 当启用遥测并设置为 true 时,IP 地址和主机名将从收集的遥测数据中删除,以提高隐私性。默认值:`false`
|
||
* __`PASSWORD`__: 访问统计页面的密码。如果未设置,统计页面将不允许访问。
|
||
* __`EMAIL`__: GDPR 请求的电子邮件地址。在启用遥测时必须指定。
|
||
* __`IPINFO_APIKEY`__: ipinfo.io 的 API 密钥。可选,但如果您希望提供大量测试,则需要。
|
||
* __`DISABLE_IPINFO`__: 如果设置为 true,则不会从 ipinfo.io 获取 ISP 信息和距离。默认值:`false`
|
||
* __`DISTANCE`__: 当 `DISABLE_IPINFO` 设置为 false 时,指定从服务器测量的距离方式。可以是 `km` 表示千米,`mi` 表示英里,或空字符串表示禁用距离测量。默认值:`km`
|
||
* __`WEBPORT`__: 允许选择包含的 Web 服务器的自定义端口。默认值:`80`。请注意,您将需要通过 -p 参数在 Docker 中公开它。
|
||
* __`TZ`__: 设定容器时区,并使得遥测数据符合当地时间。默认值:`Asia/Shanghai`。注意:仅在x86设备使用SQLITE的Docker环境中测试。
|
||
|
||
如果启用了遥测,将在 `http://your.server/results/stats.php` 上提供统计页面,但必须指定密码。
|
||
|
||
### 持久化 sqlite 数据库
|
||
|
||
默认的数据库驱动程序是 sqlite。数据库文件写入 `/database/db.sql`。
|
||
|
||
因此,如果希望数据在镜像更新后保持不变,必须通过 `-v $PWD/db-dir:/database` 挂载卷。
|
||
|
||
###### 示例
|
||
此命令在端口 80 上使用默认设置以独立模式启动 LibreSpeed:
|
||
|
||
```
|
||
docker run -e MODE=standalone -p 80:80 -it ghcr.io/kumakaiha/speedtest
|
||
```
|
||
|
||
此命令在端口 86 上使用独立模式启动 LibreSpeed,包括遥测、ID 模糊化和统计密码:
|
||
|
||
```
|
||
docker run -e MODE=standalone -e TELEMETRY=true -e ENABLE_ID_OBFUSCATION=true -e PASSWORD="yourPasswordHere" -e WEBPORT=86 -p 86:86 -v $PWD/db-dir/:/database -it ghcr.io/kumakaiha/speedtest
|
||
```
|
||
|
||
## 多个测试点
|
||
对于多个服务器,您需要设置 1 个或多个 LibreSpeed 后端和 1 个 LibreSpeed 前端。
|
||
|
||
### 后端模式
|
||
在后端模式下,LibreSpeed 仅提供一个测试点,没有用户界面。为此,请将 `MODE` 环境变量设置为 `backend`。
|
||
|
||
可以通过端口 80 访问以下后端文件:`garbage.php`、`empty.php`、`getIP.php`
|
||
|
||
以下是在此模式下可用的其他环境变量列表:
|
||
* __`IPINFO_APIKEY`__: ipinfo.io 的 API 密钥。可选,但如果您希望提供大量测试,则需要。
|
||
|
||
###### 示例:
|
||
此命令在端口 80 上使用默认设置以后端模式启动 LibreSpeed:
|
||
|
||
```
|
||
docker run -e MODE=backend -p 80:80 -it ghcr.io/librespeed/speedtest
|
||
```
|
||
|
||
### 前端模式
|
||
在前端模式下,LibreSpeed 为客户端提供 Web 用户界面和服务器列表。为此:
|
||
* 将 `MODE` 环境变量设置为 `frontend`
|
||
* 使用您的测试点创建一个 servers.json 文件。语法如下:
|
||
```
|
||
[
|
||
{
|
||
"name": "服务器 1 的友好名称",
|
||
"server" :"//server1.mydomain.com/",
|
||
"dlURL" :"garbage.php",
|
||
"ulURL" :"empty.php",
|
||
"pingURL" :"empty.php",
|
||
"getIpURL" :"getIP.php"
|
||
},
|
||
{
|
||
"name": "服务器 2 的友好名称",
|
||
"server" :"https://server2.mydomain.com/",
|
||
"dlURL" :"garbage.php",
|
||
"ulURL" :"empty.php",
|
||
"pingURL" :"empty.php",
|
||
"getIpURL" :"getIP.php"
|
||
},
|
||
...更多服务器...
|
||
]
|
||
```
|
||
注意:如果服务器仅支持 HTTP 或 HTTPS,请在服务器字段中指定协议。如果两者都支持,请使用 `//`。
|
||
* 将此文件挂载到容器中的 `/servers.json`(在本文件末尾有示例)
|
||
|
||
测试可以通过端口 80 访问。
|
||
|
||
以下是在此模式下可用的其他环境变量列表:
|
||
* __`TITLE`__: 您的速度测试标题。默认值:`LibreSpeed`
|
||
* __`TELEMETRY`__: 是否启用遥测。默认值:`false`
|
||
* __`ENABLE_ID_OBFUSCATION`__: 当启用遥测并设置为 true 时,测试 ID 将被模糊化,以避免暴露数据库内部的顺序 ID。默认值:`false`
|
||
* __`REDACT_IP_ADDRESSES`__: 当启用遥测并设置为 true 时,IP 地址和主机名将从收集的遥测数据中删除,以提高隐私性。默认值:`false`
|
||
* __`PASSWORD`__: 访问统计页面的密码。如果未设置,统计页面将不允许访问。
|
||
* __`EMAIL`__: GDPR 请求的电子邮件地址。在启用遥测时必须指定。
|
||
* __`DISABLE_IPINFO`__: 如果设置为 true,则不会从 ipinfo.io 获取 ISP 信息和距离。默认值:`false`
|
||
* __`DISTANCE`__: 当 `DISABLE_IPINFO` 设置为 false 时,指定从服务器测量的距禂方式。可以是 `km` 表示千米,`mi` 表示英里,或空字符串表示禁用距离测量。默认值:`km`
|
||
* __`WEBPORT`__: 允许选择包含的 Web 服务器的自定义端口。默认值:`80`
|
||
|
||
###### 示例
|
||
此命令在前端模式下启动 LibreSpeed,使用给定的 `servers.json` 文件,以及遥测、ID 模糊化和统计密码:
|
||
|
||
```
|
||
docker run -e MODE=frontend -e TELEMETRY=true -e ENABLE_ID_OBFUSCATION=true -e PASSWORD="yourPasswordHere" -v $(pwd)/servers.json:/servers.json -p 80:80 -it ghcr.io/kumakaiha/speedtest
|
||
``` |