Skip to content

Latest commit

 

History

History
executable file
·
177 lines (128 loc) · 9.02 KB

File metadata and controls

executable file
·
177 lines (128 loc) · 9.02 KB

使用 Docker 镜像

LibreSpeed 的 Docker 版本可在此处获取:GitHub Packages

Alpine Linux 变体

基于 Alpine Linux 的 LibreSpeed Docker 版本也可在此处获取:GitHub Packages,位于所有带 -alpine 后缀的标签下。该变体明显更小,但由于其工具链基于 musl libc(如此处所述),行为可能略有不同。

快速开始

如果你只是想试用一下,最快的方式是:

docker run -p 80:8080 -d --name speedtest --rm ghcr.io/librespeed/speedtest

然后用浏览器访问你服务器的 80 端口试用。如果 80 端口已被占用,请调整上面 80:8080 中的第一个数字。 默认以 standalone(独立)模式运行。

Docker Compose

在生产环境中,我们建议使用 docker-compose。

要使用 docker compose 启动容器,可以使用以下 docker-compose.yml 配置:

version: '3.7'
services:
  speedtest:
    container_name: speedtest
    image: ghcr.io/librespeed/speedtest:latest
    restart: always
    environment:
      MODE: standalone
      #TITLE: "LibreSpeed"
      #TAGLINE: "No Flash, No Java, No Websockets, No Bullsh*t"
      #TELEMETRY: "false"
      #ENABLE_ID_OBFUSCATION: "false"
      #REDACT_IP_ADDRESSES: "false"
      #PASSWORD:
      #GDPR_EMAIL: "privacy@example.com"
      #DISABLE_IPINFO: "false"
      #IPINFO_APIKEY: "your api key"
      #DISTANCE: "km"
      #WEBPORT: 8080
    ports:
      - "80:8080" # webport mapping (host:container)

请根据预期的运行模式调整环境变量。

独立(Standalone)模式

如果你想在单台服务器上安装 LibreSpeed,需要将其配置为独立模式。为此,请将 MODE 环境变量设置为 standalone

测试可通过 80 端口访问。

以下是在该模式下可用的其他环境变量列表:

  • TITLE:你的网速测试的标题。默认值:LibreSpeed
  • TAGLINE:现代前端(index-modern.html)标题下方显示的标语。默认值:No Flash, No Java, No Websockets, No Bullsh*t
  • USE_NEW_DESIGN:设置为 true 时,启用新的现代前端设计。设置为 false(默认)时,使用经典设计。也可以使用 URL 参数(?design=new?design=old)切换设计。默认值:false
  • SERVER_LIST_URL:设置后,两种前端设计都会从此 URL 加载服务器列表,而不是使用生成或挂载的 server-list.json。如果你希望容器化前端使用远程共享服务器列表,这很有用。
  • TELEMETRY:是否启用遥测。如果启用,你可能希望数据持久化,详见下文。默认值:false
  • ENABLE_ID_OBFUSCATION:在启用遥测的情况下设置为 true 时,测试 ID 会被混淆,以避免暴露数据库内部的顺序 ID。默认值:false
  • OBFUSCATION_SALT:用于混淆测试 ID 的盐字符串。格式应为 2 字节的十六进制字符串(例如 0x1234abcd)。如果未指定,将生成一个随机的。
  • REDACT_IP_ADDRESSES:在启用遥测的情况下设置为 true 时,IP 地址和主机名将从收集的遥测中移除,以更好地保护隐私。默认值:false
  • DB_TYPE:设置为受支持的数据库后端之一时,将使用它而不是默认的 sqlite 数据库后端。TELEMETRY 必须设置为 true。此外,你还必须按照 doc.md 中的说明创建数据库。受支持的后端类型有:
    • sqlite - 无需额外设置
    • mysql、postgresql - 设置额外的环境变量:
      • DB_HOSTNAME - 数据库服务器的名称或 IP
      • DB_PORT(仅 mysql)- 数据库运行的端口
      • DB_NAME - 遥测数据库的名称
      • DB_USERNAME、DB_PASSWORD - 对数据库具有读取和更新权限的用户的凭据
    • mssql - 尚不支持 docker 镜像(欢迎为此提交 PR,需要在 entrypoint.sh 中实现)
  • PASSWORD:访问统计页面的密码。如果未设置,统计页面将不允许访问。
  • GDPR_EMAIL:隐私政策中显示的用于数据删除请求的电子邮件地址。如果未设置,将显示默认占位文本。在生产环境中运行时应设置此项以符合 GDPR 要求。启用遥测时必须指定。注意:旧的 EMAIL 环境变量仍作为回退被接受,但已弃用 —— 请迁移到 GDPR_EMAIL
  • DISABLE_IPINFO:如果设置为 true,将不会从 ipinfo.io 或离线数据库获取 ISP 信息和距离。默认值:false
  • IPINFO_APIKEYipinfo.io 的 API 密钥。可选,但如果想使用完整的 ipinfo.io API(距离测量需要),则是必需的。
  • DISTANCE:当 DISABLE_IPINFO 设置为 false 时,指定如何测量与服务器的距离。可以是 km(公里)、mi(英里),或空字符串以禁用距离测量。需要 ipinfo.io API 密钥。默认值:km
  • WEBPORT:允许为内置 Web 服务器选择自定义端口。默认值:8080。注意,你需要通过 docker 的 -p 参数将其暴露。这不是服务在 docker 外部暴露的端口!

