feat: add feishin and pingap

Add Feishin and Pingap app definitions with source evidence, README guidance, strict adapter validation, env closure checks, and moelin/1panel:v2 smoke coverage.
This commit is contained in:
okxlin
2026-06-27 19:56:02 +08:00
committed by GitHub
parent d781a030a1
commit b60d5dbf4d
24 changed files with 542 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# Feishin
## 产品介绍
Feishin 是现代化自托管音乐服务器 Web 播放器,可连接 Navidrome、Jellyfin 或 OpenSubsonic 兼容服务进行音乐浏览与播放。
## 主要功能
- 提供现代化 Web 音乐播放界面
- 支持 Navidrome、Jellyfin 和 OpenSubsonic 兼容服务器
- 支持通过环境变量预置服务器地址,并默认关闭 Umami analytics
## 访问说明
安装后通过 `http://<服务器 IP>:15078` 访问,实际端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。
## Introduction
Feishin is a modern web music player for self-hosted Navidrome, Jellyfin and OpenSubsonic-compatible music servers.
## Features
- Modern web music player interface
- Supports Navidrome, Jellyfin and OpenSubsonic-compatible servers
- Optional server preconfiguration through environment variables, with Umami analytics disabled by default
## 部署说明
- 本应用使用官方 GitHub Container Registry 镜像 `ghcr.io/jeffvli/feishin` 部署。
- Feishin 是 Web 播放器,不自带音乐服务器;请先准备 Navidrome、Jellyfin 或 OpenSubsonic 兼容服务。
- 应用分类:多媒体。
- 支持架构:amd64、arm64。
- 可选版本:`latest`。
## 端口
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| PANEL_APP_PORT_HTTP | Feishin Web 访问端口 | 15078 | 是 |
## 数据持久化
Feishin Docker Web 版本默认不需要挂载服务端数据目录;播放服务器和用户数据由你连接的 Navidrome、Jellyfin 或 OpenSubsonic 服务保存。
## 参数说明
| 变量 | 说明 | 默认值 | 必填 |
| --- | --- | --- | --- |
| ANALYTICS_DISABLED | 是否禁用 Umami analytics | true | 是 |
| SERVER_NAME | 预置音乐服务器名称 | 空 | 否 |
| SERVER_TYPE | 预置音乐服务器类型:jellyfin、navidrome、subsonic | 空 | 否 |
| SERVER_URL | 预置音乐服务器地址 | 空 | 否 |
| SERVER_LOCK | 是否锁定服务器配置 | false | 是 |
| REMOTE_URL | 单独的公网音乐服务器地址 | 空 | 否 |
| LEGACY_AUTHENTICATION | Subsonic/OpenSubsonic 传统认证开关 | false | 是 |
| TZ | 容器时区 | Asia/Shanghai | 是 |
## 使用说明
- 如果设置 `SERVER_LOCK=true`,请同时填写 `SERVER_NAME`、`SERVER_TYPE` 和 `SERVER_URL`。
- 若音乐服务器在内网,请确认 Feishin 容器可以访问该地址。
- 如对公网开放访问,请同步检查防火墙、安全组、反向代理和 HTTPS 配置。
## 参考资料
- 项目仓库: <https://github.com/jeffvli/feishin>
- Docker 使用说明: <https://github.com/jeffvli/feishin#web-and-docker>
- Docker Compose 示例: <https://github.com/jeffvli/feishin#docker-compose>
+30
View File
@@ -0,0 +1,30 @@
name: Feishin
tags:
- Media
title: 现代化自托管音乐服务器 Web 播放器
description: 现代化自托管音乐服务器 Web 播放器
additionalProperties:
key: feishin
name: Feishin
tags:
- Media
shortDescZh: 现代化自托管音乐服务器 Web 播放器
shortDescEn: A modern web player for self-hosted music servers
description:
en: "A modern web music player for Navidrome, Jellyfin and OpenSubsonic-compatible servers."
zh: "面向 Navidrome、Jellyfin 和 OpenSubsonic 兼容服务器的现代化 Web 音乐播放器。"
zh-Hant: "面向 Navidrome、Jellyfin 和 OpenSubsonic 相容伺服器的現代化 Web 音樂播放器。"
ja: "Navidrome、Jellyfin、OpenSubsonic 互換サーバー向けのモダンな Web 音楽プレーヤーです。"
ko: "Navidrome, Jellyfin 및 OpenSubsonic 호환 서버를 위한 최신 웹 음악 플레이어입니다."
ru: "Современный веб-плеер для музыкальных серверов Navidrome, Jellyfin и совместимых с OpenSubsonic."
ms: "Pemain muzik web moden untuk pelayan Navidrome, Jellyfin dan serasi OpenSubsonic."
pt-br: "Player web moderno para servidores de musica Navidrome, Jellyfin e compativeis com OpenSubsonic."
type: tool
crossVersionUpdate: true
limit: 0
website: https://feishin.vercel.app
github: https://github.com/jeffvli/feishin
document: https://github.com/jeffvli/feishin#web-and-docker
architectures:
- amd64
- arm64
+10
View File
@@ -0,0 +1,10 @@
CONTAINER_NAME=feishin
PANEL_APP_PORT_HTTP=15078
TZ=Asia/Shanghai
ANALYTICS_DISABLED=true
SERVER_NAME=
SERVER_TYPE=
SERVER_URL=
SERVER_LOCK=false
REMOTE_URL=
LEGACY_AUTHENTICATION=false
+171
View File
@@ -0,0 +1,171 @@
additionalProperties:
formFields:
- default: 15078
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
label:
en: Port
zh: 端口
zh-Hant: 埠
ja: ポート
ko: 포트
ru: Порт
ms: Port
pt-br: Porta
required: true
rule: paramPort
type: number
- default: Asia/Shanghai
edit: true
envKey: TZ
labelEn: Timezone
labelZh: 时区
label:
en: Timezone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
required: true
type: text
- default: "true"
edit: true
envKey: ANALYTICS_DISABLED
labelEn: Disable Analytics
labelZh: 禁用统计分析
label:
en: Disable Analytics
zh: 禁用统计分析
zh-Hant: 停用統計分析
ja: 分析を無効化
ko: 분석 비활성화
ru: Отключить аналитику
ms: Lumpuhkan analitik
pt-br: Desativar analiticos
required: true
type: select
values:
- label: "true"
value: "true"
- label: "false"
value: "false"
- default: ""
edit: true
envKey: SERVER_NAME
labelEn: Server Name
labelZh: 服务器名称
label:
en: Server Name
zh: 服务器名称
zh-Hant: 伺服器名稱
ja: サーバー名
ko: 서버 이름
ru: Имя сервера
ms: Nama pelayan
pt-br: Nome do servidor
required: false
type: text
- default: ""
edit: true
envKey: SERVER_TYPE
labelEn: Server Type
labelZh: 服务器类型
label:
en: Server Type
zh: 服务器类型
zh-Hant: 伺服器類型
ja: サーバー種別
ko: 서버 유형
ru: Тип сервера
ms: Jenis pelayan
pt-br: Tipo de servidor
required: false
type: select
values:
- label: ""
value: ""
- label: jellyfin
value: jellyfin
- label: navidrome
value: navidrome
- label: subsonic
value: subsonic
- default: ""
edit: true
envKey: SERVER_URL
labelEn: Server URL
labelZh: 服务器 URL
label:
en: Server URL
zh: 服务器 URL
zh-Hant: 伺服器 URL
ja: サーバー URL
ko: 서버 URL
ru: URL сервера
ms: URL pelayan
pt-br: URL do servidor
required: false
type: text
- default: "false"
edit: true
envKey: SERVER_LOCK
labelEn: Lock Server Settings
labelZh: 锁定服务器设置
label:
en: Lock Server Settings
zh: 锁定服务器设置
zh-Hant: 鎖定伺服器設定
ja: サーバー設定をロック
ko: 서버 설정 잠금
ru: Заблокировать настройки сервера
ms: Kunci tetapan pelayan
pt-br: Bloquear configuracoes do servidor
required: true
type: select
values:
- label: "false"
value: "false"
- label: "true"
value: "true"
- default: ""
edit: true
envKey: REMOTE_URL
labelEn: Public Server URL
labelZh: 公网服务器 URL
label:
en: Public Server URL
zh: 公网服务器 URL
zh-Hant: 公網伺服器 URL
ja: 公開サーバー URL
ko: 공개 서버 URL
ru: Публичный URL сервера
ms: URL pelayan awam
pt-br: URL publico do servidor
required: false
type: text
- default: "false"
edit: true
envKey: LEGACY_AUTHENTICATION
labelEn: Legacy Authentication
labelZh: 传统认证
label:
en: Legacy Authentication
zh: 传统认证
zh-Hant: 傳統認證
ja: レガシー認証
ko: 레거시 인증
ru: Устаревшая аутентификация
ms: Pengesahan legasi
pt-br: Autenticacao legada
required: true
type: select
values:
- label: "false"
value: "false"
- label: "true"
value: "true"
View File
+24
View File
@@ -0,0 +1,24 @@
services:
feishin:
image: "ghcr.io/jeffvli/feishin:latest"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:9180"
environment:
- TZ=${TZ}
- ANALYTICS_DISABLED=${ANALYTICS_DISABLED}
- SERVER_NAME=${SERVER_NAME}
- SERVER_TYPE=${SERVER_TYPE}
- SERVER_URL=${SERVER_URL}
- SERVER_LOCK=${SERVER_LOCK}
- REMOTE_URL=${REMOTE_URL}
- LEGACY_AUTHENTICATION=${LEGACY_AUTHENTICATION}
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
docker-compose down --volumes
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -euo pipefail
exit 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

+5
View File
@@ -0,0 +1,5 @@
{
"repository": "https://github.com/jeffvli/feishin",
"dockerDocs": "https://github.com/jeffvli/feishin#web-and-docker",
"composeFile": "https://github.com/jeffvli/feishin#docker-compose"
}