diff --git a/apps/feishin/README.md b/apps/feishin/README.md new file mode 100644 index 000000000..ea37378c3 --- /dev/null +++ b/apps/feishin/README.md @@ -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 配置。 + +## 参考资料 +- 项目仓库: +- Docker 使用说明: +- Docker Compose 示例: diff --git a/apps/feishin/data.yml b/apps/feishin/data.yml new file mode 100644 index 000000000..a24827001 --- /dev/null +++ b/apps/feishin/data.yml @@ -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 diff --git a/apps/feishin/latest/.env.sample b/apps/feishin/latest/.env.sample new file mode 100644 index 000000000..868370085 --- /dev/null +++ b/apps/feishin/latest/.env.sample @@ -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 diff --git a/apps/feishin/latest/data.yml b/apps/feishin/latest/data.yml new file mode 100644 index 000000000..9f73594ad --- /dev/null +++ b/apps/feishin/latest/data.yml @@ -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" diff --git a/apps/feishin/latest/data/.gitkeep b/apps/feishin/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/feishin/latest/docker-compose.yml b/apps/feishin/latest/docker-compose.yml new file mode 100644 index 000000000..3b6e78b66 --- /dev/null +++ b/apps/feishin/latest/docker-compose.yml @@ -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 diff --git a/apps/feishin/latest/scripts/.gitkeep b/apps/feishin/latest/scripts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/feishin/latest/scripts/init.sh b/apps/feishin/latest/scripts/init.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/feishin/latest/scripts/init.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/feishin/latest/scripts/uninstall.sh b/apps/feishin/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/feishin/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/feishin/latest/scripts/upgrade.sh b/apps/feishin/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/feishin/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/feishin/logo.png b/apps/feishin/logo.png new file mode 100644 index 000000000..1543b4755 Binary files /dev/null and b/apps/feishin/logo.png differ diff --git a/apps/feishin/source-evidence.json b/apps/feishin/source-evidence.json new file mode 100644 index 000000000..3f50ed428 --- /dev/null +++ b/apps/feishin/source-evidence.json @@ -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" +} diff --git a/apps/pingap/README.md b/apps/pingap/README.md new file mode 100644 index 000000000..65bdd786c --- /dev/null +++ b/apps/pingap/README.md @@ -0,0 +1,58 @@ +# Pingap + +## 产品介绍 +Pingap 是基于 Cloudflare Pingora 的高性能反向代理和应用网关,支持 TOML 配置、热更新、Web 管理界面和多种网关插件。 + +## 主要功能 +- 提供 HTTP/HTTPS 反向代理和应用网关能力 +- 支持配置热更新,适合容器化部署 +- 内置 Web 管理界面,可管理路由、上游和插件配置 + +## 访问说明 +安装后通过 `http://<服务器 IP>:15079/pingap` 访问管理界面,实际 HTTP 端口以安装表单中的 `PANEL_APP_PORT_HTTP` 为准。 + +## Introduction +Pingap is a high-performance reverse proxy and application gateway powered by Cloudflare Pingora, with hot reload, TOML configuration and a web admin interface. + +## Features +- HTTP/HTTPS reverse proxy and application gateway +- Hot reload for containerized configuration changes +- Web admin interface for routes, upstreams and plugins + +## 部署说明 +- 本应用使用官方 Docker 镜像 `vicanso/pingap` 部署。 +- 默认按官方 Compose 示例启用 `pingap --autoreload`。 +- 应用分类:工具。 +- 支持架构:amd64、arm64。 +- 可选版本:`latest`。 + +## 端口 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| PANEL_APP_PORT_HTTP | HTTP 与管理界面端口,容器内映射到 `80` | 15079 | 是 | +| PANEL_APP_PORT_HTTPS | HTTPS 代理端口,容器内映射到 `443` | 15443 | 是 | + +## 数据持久化 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| APP_DATA_DIR | Pingap 配置和运行数据目录,挂载到容器 `/opt/pingap` | ./data | 是 | + +升级、迁移或批量调整代理配置前,请先在 1Panel 中备份 `APP_DATA_DIR`。 + +## 参数说明 +| 变量 | 说明 | 默认值 | 必填 | +| --- | --- | --- | --- | +| PINGAP_ADMIN_USER | Web 管理界面用户名 | pingap | 是 | +| PINGAP_ADMIN_PASSWORD | Web 管理界面密码,安装时随机生成 | 随机生成 | 是 | +| TZ | 容器时区 | Asia/Shanghai | 是 | + +## 使用说明 +- 管理界面路径固定为 `/pingap`,请使用安装时生成的管理员用户名和密码登录。 +- 这是反向代理/应用网关类应用,对公网开放前请先配置强密码、访问控制、防火墙、安全组、TLS 证书和路由规则。 +- HTTPS 端口默认仅做端口映射;请在 Pingap 内正确配置证书、SNI 和路由后再对外开放。 +- 若代理内网服务,请确认 Pingap 容器与目标服务网络可达。 + +## 参考资料 +- 项目仓库: +- Docker Compose 快速开始: +- 官方文档: diff --git a/apps/pingap/data.yml b/apps/pingap/data.yml new file mode 100644 index 000000000..26b0d3d10 --- /dev/null +++ b/apps/pingap/data.yml @@ -0,0 +1,30 @@ +name: Pingap +tags: + - Tool +title: 基于 Pingora 的高性能反向代理和应用网关 +description: 基于 Pingora 的高性能反向代理和应用网关 +additionalProperties: + key: pingap + name: Pingap + tags: + - Tool + shortDescZh: 基于 Pingora 的高性能反向代理和应用网关 + shortDescEn: A high-performance reverse proxy and application gateway powered by Pingora + description: + en: "A high-performance reverse proxy and application gateway powered by Cloudflare Pingora, with hot reload and a web admin interface." + zh: "基于 Cloudflare Pingora 的高性能反向代理和应用网关,支持热更新和 Web 管理界面。" + zh-Hant: "基於 Cloudflare Pingora 的高效能反向代理和應用閘道,支援熱更新和 Web 管理介面。" + ja: "Cloudflare Pingora を利用した高性能リバースプロキシ兼アプリケーションゲートウェイです。ホットリロードと Web 管理画面に対応します。" + ko: "Cloudflare Pingora 기반의 고성능 리버스 프록시 및 애플리케이션 게이트웨이로, 핫 리로드와 웹 관리 UI를 지원합니다." + ru: "Высокопроизводительный обратный прокси и шлюз приложений на Cloudflare Pingora с горячей перезагрузкой и веб-панелью управления." + ms: "Proksi songsang dan gerbang aplikasi berprestasi tinggi berasaskan Cloudflare Pingora dengan muat semula panas dan UI pentadbiran web." + pt-br: "Proxy reverso e gateway de aplicacao de alto desempenho baseado no Cloudflare Pingora, com hot reload e interface web de administracao." + type: tool + crossVersionUpdate: true + limit: 0 + website: https://pingap.io + github: https://github.com/vicanso/pingap + document: https://pingap.io/pingap-en/docs/getting_started + architectures: + - amd64 + - arm64 diff --git a/apps/pingap/latest/.env.sample b/apps/pingap/latest/.env.sample new file mode 100644 index 000000000..75b9f857b --- /dev/null +++ b/apps/pingap/latest/.env.sample @@ -0,0 +1,7 @@ +CONTAINER_NAME=pingap +PANEL_APP_PORT_HTTP=15079 +PANEL_APP_PORT_HTTPS=15443 +TZ=Asia/Shanghai +APP_DATA_DIR=./data +PINGAP_ADMIN_USER=pingap +PINGAP_ADMIN_PASSWORD=change-me-before-install diff --git a/apps/pingap/latest/data.yml b/apps/pingap/latest/data.yml new file mode 100644 index 000000000..d5b7b8a7a --- /dev/null +++ b/apps/pingap/latest/data.yml @@ -0,0 +1,101 @@ +additionalProperties: + formFields: + - default: 15079 + 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 + rule: paramPort + type: number + - default: 15443 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: HTTPS-порт + ms: Port HTTPS + pt-br: Porta HTTPS + 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: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + zh-Hant: 資料目錄 + ja: データディレクトリ + ko: 데이터 디렉터리 + ru: Каталог данных + ms: Direktori data + pt-br: Diretório de dados + required: true + type: text + - default: pingap + edit: true + envKey: PINGAP_ADMIN_USER + labelEn: Admin Username + labelZh: 管理员用户名 + label: + en: Admin Username + zh: 管理员用户名 + zh-Hant: 管理員使用者名稱 + ja: 管理者ユーザー名 + ko: 관리자 사용자 이름 + ru: Имя администратора + ms: Nama pengguna pentadbir + pt-br: Usuario administrador + required: true + type: text + - edit: true + envKey: PINGAP_ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 管理员密码 + label: + en: Admin Password + zh: 管理员密码 + zh-Hant: 管理員密碼 + ja: 管理者パスワード + ko: 관리자 비밀번호 + ru: Пароль администратора + ms: Kata laluan pentadbir + pt-br: Senha do administrador + random: true + required: true + rule: paramComplexity + type: password diff --git a/apps/pingap/latest/data/.gitkeep b/apps/pingap/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/pingap/latest/docker-compose.yml b/apps/pingap/latest/docker-compose.yml new file mode 100644 index 000000000..db1bdcf3e --- /dev/null +++ b/apps/pingap/latest/docker-compose.yml @@ -0,0 +1,27 @@ +services: + pingap: + image: "vicanso/pingap:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:80" + - "${PANEL_APP_PORT_HTTPS}:443" + environment: + - TZ=${TZ} + - PINGAP_CONF=/opt/pingap/conf + - PINGAP_ADMIN_ADDR=0.0.0.0:80/pingap + - PINGAP_ADMIN_USER=${PINGAP_ADMIN_USER} + - PINGAP_ADMIN_PASSWORD=${PINGAP_ADMIN_PASSWORD} + command: + - pingap + - --autoreload + volumes: + - "${APP_DATA_DIR}:/opt/pingap" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/pingap/latest/scripts/.gitkeep b/apps/pingap/latest/scripts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/pingap/latest/scripts/init.sh b/apps/pingap/latest/scripts/init.sh new file mode 100755 index 000000000..22f0c8ad8 --- /dev/null +++ b/apps/pingap/latest/scripts/init.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +DATA_DIR="${APP_DATA_DIR:-./data}" +mkdir -p "$DATA_DIR" diff --git a/apps/pingap/latest/scripts/uninstall.sh b/apps/pingap/latest/scripts/uninstall.sh new file mode 100755 index 000000000..ab8a8d674 --- /dev/null +++ b/apps/pingap/latest/scripts/uninstall.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker-compose down --volumes diff --git a/apps/pingap/latest/scripts/upgrade.sh b/apps/pingap/latest/scripts/upgrade.sh new file mode 100755 index 000000000..9879df4c3 --- /dev/null +++ b/apps/pingap/latest/scripts/upgrade.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exit 0 diff --git a/apps/pingap/logo.png b/apps/pingap/logo.png new file mode 100644 index 000000000..4f756bb4f Binary files /dev/null and b/apps/pingap/logo.png differ diff --git a/apps/pingap/source-evidence.json b/apps/pingap/source-evidence.json new file mode 100644 index 000000000..1fdb11326 --- /dev/null +++ b/apps/pingap/source-evidence.json @@ -0,0 +1,5 @@ +{ + "repository": "https://github.com/vicanso/pingap", + "dockerDocs": "https://github.com/vicanso/pingap#getting-started", + "composeFile": "https://github.com/vicanso/pingap#getting-started" +}