LibreSpeed Docker容器化部署最佳实践

LibreSpeed Docker容器化部署最佳实践

【免费下载链接】speedtest Self-hosted Speed Test for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more 【免费下载链接】speedtest 项目地址: https://gitcode.com/gh_mirrors/sp/speedtest

本文详细介绍了LibreSpeed的Docker容器化部署方案,涵盖了从基础镜像获取、快速启动命令到生产环境的Docker Compose部署配置。内容包括三种运行模式(独立模式、后端模式、前端模式)的详细配置方法,环境变量参数详解,数据持久化策略以及多节点架构部署方案,为不同规模的部署需求提供完整的技术指导。

Docker镜像获取与快速启动指南

LibreSpeed提供了官方Docker镜像,让用户能够快速部署和使用这个轻量级的网络速度测试工具。本章节将详细介绍如何获取Docker镜像以及各种快速启动方式。

官方镜像源与版本信息

LibreSpeed的官方Docker镜像托管在GitHub Packages上,提供了稳定可靠的镜像分发服务。镜像每周自动构建一次,确保包含最新的IP信息数据库和安全补丁。

镜像地址信息:

  • 官方镜像仓库: ghcr.io/librespeed/speedtest
  • 最新版本标签: latest
  • 特定版本标签: 支持语义化版本标签

基础快速启动命令

对于想要快速体验LibreSpeed的用户,可以使用以下最简单的启动命令:

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

