From 99519966d4e9034c32b2c3bf76cf18591a117e4d Mon Sep 17 00:00:00 2001
From: okxlin <61420215+okxlin@users.noreply.github.com>
Date: Wed, 24 Jun 2026 20:08:46 +0800
Subject: [PATCH] Add LinuxServer Fleet adapter
---
apps/fleet-linuxserver/2.3.3/.env.sample | 7 ++
apps/fleet-linuxserver/2.3.3/data.yml | 101 ++++++++++++++++++
apps/fleet-linuxserver/2.3.3/data/.gitkeep | 0
.../2.3.3/docker-compose.yml | 41 +++++++
apps/fleet-linuxserver/2.3.3/scripts/init.sh | 4 +
.../2.3.3/scripts/uninstall.sh | 2 +
.../2.3.3/scripts/upgrade.sh | 2 +
apps/fleet-linuxserver/README.md | 44 ++++++++
apps/fleet-linuxserver/data.yml | 30 ++++++
apps/fleet-linuxserver/logo.png | Bin 0 -> 4674 bytes
10 files changed, 231 insertions(+)
create mode 100644 apps/fleet-linuxserver/2.3.3/.env.sample
create mode 100644 apps/fleet-linuxserver/2.3.3/data.yml
create mode 100644 apps/fleet-linuxserver/2.3.3/data/.gitkeep
create mode 100644 apps/fleet-linuxserver/2.3.3/docker-compose.yml
create mode 100755 apps/fleet-linuxserver/2.3.3/scripts/init.sh
create mode 100755 apps/fleet-linuxserver/2.3.3/scripts/uninstall.sh
create mode 100755 apps/fleet-linuxserver/2.3.3/scripts/upgrade.sh
create mode 100644 apps/fleet-linuxserver/README.md
create mode 100644 apps/fleet-linuxserver/data.yml
create mode 100644 apps/fleet-linuxserver/logo.png
diff --git a/apps/fleet-linuxserver/2.3.3/.env.sample b/apps/fleet-linuxserver/2.3.3/.env.sample
new file mode 100644
index 000000000..f28530e88
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/.env.sample
@@ -0,0 +1,7 @@
+CONTAINER_NAME=
+PANEL_APP_PORT_HTTP=8080
+CONFIG_PATH=./data/config
+DB_PASSWORD=fleet-change-me
+FLEET_ADMIN_SECRET=fleet-admin-secret-change-me
+DB_DATA_PATH=./data/db
+TIME_ZONE=Asia/Shanghai
diff --git a/apps/fleet-linuxserver/2.3.3/data.yml b/apps/fleet-linuxserver/2.3.3/data.yml
new file mode 100644
index 000000000..b0c8cc7f6
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/data.yml
@@ -0,0 +1,101 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ 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: fleet-change-me
+ edit: true
+ envKey: DB_PASSWORD
+ labelEn: Database password
+ labelZh: 数据库密码
+ label:
+ en: Database password
+ zh: 数据库密码
+ zh-Hant: 資料庫密碼
+ ja: データベースパスワード
+ ko: 데이터베이스 비밀번호
+ ru: Пароль базы данных
+ ms: Kata laluan pangkalan data
+ pt-br: Senha do banco de dados
+ required: true
+ type: password
+ rule: paramComplexity
+ - default: fleet-admin-secret-change-me
+ edit: true
+ envKey: FLEET_ADMIN_SECRET
+ labelEn: Admin secret
+ labelZh: 管理员密钥
+ label:
+ en: Admin secret
+ zh: 管理员密钥
+ zh-Hant: 管理員金鑰
+ ja: 管理者シークレット
+ ko: 관리자 시크릿
+ ru: Секрет администратора
+ ms: Rahsia pentadbir
+ pt-br: Segredo do administrador
+ required: true
+ type: password
+ rule: paramComplexity
+ - default: ./data/db
+ edit: true
+ envKey: DB_DATA_PATH
+ labelEn: Database data path
+ labelZh: 数据库数据目录
+ label:
+ en: Database data path
+ zh: 数据库数据目录
+ zh-Hant: 資料庫資料目錄
+ ja: データベースデータディレクトリ
+ ko: 데이터베이스 데이터 디렉터리
+ ru: Каталог данных базы
+ ms: Laluan data pangkalan data
+ pt-br: Caminho de dados do banco
+ 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
diff --git a/apps/fleet-linuxserver/2.3.3/data/.gitkeep b/apps/fleet-linuxserver/2.3.3/data/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/fleet-linuxserver/2.3.3/docker-compose.yml b/apps/fleet-linuxserver/2.3.3/docker-compose.yml
new file mode 100644
index 000000000..2cca0e198
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/docker-compose.yml
@@ -0,0 +1,41 @@
+networks:
+ 1panel-network:
+ external: true
+services:
+ fleet:
+ image: "linuxserver/fleet:2.3.3"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:8080"
+ volumes:
+ - "${CONFIG_PATH}:/config"
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=${TIME_ZONE}
+ - fleet_admin_authentication_type=DATABASE
+ - fleet_database_url=jdbc:mariadb://fleet-db:3306/fleet
+ - fleet_database_username=fleet
+ - fleet_database_password=${DB_PASSWORD}
+ - fleet_admin_secret=${FLEET_ADMIN_SECRET}
+ depends_on:
+ - fleet-db
+ labels:
+ createdBy: "Apps"
+ fleet-db:
+ image: "mariadb:11.4"
+ restart: always
+ networks:
+ - 1panel-network
+ volumes:
+ - "${DB_DATA_PATH}:/var/lib/mysql"
+ environment:
+ - MARIADB_ROOT_PASSWORD=${DB_PASSWORD}
+ - MARIADB_DATABASE=fleet
+ - MARIADB_USER=fleet
+ - MARIADB_PASSWORD=${DB_PASSWORD}
+ labels:
+ createdBy: "Apps"
diff --git a/apps/fleet-linuxserver/2.3.3/scripts/init.sh b/apps/fleet-linuxserver/2.3.3/scripts/init.sh
new file mode 100755
index 000000000..92e31431d
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/scripts/init.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+set -euo pipefail
+mkdir -p ./data/config ./data/db
+chown -R 1000:1000 ./data 2>/dev/null || true
diff --git a/apps/fleet-linuxserver/2.3.3/scripts/uninstall.sh b/apps/fleet-linuxserver/2.3.3/scripts/uninstall.sh
new file mode 100755
index 000000000..ab8a8d674
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/scripts/uninstall.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker-compose down --volumes
diff --git a/apps/fleet-linuxserver/2.3.3/scripts/upgrade.sh b/apps/fleet-linuxserver/2.3.3/scripts/upgrade.sh
new file mode 100755
index 000000000..6e877466e
--- /dev/null
+++ b/apps/fleet-linuxserver/2.3.3/scripts/upgrade.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+set -euo pipefail
diff --git a/apps/fleet-linuxserver/README.md b/apps/fleet-linuxserver/README.md
new file mode 100644
index 000000000..14896814b
--- /dev/null
+++ b/apps/fleet-linuxserver/README.md
@@ -0,0 +1,44 @@
+# Fleet LinuxServer
+
+## 产品介绍
+
+Fleet LinuxServer 使用 LinuxServer.io 维护的 `linuxserver/fleet` 镜像,提供 Fleet 镜像仓库展示界面 能力。
+
+## 主要功能
+
+- 提供 镜像仓库展示与管理 能力
+- 持久化保存配置和业务数据
+- 使用安装表单配置服务端口和数据路径
+- 支持自定义时区
+
+## 访问说明
+
+安装完成后,通过 HTTP 端口访问 Fleet Web UI。使用 DATABASE 模式时,可通过 `/setup` 初始化用户。
+
+## 运行说明
+
+LinuxServer 已将该镜像和 Fleet 应用标记为 deprecated。本适配保留 `2.3.3` numbered tag,用于兼容 LinuxServer 镜像部署。
+
+## Introduction
+
+Fleet LinuxServer uses the LinuxServer.io maintained `linuxserver/fleet` image for image repository display and management.
+
+## Features
+
+- Provide image repository display and management
+- Persist configuration and application data
+- Configure service ports and data paths from the install form
+- Configure the container time zone
+
+## Access
+
+After installation, open Fleet from the HTTP port. In DATABASE mode, initialize the first user from `/setup`.
+
+## Runtime Notes
+
+LinuxServer marks this image and the Fleet application as deprecated. This package keeps the `2.3.3` numbered tag for LinuxServer image compatibility.
+
+## Links
+
+- LinuxServer image documentation:
+- Project website:
diff --git a/apps/fleet-linuxserver/data.yml b/apps/fleet-linuxserver/data.yml
new file mode 100644
index 000000000..02638d808
--- /dev/null
+++ b/apps/fleet-linuxserver/data.yml
@@ -0,0 +1,30 @@
+name: Fleet LinuxServer
+tags:
+- Tool
+title: Fleet 镜像仓库展示界面
+description: Fleet 镜像仓库展示界面
+additionalProperties:
+ key: fleet-linuxserver
+ name: Fleet LinuxServer
+ tags:
+ - Tool
+ shortDescZh: Fleet 镜像仓库展示界面
+ shortDescEn: Image repository dashboard maintained by LinuxServer.io
+ description:
+ en: Image repository dashboard maintained by LinuxServer.io
+ zh: Fleet 镜像仓库展示界面
+ zh-Hant: Fleet 映像倉庫展示介面
+ ja: LinuxServer.io が保守するイメージリポジトリダッシュボード
+ ko: LinuxServer.io에서 유지 관리하는 이미지 저장소 대시보드
+ ru: Панель репозиториев образов, поддерживаемая LinuxServer.io
+ ms: Papan pemuka repositori imej yang diselenggara oleh LinuxServer.io
+ pt-br: Painel de repositorios de imagens mantido pela LinuxServer.io
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ website: https://github.com/linuxserver/fleet
+ github: https://github.com/linuxserver/docker-fleet
+ document: https://docs.linuxserver.io/images/docker-fleet/
+ architectures:
+ - amd64
+ - arm64
diff --git a/apps/fleet-linuxserver/logo.png b/apps/fleet-linuxserver/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..45e9c3340a20c58a72661057830cc7d65c9da2e9
GIT binary patch
literal 4674
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
Ef?UEPv;Y7A
literal 0
HcmV?d00001