From 2bbc13caf9d64334b4779a0c7119171adc5ac184 Mon Sep 17 00:00:00 2001 From: yeguoz Date: Wed, 22 Jan 2025 18:10:59 +0800 Subject: [PATCH 1/2] feat: linuxserver/qbittorrent --- apps/qbittorrent-linuxserver/README.md | 62 ++++++++++++++++++ apps/qbittorrent-linuxserver/data.yml | 14 ++++ apps/qbittorrent-linuxserver/latest/data.yml | 47 +++++++++++++ .../latest/docker-compose.yml | 25 +++++++ apps/qbittorrent-linuxserver/logo.png | Bin 0 -> 8453 bytes 5 files changed, 148 insertions(+) create mode 100644 apps/qbittorrent-linuxserver/README.md create mode 100644 apps/qbittorrent-linuxserver/data.yml create mode 100644 apps/qbittorrent-linuxserver/latest/data.yml create mode 100644 apps/qbittorrent-linuxserver/latest/docker-compose.yml create mode 100644 apps/qbittorrent-linuxserver/logo.png diff --git a/apps/qbittorrent-linuxserver/README.md b/apps/qbittorrent-linuxserver/README.md new file mode 100644 index 000000000000..66108220259b --- /dev/null +++ b/apps/qbittorrent-linuxserver/README.md @@ -0,0 +1,62 @@ +# linuxserver/qbittorrent⁠ + +由 LinuxServer.io 提供的 Qbittorrent 容器 + +Qbittorrent 项目旨在提供 μTorrent 的开源软件替代方案 + +QBittorrent 基于 Qt 工具包和 libtorrent-rasterbar 库 +## docker-compose +```docker compose +services: + qbittorrent: + image: lscr.io/linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - WEBUI_PORT=8080 + - TORRENTING_PORT=6881 + volumes: + - /path/to/qbittorrent/appdata:/config + #optional + - /path/to/downloads:/downloads + ports: + - 8080:8080 + - 6881:6881 + - 6881:6881/udp + restart: unless-stopped +``` +## docker cli +```bash +docker run -d \ + --name=qbittorrent \ + -e PUID=1000 \ + -e PGID=1000 \ + -e TZ=Etc/UTC \ + -e WEBUI_PORT=8080 \ + -e TORRENTING_PORT=6881 \ + -p 8080:8080 \ + -p 6881:6881 \ + -p 6881:6881/udp \ + -v /path/to/qbittorrent/appdata:/config \ + -v /path/to/downloads:/downloads `#optional` \ + --restart unless-stopped \ + lscr.io/linuxserver/qbittorrent:latest +``` + +## 参数 +| 参数 | 功能 | +|-----------------------|-------------------------------------| +| `-p 8080:8080` | WebUI 界面端口 | +| `-p 6881:6881` | TCP 连接端口 | +| `-p 6881:6881/udp` | UDP 连接端口 | +| `-e PUID=1000` | 指定用户 ID,详见下文说明 | +| `-e PGID=1000` | 指定用户组 ID,详见下文说明 | +| `-e TZ=Etc/UTC` | 指定使用的时区,详见时区列表 | +| `-e WEBUI_PORT=8080` | 修改 WebUI 的端口,详见下文说明 | +| `-e TORRENTING_PORT=6881` | 修改 TCP/UDP 连接的端口,详见下文说明 | +| `-v /config` | 包含所有相关配置文件的路径 | +| `-v /downloads` | 磁盘上的下载位置 | +| `--read-only=true` | 以只读文件系统运行容器,详见文档说明 | +| `--user=1000:1000` | 以非 root 用户运行容器,详见文档说明 | diff --git a/apps/qbittorrent-linuxserver/data.yml b/apps/qbittorrent-linuxserver/data.yml new file mode 100644 index 000000000000..d1b888e344c3 --- /dev/null +++ b/apps/qbittorrent-linuxserver/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: qbittorrent-linuxserver + name: qbittorrent/linuxserver + tags: + - Tool + shortDescZh: 由LinuxServer.io提供的Qbittorrent容器 + shortDescEn: A Qbittorrent container, brought to you by LinuxServer.io + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.linuxserver.io/blog + github: https://github.com/linuxserver/docker-qbittorrent + document: https://github.com/linuxserver/docker-qbittorrent diff --git a/apps/qbittorrent-linuxserver/latest/data.yml b/apps/qbittorrent-linuxserver/latest/data.yml new file mode 100644 index 000000000000..cba8619808fb --- /dev/null +++ b/apps/qbittorrent-linuxserver/latest/data.yml @@ -0,0 +1,47 @@ +additionalProperties: + formFields: + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number + - default: 6881 + edit: true + envKey: PANEL_APP_PORT_BT_DOWNLOAD_LISTENER + labelEn: BT download listener Port + labelZh: BT下载监听端口 + required: true + rule: paramPort + type: number + - default: 6881 + edit: true + envKey: PANEL_APP_PORT_BT_DWNLOAD_DHT_LISTENER + labelEn: BT download DHT listener Port(UDP) + labelZh: BT下载DHT监听端口(UDP) + required: true + rule: paramPort + type: number + - default: ./data/config + edit: true + envKey: CONFIG_PATH + labelEn: config folder path + labelZh: 配置文件路径 + required: true + type: text + - default: ./data/downloads + edit: true + envKey: DOWNLOAD_PATH + labelEn: download folder path + labelZh: 下载文件路径 + required: true + type: text + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + required: true + type: text \ No newline at end of file diff --git a/apps/qbittorrent-linuxserver/latest/docker-compose.yml b/apps/qbittorrent-linuxserver/latest/docker-compose.yml new file mode 100644 index 000000000000..5fc3c907f2fd --- /dev/null +++ b/apps/qbittorrent-linuxserver/latest/docker-compose.yml @@ -0,0 +1,25 @@ +networks: + 1panel-network: + external: true +services: + qbittorrent: + image: lscr.io/linuxserver/qbittorrent:latest + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8080" + - "${PANEL_APP_PORT_BT_DOWNLOAD_LISTENER}:6881" + - "${PANEL_APP_PORT_BT_DWNLOAD_DHT_LISTENER}:6881/udp" + volumes: + - "${CONFIG_PATH}:/config" + - "${DOWNLOAD_PATH}:/downloads" + environment: + - PUID=1000 + - PGID=1000 + - WEBUI_PORT=8080 + - TORRENTING_PORT=6881 + - TZ=${TIME_ZONE} + labels: + createdBy: "Apps" \ No newline at end of file diff --git a/apps/qbittorrent-linuxserver/logo.png b/apps/qbittorrent-linuxserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..adc910565b65a29b5f9461faffa2c147fdd086ac GIT binary patch literal 8453 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 literal 0 HcmV?d00001 From bbeb8325b17a03142525c8b3b4863c4cff037afd Mon Sep 17 00:00:00 2001 From: yeguoz Date: Fri, 22 Aug 2025 22:52:51 +0800 Subject: [PATCH 2/2] Add mt-photos-ai devfox101 version --- apps/mt-photos-ai/README.md | 18 ++++++++++++++++-- apps/mt-photos-ai/devfox101/.env.sample | 3 +++ apps/mt-photos-ai/devfox101/data.yml | 19 +++++++++++++++++++ .../mt-photos-ai/devfox101/docker-compose.yml | 19 +++++++++++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 apps/mt-photos-ai/devfox101/.env.sample create mode 100644 apps/mt-photos-ai/devfox101/data.yml create mode 100644 apps/mt-photos-ai/devfox101/docker-compose.yml diff --git a/apps/mt-photos-ai/README.md b/apps/mt-photos-ai/README.md index fbe6b167626d..6dce373237bb 100644 --- a/apps/mt-photos-ai/README.md +++ b/apps/mt-photos-ai/README.md @@ -1,4 +1,18 @@ # MT Photos AI 识别相关任务独立部署项目 -- 基于PaddleOCR实现的文本识别(OCR)接口 -- 基于Chinese-CLIP(OpenAI CLIP模型的中文版本)实现的图片、文本提取特征接口 +## 介绍 + +- 基于 PaddleOCR 实现的文本识别(OCR)接口 +- 基于 Chinese-CLIP(OpenAI CLIP 模型的中文版本)实现的图片、文本提取特征接口 + +## 镜像 + +- `devfox101/mt-photos-ai:latest` + 合并了 `mt-photos-ai` 和 `mt-photos-insightface-unofficial` 2 个镜像的代码,运行这一个镜像就可以支持以上 2 个镜像的功能 + +- 如果在添加智能识别 API 和人脸识别 API 时,需要调用 Intel 核显来加速处理;可以使用 devfox101/mt-photos-ai:latest 镜像,并给容器映射/dev/dri + +```yml +devices: + - "/dev/dri:/dev/dri" +``` diff --git a/apps/mt-photos-ai/devfox101/.env.sample b/apps/mt-photos-ai/devfox101/.env.sample new file mode 100644 index 000000000000..57c1afc5c431 --- /dev/null +++ b/apps/mt-photos-ai/devfox101/.env.sample @@ -0,0 +1,3 @@ +API_AUTH_KEY="mt_photos_ai_extra" +CONTAINER_NAME="mt-photos-ai" +PANEL_APP_PORT_HTTP=8060 diff --git a/apps/mt-photos-ai/devfox101/data.yml b/apps/mt-photos-ai/devfox101/data.yml new file mode 100644 index 000000000000..2ccb9aec803d --- /dev/null +++ b/apps/mt-photos-ai/devfox101/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: "8060" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "mt_photos_ai_extra" + edit: true + envKey: API_AUTH_KEY + labelEn: API Auth Key + labelZh: API 授权密钥 + random: true + required: true + rule: paramComplexity + type: password diff --git a/apps/mt-photos-ai/devfox101/docker-compose.yml b/apps/mt-photos-ai/devfox101/docker-compose.yml new file mode 100644 index 000000000000..3620aa94222d --- /dev/null +++ b/apps/mt-photos-ai/devfox101/docker-compose.yml @@ -0,0 +1,19 @@ +services: + mt-photos-ai: + image: "devfox101/mt-photos-ai:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8060" + environment: + - API_AUTH_KEY=${API_AUTH_KEY} + devices: + - "/dev/dri:/dev/dri" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true