diff --git a/apps/librespeed-linuxserver/6.1.0/.env.sample b/apps/librespeed-linuxserver/6.1.0/.env.sample
new file mode 100644
index 000000000..144ff9b4c
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/.env.sample
@@ -0,0 +1,8 @@
+CONTAINER_NAME=
+PANEL_APP_PORT_HTTP=80
+CONFIG_PATH=./data/config
+TIME_ZONE=Asia/Shanghai
+PASSWORD=linuxserver-change-me
+CUSTOM_RESULTS=false
+IPINFO_APIKEY=
+
diff --git a/apps/librespeed-linuxserver/6.1.0/data.yml b/apps/librespeed-linuxserver/6.1.0/data.yml
new file mode 100644
index 000000000..1a0d3a048
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/data.yml
@@ -0,0 +1,107 @@
+additionalProperties:
+ formFields:
+ - default: 80
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ label:
+ en: HTTP Port
+ zh: HTTP 端口
+ zh-Hant: HTTP 連接埠
+ ja: HTTP ポート
+ ko: HTTP 포트
+ ru: HTTP-порт
+ ms: Port HTTP
+ pt-br: Porta HTTP
+ required: true
+ type: number
+ rule: paramPort
+ - default: ./data/config
+ edit: true
+ envKey: CONFIG_PATH
+ labelEn: Config folder path
+ labelZh: 配置文件路径
+ label:
+ en: Config folder path
+ zh: 配置文件路径
+ zh-Hant: 設定檔資料夾路徑
+ ja: 設定フォルダーのパス
+ ko: 설정 폴더 경로
+ ru: Путь к папке конфигурации
+ ms: Laluan folder konfigurasi
+ pt-br: Caminho da pasta de configuração
+ required: true
+ type: text
+ - default: Asia/Shanghai
+ edit: true
+ envKey: TIME_ZONE
+ labelEn: Time zone
+ labelZh: 时区
+ label:
+ en: Time zone
+ zh: 时区
+ zh-Hant: 時區
+ ja: タイムゾーン
+ ko: 시간대
+ ru: Часовой пояс
+ ms: Zon waktu
+ pt-br: Fuso horário
+ required: true
+ type: text
+ - default: linuxserver-change-me
+ edit: true
+ envKey: PASSWORD
+ labelEn: Results database password
+ labelZh: 结果数据库密码
+ label:
+ en: Results database password
+ zh: 结果数据库密码
+ zh-Hant: 結果資料庫密碼
+ ja: 結果データベースのパスワード
+ ko: 결과 데이터베이스 비밀번호
+ ru: Пароль базы данных результатов
+ ms: Kata laluan pangkalan data keputusan
+ pt-br: Senha do banco de dados de resultados
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: "false"
+ edit: true
+ envKey: CUSTOM_RESULTS
+ labelEn: Custom results page
+ labelZh: 自定义结果页
+ label:
+ en: Custom results page
+ zh: 自定义结果页
+ zh-Hant: 自訂結果頁
+ ja: カスタム結果ページ
+ ko: 사용자 지정 결과 페이지
+ ru: Пользовательская страница результатов
+ ms: Halaman keputusan tersuai
+ pt-br: Pagina de resultados personalizada
+ required: true
+ type: select
+ values:
+ - label: "false"
+ value: "false"
+ - label: "true"
+ value: "true"
+ - default: ""
+ edit: true
+ envKey: IPINFO_APIKEY
+ labelEn: IPInfo access token
+ labelZh: IPInfo 访问令牌
+ label:
+ en: IPInfo access token
+ zh: IPInfo 访问令牌
+ zh-Hant: IPInfo 存取權杖
+ ja: IPInfo アクセストークン
+ ko: IPInfo 액세스 토큰
+ ru: Токен доступа IPInfo
+ ms: Token akses IPInfo
+ pt-br: Token de acesso IPInfo
+ required: false
+ type: password
+
diff --git a/apps/librespeed-linuxserver/6.1.0/docker-compose.yml b/apps/librespeed-linuxserver/6.1.0/docker-compose.yml
new file mode 100644
index 000000000..20bcf467d
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+services:
+ librespeed:
+ image: "linuxserver/librespeed:6.1.0"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:80"
+ volumes:
+ - "${CONFIG_PATH}:/config"
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=${TIME_ZONE}
+ - PASSWORD=${PASSWORD}
+ - CUSTOM_RESULTS=${CUSTOM_RESULTS}
+ - DB_TYPE=sqlite
+ - IPINFO_APIKEY=${IPINFO_APIKEY:-}
+ labels:
+ createdBy: "Apps"
+
diff --git a/apps/librespeed-linuxserver/6.1.0/scripts/init.sh b/apps/librespeed-linuxserver/6.1.0/scripts/init.sh
new file mode 100755
index 000000000..8a929d096
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/scripts/init.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+paths=(
+ "${CONFIG_PATH:-./data/config}"
+)
+
+mkdir -p "${paths[@]}"
+for path in "${paths[@]}"; do
+ case "$path" in
+ ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;;
+ esac
+done
+
diff --git a/apps/librespeed-linuxserver/6.1.0/scripts/uninstall.sh b/apps/librespeed-linuxserver/6.1.0/scripts/uninstall.sh
new file mode 100755
index 000000000..accdccd70
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/scripts/uninstall.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+docker-compose down --volumes
+
diff --git a/apps/librespeed-linuxserver/6.1.0/scripts/upgrade.sh b/apps/librespeed-linuxserver/6.1.0/scripts/upgrade.sh
new file mode 100755
index 000000000..a6eb46bac
--- /dev/null
+++ b/apps/librespeed-linuxserver/6.1.0/scripts/upgrade.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+:
+
diff --git a/apps/librespeed-linuxserver/README.md b/apps/librespeed-linuxserver/README.md
new file mode 100644
index 000000000..74202660b
--- /dev/null
+++ b/apps/librespeed-linuxserver/README.md
@@ -0,0 +1,61 @@
+# LibreSpeed
+
+## 产品介绍
+LibreSpeed 是一个自托管网络速度测试服务,本应用使用 LinuxServer.io 镜像部署。
+
+## 主要功能
+- 在浏览器中进行下载、上传、延迟和抖动测试。
+- 使用 `/config` 持久化配置和结果数据库。
+- 默认使用 sqlite 结果数据库,便于单容器部署和迁移。
+
+## 访问说明
+安装完成后,通过应用表单中的 HTTP 端口访问 Web UI。
+
+## Introduction
+LibreSpeed is a self-hosted network speed test service. This app deploys the LinuxServer.io image.
+
+## Features
+- Run download, upload, latency, and jitter tests from a browser.
+- Persist configuration and the results database under `/config`.
+- Use sqlite by default for a simple single-container deployment.
+
+## 应用简介
+LibreSpeed 测速服务。
+
+英文说明:Network speed test service maintained by LinuxServer.io.
+
+## 部署说明
+- 本应用使用 Docker Compose 在 1Panel 中部署。
+- 应用分类:工具。
+- 支持架构:amd64、arm64。
+- 可选版本:`latest`、`6.1.0`。
+
+## 端口
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| PANEL_APP_PORT_HTTP | HTTP 端口 | 80 | 是 |
+
+## 数据持久化
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| CONFIG_PATH | 配置文件路径 | ./data/config | 是 |
+
+升级或迁移前,请在 1Panel 中备份上述数据目录。
+
+## 配置项
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| TIME_ZONE | 时区 | Asia/Shanghai | 是 |
+| PASSWORD | 结果数据库密码 | 随机生成 | 是 |
+| CUSTOM_RESULTS | 启用自定义结果页 | false | 是 |
+| IPINFO_APIKEY | IPInfo 访问令牌 | 空 | 否 |
+
+## 使用说明
+- 默认结果数据库类型固定为 sqlite,不需要外部数据库。
+- 如需对外开放访问,请同步检查防火墙、安全组和反向代理配置。
+
+## 参考资料
+- 官网:
+- 文档:
+- 源码:
+
diff --git a/apps/librespeed-linuxserver/data.yml b/apps/librespeed-linuxserver/data.yml
new file mode 100644
index 000000000..4aa2179ed
--- /dev/null
+++ b/apps/librespeed-linuxserver/data.yml
@@ -0,0 +1,31 @@
+name: LibreSpeed
+tags:
+- Tool
+title: LibreSpeed 测速服务
+description: LibreSpeed 测速服务
+additionalProperties:
+ key: librespeed-linuxserver
+ name: LibreSpeed
+ tags:
+ - Tool
+ shortDescZh: LibreSpeed 测速服务
+ shortDescEn: Network speed test service maintained by LinuxServer.io
+ description:
+ en: Network speed test service maintained by LinuxServer.io
+ zh: LibreSpeed 测速服务
+ zh-Hant: LibreSpeed 測速服務
+ ja: LinuxServer.io が保守するネットワーク速度テストサービス
+ ko: LinuxServer.io에서 유지 관리하는 네트워크 속도 테스트 서비스
+ ru: Сервис проверки скорости сети, поддерживаемый LinuxServer.io
+ ms: Perkhidmatan ujian kelajuan rangkaian yang diselenggara oleh LinuxServer.io
+ pt-br: Servico de teste de velocidade de rede mantido pela LinuxServer.io
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ website: https://librespeed.org/
+ github: https://github.com/linuxserver/docker-librespeed
+ document: https://docs.linuxserver.io/images/docker-librespeed/
+ architectures:
+ - amd64
+ - arm64
+
diff --git a/apps/librespeed-linuxserver/latest/.env.sample b/apps/librespeed-linuxserver/latest/.env.sample
new file mode 100644
index 000000000..144ff9b4c
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/.env.sample
@@ -0,0 +1,8 @@
+CONTAINER_NAME=
+PANEL_APP_PORT_HTTP=80
+CONFIG_PATH=./data/config
+TIME_ZONE=Asia/Shanghai
+PASSWORD=linuxserver-change-me
+CUSTOM_RESULTS=false
+IPINFO_APIKEY=
+
diff --git a/apps/librespeed-linuxserver/latest/data.yml b/apps/librespeed-linuxserver/latest/data.yml
new file mode 100644
index 000000000..1a0d3a048
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/data.yml
@@ -0,0 +1,107 @@
+additionalProperties:
+ formFields:
+ - default: 80
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ label:
+ en: HTTP Port
+ zh: HTTP 端口
+ zh-Hant: HTTP 連接埠
+ ja: HTTP ポート
+ ko: HTTP 포트
+ ru: HTTP-порт
+ ms: Port HTTP
+ pt-br: Porta HTTP
+ required: true
+ type: number
+ rule: paramPort
+ - default: ./data/config
+ edit: true
+ envKey: CONFIG_PATH
+ labelEn: Config folder path
+ labelZh: 配置文件路径
+ label:
+ en: Config folder path
+ zh: 配置文件路径
+ zh-Hant: 設定檔資料夾路徑
+ ja: 設定フォルダーのパス
+ ko: 설정 폴더 경로
+ ru: Путь к папке конфигурации
+ ms: Laluan folder konfigurasi
+ pt-br: Caminho da pasta de configuração
+ required: true
+ type: text
+ - default: Asia/Shanghai
+ edit: true
+ envKey: TIME_ZONE
+ labelEn: Time zone
+ labelZh: 时区
+ label:
+ en: Time zone
+ zh: 时区
+ zh-Hant: 時區
+ ja: タイムゾーン
+ ko: 시간대
+ ru: Часовой пояс
+ ms: Zon waktu
+ pt-br: Fuso horário
+ required: true
+ type: text
+ - default: linuxserver-change-me
+ edit: true
+ envKey: PASSWORD
+ labelEn: Results database password
+ labelZh: 结果数据库密码
+ label:
+ en: Results database password
+ zh: 结果数据库密码
+ zh-Hant: 結果資料庫密碼
+ ja: 結果データベースのパスワード
+ ko: 결과 데이터베이스 비밀번호
+ ru: Пароль базы данных результатов
+ ms: Kata laluan pangkalan data keputusan
+ pt-br: Senha do banco de dados de resultados
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: "false"
+ edit: true
+ envKey: CUSTOM_RESULTS
+ labelEn: Custom results page
+ labelZh: 自定义结果页
+ label:
+ en: Custom results page
+ zh: 自定义结果页
+ zh-Hant: 自訂結果頁
+ ja: カスタム結果ページ
+ ko: 사용자 지정 결과 페이지
+ ru: Пользовательская страница результатов
+ ms: Halaman keputusan tersuai
+ pt-br: Pagina de resultados personalizada
+ required: true
+ type: select
+ values:
+ - label: "false"
+ value: "false"
+ - label: "true"
+ value: "true"
+ - default: ""
+ edit: true
+ envKey: IPINFO_APIKEY
+ labelEn: IPInfo access token
+ labelZh: IPInfo 访问令牌
+ label:
+ en: IPInfo access token
+ zh: IPInfo 访问令牌
+ zh-Hant: IPInfo 存取權杖
+ ja: IPInfo アクセストークン
+ ko: IPInfo 액세스 토큰
+ ru: Токен доступа IPInfo
+ ms: Token akses IPInfo
+ pt-br: Token de acesso IPInfo
+ required: false
+ type: password
+
diff --git a/apps/librespeed-linuxserver/latest/docker-compose.yml b/apps/librespeed-linuxserver/latest/docker-compose.yml
new file mode 100644
index 000000000..ff8d8fa50
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/docker-compose.yml
@@ -0,0 +1,25 @@
+networks:
+ 1panel-network:
+ external: true
+services:
+ librespeed:
+ image: "linuxserver/librespeed:latest"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:80"
+ volumes:
+ - "${CONFIG_PATH}:/config"
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=${TIME_ZONE}
+ - PASSWORD=${PASSWORD}
+ - CUSTOM_RESULTS=${CUSTOM_RESULTS}
+ - DB_TYPE=sqlite
+ - IPINFO_APIKEY=${IPINFO_APIKEY:-}
+ labels:
+ createdBy: "Apps"
+
diff --git a/apps/librespeed-linuxserver/latest/scripts/init.sh b/apps/librespeed-linuxserver/latest/scripts/init.sh
new file mode 100755
index 000000000..8a929d096
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/scripts/init.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+paths=(
+ "${CONFIG_PATH:-./data/config}"
+)
+
+mkdir -p "${paths[@]}"
+for path in "${paths[@]}"; do
+ case "$path" in
+ ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;;
+ esac
+done
+
diff --git a/apps/librespeed-linuxserver/latest/scripts/uninstall.sh b/apps/librespeed-linuxserver/latest/scripts/uninstall.sh
new file mode 100755
index 000000000..accdccd70
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/scripts/uninstall.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+docker-compose down --volumes
+
diff --git a/apps/librespeed-linuxserver/latest/scripts/upgrade.sh b/apps/librespeed-linuxserver/latest/scripts/upgrade.sh
new file mode 100755
index 000000000..a6eb46bac
--- /dev/null
+++ b/apps/librespeed-linuxserver/latest/scripts/upgrade.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+:
+
diff --git a/apps/librespeed-linuxserver/logo.png b/apps/librespeed-linuxserver/logo.png
new file mode 100644
index 000000000..153102dd7
Binary files /dev/null and b/apps/librespeed-linuxserver/logo.png differ