如果启用了遥测,统计页面将在 http://your.server/results/stats.php 提供,但必须指定密码。

持久化 sqlite 数据库

默认数据库驱动是 sqlite。数据库文件写入 /database/db.sql

因此,如果你希望数据在镜像更新后仍然保留,必须使用 -v $PWD/db-dir:/database 挂载卷。

带遥测的独立模式示例

以下命令以独立模式启动 LibreSpeed,启用持久化遥测、ID 混淆和统计密码,监听 86 端口:

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/librespeed/speedtest

多测试节点

对于多服务器场景,你需要部署 1 个或多个 LibreSpeed 后端,以及 1 个 LibreSpeed 前端。

后端(Backend)模式

在后端模式下,LibreSpeed 仅提供一个测试节点,没有 UI。为此,请将 MODE 环境变量设置为 backend

以下后端文件可通过 80 端口访问:garbage.phpempty.phpgetIP.php

以下是在该模式下可用的其他环境变量列表:

  • IPINFO_APIKEYipinfo.io 的 API 密钥。可选,但如果想使用完整的 ipinfo.io API(距离测量需要),则是必需的。如果未提供 API 密钥,将改用离线数据库。

后端模式示例

以下命令以默认设置在后端模式下启动 LibreSpeed,监听 80 端口:

docker run -e MODE=backend -p 80:8080 -it ghcr.io/librespeed/speedtest

前端(Frontend)模式

在前端模式下,LibreSpeed 为客户端提供 Web UI 和服务器列表。为此:

  • MODE 环境变量设置为 frontend

  • 创建一个包含测试节点的 servers.json 文件。语法如下:

    [
        {
            "name": "Friendly name for Server 1",
            "server" :"//server1.mydomain.com/",
            "dlURL" :"garbage.php",
            "ulURL" :"empty.php",
            "pingURL" :"empty.php",
            "getIpURL" :"getIP.php"
        },
        {
            "name": "Friendly name for Server 2",
            "server" :"https://server2.mydomain.com/",
            "dlURL" :"garbage.php",
            "ulURL" :"empty.php",
            "pingURL" :"empty.php",
            "getIpURL" :"getIP.php"
        },
        //...more servers...
    ]

    注意:如果服务器仅支持 HTTP 或 HTTPS,请在 server 字段中指定协议。如果两者都支持,只需使用 //

  • 将此文件挂载到容器中的 /servers.json(示例见本文件末尾)

测试可通过 80 端口访问。

该模式下可用的环境变量列表与上面的独立模式相同。

如果你希望 Docker 前端从其他 URL 而不是 /servers.json 加载服务器列表,请设置 SERVER_LIST_URL

docker run -e MODE=frontend -e SERVER_LIST_URL="https://example.com/custom-server-list.json" -p 80:8080 -it ghcr.io/librespeed/speedtest

前端模式示例

以下命令以前端模式启动 LibreSpeed,使用给定的 servers.json 文件,并启用遥测、ID 混淆、统计密码以及用于存储结果的持久化 sqlite 数据库:

docker run -e MODE=frontend -e TELEMETRY=true -e ENABLE_ID_OBFUSCATION=true -e PASSWORD="yourPasswordHere" -v $PWD/servers.json:/servers.json -v $PWD/db-dir/:/database -p 80:8080 -it ghcr.io/librespeed/speedtest

双(Dual)模式

在双模式下,LibreSpeed 作为独立服务器运行,同时也可以连接其他测试节点。为此:

  • MODE 环境变量设置为 dual
  • 按照前端模式的 servers.json 说明操作
  • 第一个服务器条目应是本地服务器,使用客户端可以访问的服务器端点地址。