From 6826cc70465be14b7c0d170b7a0d1359547077fa Mon Sep 17 00:00:00 2001 From: ms Date: Mon, 9 Feb 2026 11:09:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20Apprise?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/apprise/1.3.1/data.yml | 17 ++++++++++++ apps/apprise/1.3.1/docker-compose.yml | 27 +++++++++++++++++++ apps/apprise/1.3.1/envs/default.env | 2 ++ apps/apprise/1.3.1/envs/global.env | 2 ++ apps/apprise/1.3.1/scripts/init.sh | 17 ++++++++++++ apps/apprise/1.3.1/scripts/uninstall.sh | 10 +++++++ apps/apprise/1.3.1/scripts/upgrade.sh | 17 ++++++++++++ apps/apprise/README.md | 33 ++++++++++++++++++++++++ apps/apprise/data.yml | 17 ++++++++++++ apps/apprise/logo.png | Bin 0 -> 16885 bytes 10 files changed, 142 insertions(+) create mode 100644 apps/apprise/1.3.1/data.yml create mode 100644 apps/apprise/1.3.1/docker-compose.yml create mode 100644 apps/apprise/1.3.1/envs/default.env create mode 100644 apps/apprise/1.3.1/envs/global.env create mode 100644 apps/apprise/1.3.1/scripts/init.sh create mode 100644 apps/apprise/1.3.1/scripts/uninstall.sh create mode 100644 apps/apprise/1.3.1/scripts/upgrade.sh create mode 100644 apps/apprise/README.md create mode 100644 apps/apprise/data.yml create mode 100644 apps/apprise/logo.png diff --git a/apps/apprise/1.3.1/data.yml b/apps/apprise/1.3.1/data.yml new file mode 100644 index 000000000..a9815ad90 --- /dev/null +++ b/apps/apprise/1.3.1/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/apprise" + edit: true + envKey: APPRISE_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/apps/apprise/1.3.1/docker-compose.yml b/apps/apprise/1.3.1/docker-compose.yml new file mode 100644 index 000000000..2d517246b --- /dev/null +++ b/apps/apprise/1.3.1/docker-compose.yml @@ -0,0 +1,27 @@ +networks: + 1panel-network: + external: true + +services: + apprise: + image: caronc/apprise:v1.3.1 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${APPRISE_ROOT_PATH}/config:/config + - ${APPRISE_ROOT_PATH}/plugin:/plugin + - ${APPRISE_ROOT_PATH}/attach:/attach + environment: + - TZ=Asia/Shanghai + - APPRISE_STATEFUL_MODE=simple + - APPRISE_WORKER_COUNT=1 + - APPRISE_ADMIN=y diff --git a/apps/apprise/1.3.1/envs/default.env b/apps/apprise/1.3.1/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/apprise/1.3.1/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/apprise/1.3.1/envs/global.env b/apps/apprise/1.3.1/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/apprise/1.3.1/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/apprise/1.3.1/scripts/init.sh b/apps/apprise/1.3.1/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/apprise/1.3.1/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/apprise/1.3.1/scripts/uninstall.sh b/apps/apprise/1.3.1/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/apprise/1.3.1/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/apprise/1.3.1/scripts/upgrade.sh b/apps/apprise/1.3.1/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/apprise/1.3.1/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/apprise/README.md b/apps/apprise/README.md new file mode 100644 index 000000000..42cde9e3a --- /dev/null +++ b/apps/apprise/README.md @@ -0,0 +1,33 @@ +# Apprise + +适用于几乎所有平台的推送通知 + +![Apprise](https://file.lifebus.top/imgs/apprise_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Apprise 是一款强大的开源通知推送工具,旨在通过统一的接口连接几乎所有的主流通知平台。 + +## 特性 + +### 平台全覆盖 + +支持超过 100 种服务,包括: +- 即时通讯:WeChat (企业微信), Discord, Telegram, Slack, Matrix。 +- 手机推送:Pushover, Pushbullet, Bark。 +- 基础服务:Email (SMTP), SMS, MQTT, JSON Webhooks。 + +### 多端调用 + +提供 Python 库、CLI 命令行工具 以及可独立部署的 API 微服务(Docker 镜像)。 + +### 轻量高效 + +无繁重的依赖,支持异步发送,性能极佳。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) +![Ms Studio](https://analytics.lifebus.top/p/wJix5nI1W) diff --git a/apps/apprise/data.yml b/apps/apprise/data.yml new file mode 100644 index 000000000..23f8711f7 --- /dev/null +++ b/apps/apprise/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + key: apprise + name: Apprise + tags: + - WebSite + - Local + shortDescZh: 适用于几乎所有平台的推送通知 + shortDescEn: Push Notifications that work with just about every platform + type: website + crossVersionUpdate: true + limit: 0 + website: https://appriseit.com/ + github: https://github.com/caronc/apprise + document: https://appriseit.com/ + architectures: + - amd64 + - arm64 diff --git a/apps/apprise/logo.png b/apps/apprise/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..90bf47606f313e8d5bb47859bfb17c2c63aff70e GIT binary patch literal 16885 zcmVPx#1am@3R0s$N2z&@+hyVZ}07*naRCt{2-FJMQXMOka@0mKAiaNu0zP zgg8LLra)U(OKE}9Lfg=?+Ct%hr?fP5K!L*3Qd$ZP6hcB4ncjQILzZOiy~oj!bjI_C z?KE~gbk4cY()D@2UU|L1)_tApSkk$__ceZ(Efflc1ONbxVo!7j002Pz5dZ)HFc1L% z0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m z5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K z001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR91 z0}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{% z000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)H zFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K z0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H z00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$ z0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK z05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%00003 z5dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L% z0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m z5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K z001x$0RR910}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR91 z0}%iK05A{%000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{% z000035dZ)HFc1L%0009K0000m5CH%H00R*K001x$0RR910}%iK05A{%000035dZ)H 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 z;sPyNSgG2Y3ZWivAe_n33%1et?QC_05k|K)s06-Gq6B(MF^{c(B zS8eUxYU}LL>}>c2dt5H3iVE^B{8yB((vm`Dq0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000O zhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A z000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001h zfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh> z004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;8 z7>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA z0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZp zfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<> z0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq z02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hf&41*?EnA)he004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh> z004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;8 z7>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA z0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZp zfPn}A000<>0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<> z0001hfd~Kq02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq z02qh>004l22mk;87>ED>0DyrA0000OhyVZpfPn}A000<>0001hfd~Kq02qh>004l2 v2mk;87>ED>0DyrA0000OhyVZpfPwx$!%mNgJmnHj00000NkvXXu0mjf!NWD8 literal 0 KcmV+b0RR6000031