这个命令会:

  • 拉取最新的LibreSpeed镜像(如果本地不存在)
  • 在后台运行容器(-d 参数)
  • 将容器内的80端口映射到主机的80端口(-p 80:80
  • 设置容器名称为speedtest--name speedtest
  • 容器停止后自动删除(--rm

启动完成后,通过浏览器访问 http://your-server-ip 即可使用速度测试功能。

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"
      TELEMETRY: "false"
    ports:
      - "80:80"

使用Docker Compose启动服务:

# 启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 停止服务
docker-compose down

不同运行模式的启动示例

LibreSpeed支持多种运行模式,以下是各模式的启动示例:

1. 独立模式(Standalone)带数据持久化
docker run -d \
  --name speedtest \
  -p 8080:80 \
  -e MODE=standalone \
  -e TELEMETRY=true \
  -e PASSWORD="yourSecurePassword" \
  -v ./database:/database \
  ghcr.io/librespeed/speedtest
2. 后端模式(Backend Only)
docker run -d \
  --name speedtest-backend \
  -p 8081:80 \
  -e MODE=backend \
  ghcr.io/librespeed/speedtest
3. 前端模式(Frontend)多服务器配置
docker run -d \
  --name speedtest-frontend \
  -p 8082:80 \
  -e MODE=frontend \
  -v ./servers.json:/servers.json \
  ghcr.io/librespeed/speedtest

端口映射配置参考表

根据实际需求,可以灵活配置端口映射:

使用场景主机端口容器端口示例命令
标准HTTP8080-p 80:80
自定义端口808080-p 8080:80
HTTPS代理44380-p 443:80
多实例8081,8082,...80-p 8081:80 -p 8082:80

环境变量配置速查

以下表格列出了常用的环境变量及其作用:

环境变量默认值说明
MODEstandalone运行模式:standalone/backend/frontend/dual
TITLELibreSpeed速度测试页面标题
TELEMETRYfalse是否启用数据收集
WEBPORT80容器内Web服务器端口
PASSWORD-统计页面访问密码
ENABLE_ID_OBFUSCATIONfalse是否启用ID混淆
REDACT_IP_ADDRESSESfalse是否隐藏IP地址

数据持久化配置

为了确保测试数据在容器重启后不丢失,需要配置数据卷挂载:

# SQLite数据库持久化
docker run -d \
  -p 80:80 \
  -v ./speedtest-data:/database \
  -e TELEMETRY=true \
  ghcr.io/librespeed/speedtest

# 服务器配置文件持久化(前端模式)
docker run -d \
  -p 80:80 \
  -v ./servers.json:/servers.json \
  -v ./speedtest-data:/database \
  -e MODE=frontend \
  ghcr.io/librespeed/speedtest

容器管理常用命令

掌握以下Docker命令有助于更好地管理LibreSpeed容器:

# 查看运行中的容器
docker ps

# 查看容器日志
docker logs speedtest

# 进入容器shell
docker exec -it speedtest bash

# 停止容器
docker stop speedtest

# 删除容器
docker rm speedtest

# 更新镜像(先停止旧容器)
docker pull ghcr.io/librespeed/speedtest:latest

故障排查与日志查看

如果容器启动失败,可以通过以下方式排查问题:

# 查看详细日志
docker logs speedtest --details

# 以交互模式启动(便于调试)
docker run -it --rm -p 80:80 ghcr.io/librespeed/speedtest

# 检查容器状态
docker inspect speedtest

通过上述指南,您可以快速获取并启动LibreSpeed Docker镜像,根据实际需求选择合适的运行模式和配置方式。Docker化部署大大简化了安装和配置过程,让网络速度测试服务的部署变得更加便捷高效。

独立模式、后端模式、前端模式配置

LibreSpeed Docker容器提供了三种主要的运行模式:独立模式(Standalone)、后端模式(Backend)和前端模式(Frontend)。每种模式都有其特定的应用场景和配置要求,下面将详细介绍这三种模式的配置方法。

独立模式(Standalone Mode)

独立模式是最简单的部署方式,适用于单服务器环境。在这种模式下,LibreSpeed同时提供Web界面和测试后端服务。

环境变量配置

独立模式通过设置 MODE=standalone 环境变量来启用,支持以下关键配置选项:

环境变量默认值描述
MODEstandalone运行模式设置为独立模式
TITLELibreSpeed测速页面显示的标题
TELEMETRYfalse是否启用测试结果收集功能
ENABLE_ID_OBFUSCATIONfalse是否启用测试ID混淆
REDACT_IP_ADDRESSESfalse是否对IP地址进行脱敏处理
PASSWORD统计页面访问密码
EMAILGDPR请求联系邮箱
DISABLE_IPINFOfalse是否禁用IP信息查询
IPINFO_APIKEYipinfo.io API密钥
DISTANCEkm距离单位(km/mi)
WEBPORT80Web服务器监听端口
DB_TYPEsqlite数据库类型(sqlite/mysql/postgresql)
数据库配置示例

对于不同的数据库类型,需要配置相应的连接参数:

# MySQL数据库配置
DB_TYPE: mysql
DB_HOSTNAME: mysql-server
DB_PORT: 3306
DB_NAME: speedtest_db
DB_USERNAME: speedtest_user
DB_PASSWORD: secure_password

# PostgreSQL数据库配置  
DB_TYPE: postgresql
DB_HOSTNAME: postgres-server
DB_NAME: speedtest_db
DB_USERNAME: speedtest_user
DB_PASSWORD: secure_password

# SQLite数据库配置(默认)
DB_TYPE: sqlite
Docker Compose 配置示例
version: '3.7'
services:
  speedtest:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: speedtest-standalone
    restart: always
    environment:
      MODE: standalone
      TELEMETRY: "true"
      ENABLE_ID_OBFUSCATION: "true"
      REDACT_IP_ADDRESSES: "false"
      PASSWORD: "your_secure_password"
      EMAIL: "admin@example.com"
      DB_TYPE: "mysql"
      DB_HOSTNAME: "mysql-db"
      DB_PORT: "3306"
      DB_NAME: "speedtest"
      DB_USERNAME: "speedtest_user"
      DB_PASSWORD: "db_password"
      WEBPORT: "8080"
    ports:
      - "8080:8080"
    volumes:
      - ./database:/database
    depends_on:
      - mysql-db

  mysql-db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: "root_password"
      MYSQL_DATABASE: "speedtest"
      MYSQL_USER: "speedtest_user"
      MYSQL_PASSWORD: "db_password"
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:
独立模式架构图

mermaid

后端模式(Backend Mode)

后端模式专门用于提供测速API服务,不包含Web界面。这种模式适用于多服务器部署场景,其中前端界面与后端服务分离。

环境变量配置

后端模式通过设置 MODE=backend 环境变量启用,配置相对简单:

环境变量默认值描述
MODEbackend运行模式设置为后端模式
IPINFO_APIKEYipinfo.io API密钥(可选)
提供的API端点

后端模式提供以下关键API端点:

端点功能描述
garbage.php下载速度测试端点
empty.php上传速度测试和ping测试端点
getIP.php获取客户端IP信息端点
Docker运行示例
# 简单后端模式启动
docker run -d \
  --name speedtest-backend \
  -e MODE=backend \
  -p 8081:80 \
  ghcr.io/librespeed/speedtest:latest

# 带IP信息查询的后端模式
docker run -d \
  --name speedtest-backend-with-ipinfo \
  -e MODE=backend \
  -e IPINFO_APIKEY="your_ipinfo_api_key" \
  -p 8081:80 \
  ghcr.io/librespeed/speedtest:latest
后端模式架构

mermaid

前端模式(Frontend Mode)

前端模式专门用于提供Web界面,并可以连接多个后端测速服务器。这种模式适用于大型网络环境,需要从多个地理位置进行测速。

环境变量配置

前端模式通过设置 MODE=frontend 环境变量启用,支持与独立模式相同的环境变量配置。

servers.json 配置文件

前端模式需要提供一个 servers.json 文件来定义可用的测速服务器:

[
    {
        "name": "北京数据中心-电信",
        "server": "//beijing-telecom.example.com/",
        "dlURL": "garbage.php",
        "ulURL": "empty.php", 
        "pingURL": "empty.php",
        "getIpURL": "getIP.php"
    },
    {
        "name": "上海数据中心-联通",
        "server": "//shanghai-unicom.example.com/",
        "dlURL": "garbage.php",
        "ulURL": "empty.php",
        "pingURL": "empty.php",
        "getIpURL": "getIP.php"
    },
    {
        "name": "广州数据中心-移动",
        "server": "https://guangzhou-mobile.example.com/",
        "dlURL": "garbage.php", 
        "ulURL": "empty.php",
        "pingURL": "empty.php",
        "getIpURL": "getIP.php"
    }
]
服务器配置说明
字段必需描述
name服务器显示名称
server服务器基础URL,可使用//表示协议自适应
dlURL下载测试端点,通常为garbage.php
ulURL上传测试端点,通常为empty.php
pingURLPing测试端点,通常为empty.php
getIpURLIP查询端点,通常为getIP.php
Docker Compose 前端模式配置
version: '3.7'
services:
  speedtest-frontend:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: speedtest-frontend
    restart: always
    environment:
      MODE: frontend
      TELEMETRY: "true"
      ENABLE_ID_OBFUSCATION: "true"
      PASSWORD: "stats_password"
      EMAIL: "admin@example.com"
      WEBPORT: "8080"
    ports:
      - "8080:8080"
    volumes:
      - ./servers.json:/servers.json
      - ./database:/database

  # 可选的数据库服务
  mysql-db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: "root_pass"
      MYSQL_DATABASE: "speedtest"
      MYSQL_USER: "speedtest"
      MYSQL_PASSWORD: "speedtest_pass"
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:
前端模式架构图

mermaid

多服务器测速流程

mermaid

配置最佳实践

安全配置建议
  1. 密码安全:使用强密码保护统计页面访问
  2. IP脱敏:在生产环境中启用 REDACT_IP_ADDRESSES 保护用户隐私
  3. ID混淆:启用 ENABLE_ID_OBFUSCATION 防止数据库ID暴露
  4. HTTPS强制:确保所有服务器连接使用HTTPS协议
性能优化建议
  1. 数据库选择:高并发场景推荐使用MySQL或PostgreSQL
  2. 连接池配置:数据库连接适当配置连接池参数
  3. 缓存策略:对静态资源实施缓存策略
  4. 负载均衡:多后端服务器时配置负载均衡
监控与维护
  1. 日志监控:定期检查容器日志和数据库性能
  2. 数据备份:定期备份测试结果数据
  3. 版本更新:定期更新到最新版本的LibreSpeed
  4. 性能测试:定期对测速服务器本身进行性能测试

通过合理配置这三种运行模式,可以根据实际业务需求构建灵活、可扩展的测速服务架构,满足从简单单服务器部署到复杂多地域分布式测速的各种场景需求。

环境变量参数详解与持久化存储

在LibreSpeed的Docker容器化部署中,环境变量是实现配置灵活性的关键机制。通过合理设置环境变量,您可以轻松定制测速服务器的各项功能,从基本的外观设置到复杂的数据库连接配置。

核心环境变量详解

LibreSpeed提供了丰富多样的环境变量来满足不同部署场景的需求。以下表格详细列出了所有可用的环境变量及其功能:

环境变量默认值描述适用模式
MODE-运行模式:standalone(独立)、backend(后端)、frontend(前端)、dual(双模式)所有模式
TITLE"LibreSpeed"测速页面显示的标题standalone, frontend, dual
TELEMETRY"false"是否启用测试结果收集功能standalone, frontend, dual
ENABLE_ID_OBFUSCATION"false"启用测试ID混淆,增强隐私保护standalone, frontend, dual
REDACT_IP_ADDRESSES"false"启用IP地址脱敏,保护用户隐私standalone, frontend, dual
PASSWORD-统计页面访问密码standalone, frontend, dual
EMAIL-GDPR请求联系邮箱standalone, frontend, dual
DISABLE_IPINFO"false"禁用IP信息查询功能所有模式
IPINFO_APIKEY-ipinfo.io API密钥,用于精确地理位置查询所有模式
DISTANCE"km"距离单位:km(公里)、mi(英里)或空字符串禁用standalone, frontend, dual
WEBPORT80Web服务器监听端口所有模式
DB_TYPE"sqlite"数据库类型:sqlite、mysql、postgresqlstandalone, frontend, dual
DB_HOSTNAME-数据库服务器主机名或IP地址standalone, frontend, dual
DB_PORT-数据库端口(MySQL专用)standalone, frontend, dual
DB_NAME-数据库名称standalone, frontend, dual
DB_USERNAME-数据库用户名standalone, frontend, dual
DB_PASSWORD-数据库密码standalone, frontend, dual

数据库配置环境变量深度解析

当启用遥测功能(TELEMETRY=true)时,数据库配置变得至关重要。LibreSpeed支持多种数据库后端,每种都有特定的环境变量要求:

SQLite配置(默认)

DB_TYPE=sqlite
# 无需额外配置,数据自动存储在/database/db.sql

MySQL配置示例

DB_TYPE=mysql
DB_HOSTNAME=mysql-server
DB_PORT=3306
DB_NAME=librespeed_db
DB_USERNAME=librespeed_user
DB_PASSWORD=secure_password

PostgreSQL配置示例

DB_TYPE=postgresql
DB_HOSTNAME=postgres-server
DB_NAME=librespeed_db
DB_USERNAME=librespeed_user
DB_PASSWORD=secure_password

持久化存储策略

持久化存储是生产环境部署的关键考虑因素。LibreSpeed通过Docker卷挂载实现数据持久化:

SQLite数据库持久化

默认情况下,SQLite数据库文件存储在容器内的/database/db.sql路径。为了实现数据持久化,需要将主机目录挂载到该路径:

docker run -e MODE=standalone -e TELEMETRY=true \
  -v /path/to/your/db:/database \
  -p 80:80 ghcr.io/librespeed/speedtest
外部数据库持久化

对于MySQL或PostgreSQL等外部数据库,数据持久化由数据库系统自身管理。配置示例:

version: '3.7'
services:
  speedtest:
    image: ghcr.io/librespeed/speedtest:latest
    environment:
      MODE: standalone
      TELEMETRY: "true"
      DB_TYPE: mysql
      DB_HOSTNAME: mysql-db
      DB_NAME: librespeed
      DB_USERNAME: librespeed
      DB_PASSWORD: secure_password
    depends_on:
      - mysql-db
    ports:
      - "80:80"

  mysql-db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: librespeed
      MYSQL_USER: librespeed
      MYSQL_PASSWORD: secure_password
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

环境变量配置最佳实践

安全性配置
# 启用所有隐私保护功能
ENABLE_ID_OBFUSCATION=true
REDACT_IP_ADDRESSES=true
PASSWORD=strong_password_here
性能优化配置
# 禁用不必要的功能提升性能
DISABLE_IPINFO=true
# 使用本地数据库减少网络延迟
DB_HOSTNAME=localhost
生产环境完整示例
docker run -d \
  --name librespeed \
  -e MODE=standalone \
  -e TITLE="企业测速平台" \
  -e TELEMETRY=true \
  -e ENABLE_ID_OBFUSCATION=true \
  -e REDACT_IP_ADDRESSES=true \
  -e PASSWORD="your_secure_password" \
  -e EMAIL="admin@company.com" \
  -e DB_TYPE=mysql \
  -e DB_HOSTNAME=db-server \
  -e DB_NAME=librespeed_prod \
  -e DB_USERNAME=librespeed_user \
  -e DB_PASSWORD=db_password_123 \
  -e WEBPORT=8080 \
  -v librespeed_data:/database \
  -p 8080:8080 \
  ghcr.io/librespeed/speedtest:latest

环境变量验证与调试

在部署前,建议使用以下方法验证环境变量配置:

  1. 配置验证脚本
#!/bin/bash
# 验证必需的环境变量
if [ -z "$PASSWORD" ] && [ "$TELEMETRY" == "true" ]; then
    echo "错误:启用遥测功能时必须设置PASSWORD环境变量"
    exit 1
fi

if [ "$DB_TYPE" == "mysql" ] && [ -z "$DB_HOSTNAME" ]; then
    echo "错误:使用MySQL时必须设置DB_HOSTNAME环境变量"
    exit 1
fi
  1. 使用Docker Compose验证
services:
  speedtest:
    image: ghcr.io/librespeed/speedtest:latest
    environment:
      MODE: ${MODE:-standalone}
      TELEMETRY: ${TELEMETRY:-false}
      PASSWORD: ${PASSWORD:-}
    env_file:
      - .env

通过合理配置环境变量和实现正确的持久化存储策略,您可以构建出既安全又高性能的LibreSpeed测速服务平台。记得定期备份数据库文件,并在更新容器镜像前确保数据卷的正确挂载。

Docker Compose生产环境部署方案

在生产环境中部署LibreSpeed时,Docker Compose提供了更加灵活和可维护的部署方式。通过YAML配置文件,我们可以轻松管理多个服务、网络配置、数据卷以及环境变量,确保部署的一致性和可重复性。

基础Docker Compose配置

以下是一个基础的Docker Compose配置文件,适用于单机部署场景:

version: '3.8'
services:
  librespeed:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: librespeed-server
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      MODE: standalone
      TITLE: "企业网络测速平台"
      TELEMETRY: "true"
      ENABLE_ID_OBFUSCATION: "true"
      REDACT_IP_ADDRESSES: "false"
      PASSWORD: "${STATS_PASSWORD}"
      EMAIL: "admin@company.com"
      DISABLE_IPINFO: "false"
      DISTANCE: "km"
      WEBPORT: 80
    volumes:
      - librespeed-data:/database
    networks:
      - speedtest-net

volumes:
  librespeed-data:
    driver: local

networks:
  speedtest-net:
    driver: bridge

环境变量配置文件

为了安全地管理敏感信息,建议使用环境变量文件:

# .env 文件
STATS_PASSWORD=your_secure_password_here
IPINFO_APIKEY=your_ipinfo_api_key_here
DB_HOSTNAME=mysql-db
DB_NAME=librespeed
DB_USERNAME=librespeed_user
DB_PASSWORD=db_password_here

生产级多服务部署

对于需要数据库持久化的生产环境,建议使用MySQL或PostgreSQL数据库:

version: '3.8'
services:
  librespeed:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: librespeed-app
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      MODE: standalone
      TELEMETRY: "true"
      DB_TYPE: "mysql"
      DB_HOSTNAME: "mysql-db"
      DB_NAME: "librespeed"
      DB_USERNAME: "librespeed_user"
      DB_PASSWORD: "${DB_PASSWORD}"
      ENABLE_ID_OBFUSCATION: "true"
      PASSWORD: "${STATS_PASSWORD}"
      EMAIL: "admin@company.com"
      TITLE: "生产环境测速服务"
    depends_on:
      - mysql-db
    networks:
      - speedtest-net

  mysql-db:
    image: mysql:8.0
    container_name: librespeed-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "librespeed"
      MYSQL_USER: "librespeed_user"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
    volumes:
      - mysql-data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    networks:
      - speedtest-net

volumes:
  mysql-data:
    driver: local

networks:
  speedtest-net:
    driver: bridge

数据库初始化脚本

创建数据库表结构的初始化脚本:

-- init.sql
CREATE TABLE IF NOT EXISTS speedtest_telemetry (
    id INT AUTO_INCREMENT PRIMARY KEY,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ip VARCHAR(45),
    isp VARCHAR(255),
    extra VARCHAR(255),
    ua VARCHAR(512),
    lang VARCHAR(10),
    dl TEXT,
    ul TEXT,
    ping TEXT,
    jitter TEXT,
    log TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

多节点前端-后端架构

对于大规模部署,可以采用前端-后端分离架构:

version: '3.8'
services:
  # 前端服务
  librespeed-frontend:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: librespeed-frontend
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      MODE: frontend
      TELEMETRY: "true"
      DB_TYPE: "mysql"
      DB_HOSTNAME: "mysql-db"
      DB_NAME: "librespeed"
      DB_USERNAME: "librespeed_user"
      DB_PASSWORD: "${DB_PASSWORD}"
      PASSWORD: "${STATS_PASSWORD}"
      TITLE: "分布式测速网络"
    volumes:
      - ./servers.json:/servers.json
    depends_on:
      - mysql-db
    networks:
      - speedtest-net

  # 后端节点1
  backend-node1:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: librespeed-backend-1
    restart: unless-stopped
    environment:
      MODE: backend
      IPINFO_APIKEY: "${IPINFO_APIKEY}"
    networks:
      - speedtest-net

  # 后端节点2
  backend-node2:
    image: ghcr.io/librespeed/speedtest:latest
    container_name: librespeed-backend-2
    restart: unless-stopped
    environment:
      MODE: backend
      IPINFO_APIKEY: "${IPINFO_APIKEY}"
    networks:
      - speedtest-net

  mysql-db:
    image: mysql:8.0
    # ... MySQL配置同上

服务器配置文件示例

创建servers.json文件定义后端节点:

[
    {
        "name": "北京节点-电信",
        "server": "//backend-node1/",
        "dlURL": "garbage.php",
        "ulURL": "empty.php",
        "pingURL": "empty.php",
        "getIpURL": "getIP.php"
    },
    {
        "name": "上海节点-联通",
        "server": "//backend-node2/",
        "dlURL": "garbage.php",
        "ulURL": "empty.php",
        "pingURL": "empty.php",
        "getIpURL": "getIP.php"
    }
]

健康检查与监控配置

为生产环境添加健康检查和资源限制:

services:
  librespeed:
    # ... 其他配置
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:80/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    deploy:
      resources:
        limits:
          memory: 512M
          cpus: '1'
        reservations:
          memory: 256M
          cpus: '0.5'

部署流程示意图

mermaid

环境变量配置表

环境变量描述默认值必需
MODE运行模式(standalone/backend/frontend/dual)standalone
TELEMETRY是否启用数据收集false
DB_TYPE数据库类型(sqlite/mysql/postgresql)sqlite
DB_HOSTNAME数据库主机名-当DB_TYPE≠sqlite时
DB_NAME数据库名称-当DB_TYPE≠sqlite时
PASSWORD统计页面密码-当TELEMETRY=true时
EMAIL管理员邮箱-当TELEMETRY=true时
TITLE测速页面标题LibreSpeed

常用管理命令

# 启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f librespeed

# 停止服务
docker-compose down

# 环境变量更新后重新部署
docker-compose down && docker-compose up -d

# 备份数据库
docker-compose exec mysql-db mysqldump -u librespeed_user -p librespeed > backup.sql

通过Docker Compose部署LibreSpeed,您可以获得生产级别的可靠性、可扩展性和易维护性。这种部署方式特别适合需要高可用性和数据持久化的企业环境。

总结

通过Docker容器化部署LibreSpeed,可以极大地简化安装和配置过程,提高部署的灵活性和可维护性。本文提供的各种部署方案涵盖了从简单单机测试到复杂生产环境的不同需求,包括独立模式、前后端分离架构以及多节点分布式部署。合理运用环境变量配置、数据持久化策略和Docker Compose编排,可以构建出安全、稳定且高性能的网络测速服务平台,满足企业级应用的各种场景需求。

【免费下载链接】speedtest Self-hosted Speed Test for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more 【免费下载链接】speedtest 项目地址: https://gitcode.com/gh_mirrors/sp/speedtest

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值