From a5d814b5ea6f54262327bf6815302da48ee2af03 Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Thu, 4 May 2023 15:12:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20'qBittorrent,jelly?= =?UTF-8?q?fin,ALS,alist,watchtower'=20=E5=88=B0=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=95=86=E5=BA=97=20(#24)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * '添加qBittorrent,jellyfin,ALS,alist,watchtower' * 添加flarum到应用商店 * 添加flarum到list * 更新flarum的一些说明 * 更新flarum logo * 添加重启参数 * 规范化 --- apps/ALS/metadata/logo.png | Bin 0 -> 581 bytes apps/ALS/versions/latest/README.md | 52 ++++++ apps/ALS/versions/latest/config.json | 15 ++ apps/ALS/versions/latest/docker-compose.yml | 12 ++ apps/alist/metadata/logo.png | Bin 0 -> 3647 bytes apps/alist/versions/3.16.0/README.md | 134 +++++++++++++ apps/alist/versions/3.16.0/config.json | 41 ++++ apps/alist/versions/3.16.0/data/data/.gitkeep | 0 apps/alist/versions/3.16.0/data/mnt/.gitkeep | 0 apps/alist/versions/3.16.0/docker-compose.yml | 24 +++ apps/alist/versions/latest/README.md | 134 +++++++++++++ apps/alist/versions/latest/config.json | 41 ++++ apps/alist/versions/latest/data/data/.gitkeep | 0 apps/alist/versions/latest/data/mnt/.gitkeep | 0 apps/alist/versions/latest/docker-compose.yml | 24 +++ apps/baidunetdisk/metadata/logo.png | Bin 0 -> 16595 bytes apps/baidunetdisk/versions/4.14.6/README.md | 102 ++++++++++ apps/baidunetdisk/versions/4.14.6/config.json | 44 +++++ .../versions/4.14.6/data/config/.gitkeep | 0 .../versions/4.14.6/data/downloads/.gitkeep | 0 .../versions/4.14.6/docker-compose.yml | 23 +++ apps/baidunetdisk/versions/4.17.7/README.md | 102 ++++++++++ apps/baidunetdisk/versions/4.17.7/config.json | 44 +++++ .../versions/4.17.7/data/config/.gitkeep | 0 .../versions/4.17.7/data/downloads/.gitkeep | 0 .../versions/4.17.7/docker-compose.yml | 23 +++ apps/baidunetdisk/versions/latest/README.md | 102 ++++++++++ apps/baidunetdisk/versions/latest/config.json | 44 +++++ .../versions/latest/data/config/.gitkeep | 0 .../versions/latest/data/downloads/.gitkeep | 0 .../versions/latest/docker-compose.yml | 23 +++ apps/flarum/metadata/logo.png | Bin 0 -> 2192 bytes apps/flarum/versions/1.7.1/README.md | 69 +++++++ apps/flarum/versions/1.7.1/config.json | 104 +++++++++++ apps/flarum/versions/1.7.1/data/.gitkeep | 0 apps/flarum/versions/1.7.1/docker-compose.yml | 36 ++++ apps/flarum/versions/latest/README.md | 69 +++++++ apps/flarum/versions/latest/config.json | 104 +++++++++++ apps/flarum/versions/latest/data/.gitkeep | 0 .../flarum/versions/latest/docker-compose.yml | 36 ++++ apps/jellyfin/metadata/logo.png | Bin 0 -> 21355 bytes apps/jellyfin/versions/10.8.9/README.md | 176 ++++++++++++++++++ apps/jellyfin/versions/10.8.9/config.json | 33 ++++ .../versions/10.8.9/data/cache/.gitkeep | 0 .../versions/10.8.9/data/config/.gitkeep | 0 .../versions/10.8.9/data/media/.gitkeep | 0 .../versions/10.8.9/docker-compose.yml | 20 ++ apps/jellyfin/versions/unstable/README.md | 176 ++++++++++++++++++ apps/jellyfin/versions/unstable/config.json | 33 ++++ .../versions/unstable/data/cache/.gitkeep | 0 .../versions/unstable/data/config/.gitkeep | 0 .../versions/unstable/data/media/.gitkeep | 0 .../versions/unstable/docker-compose.yml | 20 ++ apps/list.json | 102 +++++++++- apps/mysql/versions/5.5.62/README.md | 20 ++ apps/mysql/versions/5.5.62/conf/my.cnf | 5 + apps/mysql/versions/5.5.62/config.json | 23 +++ apps/mysql/versions/5.5.62/docker-compose.yml | 26 +++ apps/mysql/versions/5.6.51/README.md | 20 ++ apps/mysql/versions/5.6.51/conf/my.cnf | 33 ++++ apps/mysql/versions/5.6.51/config.json | 23 +++ apps/mysql/versions/5.6.51/docker-compose.yml | 27 +++ apps/qBittorrent/metadata/logo.png | Bin 0 -> 37653 bytes apps/qBittorrent/versions/4.3.5/README.md | 73 ++++++++ apps/qBittorrent/versions/4.3.5/config.json | 43 +++++ .../versions/4.3.5/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 ++++++++ .../versions/4.3.5/data/.local/.gitkeep | 0 .../versions/4.3.5/data/downloads/.gitkeep | 0 .../versions/4.3.5/docker-compose.yml | 28 +++ apps/qBittorrent/versions/4.5.2/README.md | 73 ++++++++ apps/qBittorrent/versions/4.5.2/config.json | 43 +++++ .../versions/4.5.2/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 ++++++++ .../versions/4.5.2/data/.local/.gitkeep | 0 .../versions/4.5.2/data/downloads/.gitkeep | 0 .../versions/4.5.2/docker-compose.yml | 28 +++ apps/qBittorrent/versions/latest/README.md | 73 ++++++++ apps/qBittorrent/versions/latest/config.json | 43 +++++ .../versions/latest/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 ++++++++ .../versions/latest/data/.local/.gitkeep | 0 .../versions/latest/data/downloads/.gitkeep | 0 .../versions/latest/docker-compose.yml | 28 +++ apps/watchtower/metadata/logo.png | Bin 0 -> 17730 bytes apps/watchtower/versions/latest/README.md | 175 +++++++++++++++++ apps/watchtower/versions/latest/config.json | 30 +++ .../versions/latest/docker-compose.yml | 20 ++ 88 files changed, 3019 insertions(+), 2 deletions(-) create mode 100644 apps/ALS/metadata/logo.png create mode 100644 apps/ALS/versions/latest/README.md create mode 100644 apps/ALS/versions/latest/config.json create mode 100644 apps/ALS/versions/latest/docker-compose.yml create mode 100644 apps/alist/metadata/logo.png create mode 100644 apps/alist/versions/3.16.0/README.md create mode 100644 apps/alist/versions/3.16.0/config.json create mode 100644 apps/alist/versions/3.16.0/data/data/.gitkeep create mode 100644 apps/alist/versions/3.16.0/data/mnt/.gitkeep create mode 100644 apps/alist/versions/3.16.0/docker-compose.yml create mode 100644 apps/alist/versions/latest/README.md create mode 100644 apps/alist/versions/latest/config.json create mode 100644 apps/alist/versions/latest/data/data/.gitkeep create mode 100644 apps/alist/versions/latest/data/mnt/.gitkeep create mode 100644 apps/alist/versions/latest/docker-compose.yml create mode 100644 apps/baidunetdisk/metadata/logo.png create mode 100644 apps/baidunetdisk/versions/4.14.6/README.md create mode 100644 apps/baidunetdisk/versions/4.14.6/config.json create mode 100644 apps/baidunetdisk/versions/4.14.6/data/config/.gitkeep create mode 100644 apps/baidunetdisk/versions/4.14.6/data/downloads/.gitkeep create mode 100644 apps/baidunetdisk/versions/4.14.6/docker-compose.yml create mode 100644 apps/baidunetdisk/versions/4.17.7/README.md create mode 100644 apps/baidunetdisk/versions/4.17.7/config.json create mode 100644 apps/baidunetdisk/versions/4.17.7/data/config/.gitkeep create mode 100644 apps/baidunetdisk/versions/4.17.7/data/downloads/.gitkeep create mode 100644 apps/baidunetdisk/versions/4.17.7/docker-compose.yml create mode 100644 apps/baidunetdisk/versions/latest/README.md create mode 100644 apps/baidunetdisk/versions/latest/config.json create mode 100644 apps/baidunetdisk/versions/latest/data/config/.gitkeep create mode 100644 apps/baidunetdisk/versions/latest/data/downloads/.gitkeep create mode 100644 apps/baidunetdisk/versions/latest/docker-compose.yml create mode 100644 apps/flarum/metadata/logo.png create mode 100644 apps/flarum/versions/1.7.1/README.md create mode 100644 apps/flarum/versions/1.7.1/config.json create mode 100644 apps/flarum/versions/1.7.1/data/.gitkeep create mode 100644 apps/flarum/versions/1.7.1/docker-compose.yml create mode 100644 apps/flarum/versions/latest/README.md create mode 100644 apps/flarum/versions/latest/config.json create mode 100644 apps/flarum/versions/latest/data/.gitkeep create mode 100644 apps/flarum/versions/latest/docker-compose.yml create mode 100644 apps/jellyfin/metadata/logo.png create mode 100644 apps/jellyfin/versions/10.8.9/README.md create mode 100644 apps/jellyfin/versions/10.8.9/config.json create mode 100644 apps/jellyfin/versions/10.8.9/data/cache/.gitkeep create mode 100644 apps/jellyfin/versions/10.8.9/data/config/.gitkeep create mode 100644 apps/jellyfin/versions/10.8.9/data/media/.gitkeep create mode 100644 apps/jellyfin/versions/10.8.9/docker-compose.yml create mode 100644 apps/jellyfin/versions/unstable/README.md create mode 100644 apps/jellyfin/versions/unstable/config.json create mode 100644 apps/jellyfin/versions/unstable/data/cache/.gitkeep create mode 100644 apps/jellyfin/versions/unstable/data/config/.gitkeep create mode 100644 apps/jellyfin/versions/unstable/data/media/.gitkeep create mode 100644 apps/jellyfin/versions/unstable/docker-compose.yml create mode 100644 apps/mysql/versions/5.5.62/README.md create mode 100644 apps/mysql/versions/5.5.62/conf/my.cnf create mode 100644 apps/mysql/versions/5.5.62/config.json create mode 100644 apps/mysql/versions/5.5.62/docker-compose.yml create mode 100644 apps/mysql/versions/5.6.51/README.md create mode 100644 apps/mysql/versions/5.6.51/conf/my.cnf create mode 100644 apps/mysql/versions/5.6.51/config.json create mode 100644 apps/mysql/versions/5.6.51/docker-compose.yml create mode 100644 apps/qBittorrent/metadata/logo.png create mode 100644 apps/qBittorrent/versions/4.3.5/README.md create mode 100644 apps/qBittorrent/versions/4.3.5/config.json create mode 100644 apps/qBittorrent/versions/4.3.5/data/.cache/.gitkeep create mode 100644 apps/qBittorrent/versions/4.3.5/data/.config/qBittorrent/qBittorrent.conf create mode 100644 apps/qBittorrent/versions/4.3.5/data/.local/.gitkeep create mode 100644 apps/qBittorrent/versions/4.3.5/data/downloads/.gitkeep create mode 100644 apps/qBittorrent/versions/4.3.5/docker-compose.yml create mode 100644 apps/qBittorrent/versions/4.5.2/README.md create mode 100644 apps/qBittorrent/versions/4.5.2/config.json create mode 100644 apps/qBittorrent/versions/4.5.2/data/.cache/.gitkeep create mode 100644 apps/qBittorrent/versions/4.5.2/data/.config/qBittorrent/qBittorrent.conf create mode 100644 apps/qBittorrent/versions/4.5.2/data/.local/.gitkeep create mode 100644 apps/qBittorrent/versions/4.5.2/data/downloads/.gitkeep create mode 100644 apps/qBittorrent/versions/4.5.2/docker-compose.yml create mode 100644 apps/qBittorrent/versions/latest/README.md create mode 100644 apps/qBittorrent/versions/latest/config.json create mode 100644 apps/qBittorrent/versions/latest/data/.cache/.gitkeep create mode 100644 apps/qBittorrent/versions/latest/data/.config/qBittorrent/qBittorrent.conf create mode 100644 apps/qBittorrent/versions/latest/data/.local/.gitkeep create mode 100644 apps/qBittorrent/versions/latest/data/downloads/.gitkeep create mode 100644 apps/qBittorrent/versions/latest/docker-compose.yml create mode 100644 apps/watchtower/metadata/logo.png create mode 100644 apps/watchtower/versions/latest/README.md create mode 100644 apps/watchtower/versions/latest/config.json create mode 100644 apps/watchtower/versions/latest/docker-compose.yml diff --git a/apps/ALS/metadata/logo.png b/apps/ALS/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1eab3a47f43749b1c17438cc34eb43930a805858 GIT binary patch literal 581 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 RWcEY|urRYZ`x@g-`5%LJrKA7= literal 0 HcmV?d00001 diff --git a/apps/alist/versions/3.16.0/README.md b/apps/alist/versions/3.16.0/README.md new file mode 100644 index 000000000..8520b49f4 --- /dev/null +++ b/apps/alist/versions/3.16.0/README.md @@ -0,0 +1,134 @@ +
+ logo +

🗂一个支持多存储的文件列表程序,使用 Gin 和 Solidjs。

+ + +
+ +--- + +[English](./README.md) | 中文 | [Contributing](./CONTRIBUTING.md) | [CODE_OF_CONDUCT](./CODE_OF_CONDUCT.md) + +## 功能 + +- [x] 多种存储 + - [x] 本地存储 + - [x] [阿里云盘](https://www.aliyundrive.com/) + - [x] OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us) + - [x] [天翼云盘](https://cloud.189.cn) (个人云, 家庭云) + - [x] [GoogleDrive](https://drive.google.com/) + - [x] [123云盘](https://www.123pan.com/) + - [x] FTP / SFTP + - [x] [PikPak](https://www.mypikpak.com/) + - [x] [S3](https://aws.amazon.com/cn/s3/) + - [x] [Seafile](https://seafile.com/) + - [x] [又拍云对象存储](https://www.upyun.com/products/file-storage) + - [x] WebDav(支持无API的OneDrive/SharePoint) + - [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ )) + - [x] [分秒帧](https://www.mediatrack.cn/) + - [x] [和彩云](https://yun.139.com/) (个人云, 家庭云) + - [x] [Yandex.Disk](https://disk.yandex.com/) + - [x] [百度网盘](http://pan.baidu.com/) + - [x] [夸克网盘](https://pan.quark.cn) + - [x] [迅雷网盘](https://pan.xunlei.com) + - [x] [蓝奏云](https://www.lanzou.com/) + - [x] [阿里云盘分享](https://www.aliyundrive.com/) + - [x] [谷歌相册](https://photos.google.com/) + - [x] [Mega.nz](https://mega.nz) + - [x] [一刻相册](https://photo.baidu.com/) + - [x] SMB + - [x] [115](https://115.com/) + - [X] Cloudreve +- [x] 部署方便,开箱即用 +- [x] 文件预览(PDF、markdown、代码、纯文本……) +- [x] 画廊模式下的图像预览 +- [x] 视频和音频预览,支持歌词和字幕 +- [x] Office 文档预览(docx、pptx、xlsx、...) +- [x] `README.md` 预览渲染 +- [x] 文件永久链接复制和直接文件下载 +- [x] 黑暗模式 +- [x] 国际化 +- [x] 受保护的路由(密码保护和身份验证) +- [x] WebDav (具体见 https://alist.nn.ci/zh/guide/webdav.html) +- [x] [Docker 部署](https://hub.docker.com/r/xhofe/alist) +- [x] Cloudflare workers 中转 +- [x] 文件/文件夹打包下载 +- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制 +- [x] 离线下载 +- [x] 跨存储复制文件 + +## 文档 + + + +## Demo + + + +## 讨论 + +一般问题请到[讨论论坛](https://github.com/Xhofe/alist/discussions) ,**issue仅针对错误报告和功能请求。** + +## 赞助 + +AList 是一个开源软件,如果你碰巧喜欢这个项目,并希望我继续下去,请考虑赞助我或提供一个单一的捐款!感谢所有的爱和支持:https://alist.nn.ci/zh/guide/sponsor.html + +### 特别赞助 + +- [找资源 - 阿里云盘资源搜索引擎](https://zhaoziyuan.la/) +- [KinhDown 百度云盘不限速下载!永久免费!已稳定运行3年!非常可靠!Q群 -> 786799372](https://kinhdown.com) +- [JetBrains: Essential tools for software developers and teams](https://www.jetbrains.com/) + +## 贡献者 + +Thanks goes to these wonderful people: + +[![Contributors](http://contributors.nn.ci/api?repo=alist-org/alist&repo=alist-org/alist-web&repo=alist-org/docs)](https://github.com/alist-org/alist/graphs/contributors) + +## 许可 + +`AList` 是在 AGPL-3.0 许可下许可的开源软件。 + +## 免责声明 +- 本程序为免费开源项目,旨在分享网盘文件,方便下载以及学习golang,使用时请遵守相关法律法规,请勿滥用; +- 本程序通过调用官方sdk/接口实现,无破坏官方接口行为; +- 本程序仅做302重定向/流量转发,不拦截、存储、篡改任何用户数据; +- 在使用本程序之前,你应了解并承担相应的风险,包括但不限于账号被ban,下载限速等,与本程序无关; +- 如有侵权,请通过[邮件](mailto:i@nn.ci)与我联系,会及时处理。 + +--- + +> [@博客](https://nn.ci/) · [@GitHub](https://github.com/Xhofe) · [@Telegram群](https://t.me/alist_chat) · [@Discord](https://discord.gg/F4ymsH4xv2) + diff --git a/apps/alist/versions/3.16.0/config.json b/apps/alist/versions/3.16.0/config.json new file mode 100644 index 000000000..9488b489d --- /dev/null +++ b/apps/alist/versions/3.16.0/config.json @@ -0,0 +1,41 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 5244, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "数据文件夹路径", + "labelEn": "Data folder path", + "required": true, + "default": "./data/data", + "envKey": "DATA_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "挂载文件夹路径", + "labelEn": "Mount folder path", + "required": true, + "default": "./data/mnt", + "envKey": "MOUNT_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "管理员账户密码获取:容器终端输入./alist admin", + "labelEn": "Administrator account password retrieval: container terminal enter . /alist admin", + "required": false, + "default": "这是一个提示/This is a tip", + "edit": false + } + ] +} diff --git a/apps/alist/versions/3.16.0/data/data/.gitkeep b/apps/alist/versions/3.16.0/data/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/alist/versions/3.16.0/data/mnt/.gitkeep b/apps/alist/versions/3.16.0/data/mnt/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/alist/versions/3.16.0/docker-compose.yml b/apps/alist/versions/3.16.0/docker-compose.yml new file mode 100644 index 000000000..698d32e43 --- /dev/null +++ b/apps/alist/versions/3.16.0/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3' +services: + alist: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5244" + volumes: + - "${DATA_PATH}:/opt/alist/data" + - "${MOUNT_PATH}:/mnt/data" + environment: + - PUID=0 + - PGID=0 + - UMASK=022 + image: xhofe/alist:v3.16.0 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + diff --git a/apps/alist/versions/latest/README.md b/apps/alist/versions/latest/README.md new file mode 100644 index 000000000..8520b49f4 --- /dev/null +++ b/apps/alist/versions/latest/README.md @@ -0,0 +1,134 @@ +
+ logo +

🗂一个支持多存储的文件列表程序,使用 Gin 和 Solidjs。

+ + +
+ +--- + +[English](./README.md) | 中文 | [Contributing](./CONTRIBUTING.md) | [CODE_OF_CONDUCT](./CODE_OF_CONDUCT.md) + +## 功能 + +- [x] 多种存储 + - [x] 本地存储 + - [x] [阿里云盘](https://www.aliyundrive.com/) + - [x] OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us) + - [x] [天翼云盘](https://cloud.189.cn) (个人云, 家庭云) + - [x] [GoogleDrive](https://drive.google.com/) + - [x] [123云盘](https://www.123pan.com/) + - [x] FTP / SFTP + - [x] [PikPak](https://www.mypikpak.com/) + - [x] [S3](https://aws.amazon.com/cn/s3/) + - [x] [Seafile](https://seafile.com/) + - [x] [又拍云对象存储](https://www.upyun.com/products/file-storage) + - [x] WebDav(支持无API的OneDrive/SharePoint) + - [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ )) + - [x] [分秒帧](https://www.mediatrack.cn/) + - [x] [和彩云](https://yun.139.com/) (个人云, 家庭云) + - [x] [Yandex.Disk](https://disk.yandex.com/) + - [x] [百度网盘](http://pan.baidu.com/) + - [x] [夸克网盘](https://pan.quark.cn) + - [x] [迅雷网盘](https://pan.xunlei.com) + - [x] [蓝奏云](https://www.lanzou.com/) + - [x] [阿里云盘分享](https://www.aliyundrive.com/) + - [x] [谷歌相册](https://photos.google.com/) + - [x] [Mega.nz](https://mega.nz) + - [x] [一刻相册](https://photo.baidu.com/) + - [x] SMB + - [x] [115](https://115.com/) + - [X] Cloudreve +- [x] 部署方便,开箱即用 +- [x] 文件预览(PDF、markdown、代码、纯文本……) +- [x] 画廊模式下的图像预览 +- [x] 视频和音频预览,支持歌词和字幕 +- [x] Office 文档预览(docx、pptx、xlsx、...) +- [x] `README.md` 预览渲染 +- [x] 文件永久链接复制和直接文件下载 +- [x] 黑暗模式 +- [x] 国际化 +- [x] 受保护的路由(密码保护和身份验证) +- [x] WebDav (具体见 https://alist.nn.ci/zh/guide/webdav.html) +- [x] [Docker 部署](https://hub.docker.com/r/xhofe/alist) +- [x] Cloudflare workers 中转 +- [x] 文件/文件夹打包下载 +- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制 +- [x] 离线下载 +- [x] 跨存储复制文件 + +## 文档 + + + +## Demo + + + +## 讨论 + +一般问题请到[讨论论坛](https://github.com/Xhofe/alist/discussions) ,**issue仅针对错误报告和功能请求。** + +## 赞助 + +AList 是一个开源软件,如果你碰巧喜欢这个项目,并希望我继续下去,请考虑赞助我或提供一个单一的捐款!感谢所有的爱和支持:https://alist.nn.ci/zh/guide/sponsor.html + +### 特别赞助 + +- [找资源 - 阿里云盘资源搜索引擎](https://zhaoziyuan.la/) +- [KinhDown 百度云盘不限速下载!永久免费!已稳定运行3年!非常可靠!Q群 -> 786799372](https://kinhdown.com) +- [JetBrains: Essential tools for software developers and teams](https://www.jetbrains.com/) + +## 贡献者 + +Thanks goes to these wonderful people: + +[![Contributors](http://contributors.nn.ci/api?repo=alist-org/alist&repo=alist-org/alist-web&repo=alist-org/docs)](https://github.com/alist-org/alist/graphs/contributors) + +## 许可 + +`AList` 是在 AGPL-3.0 许可下许可的开源软件。 + +## 免责声明 +- 本程序为免费开源项目,旨在分享网盘文件,方便下载以及学习golang,使用时请遵守相关法律法规,请勿滥用; +- 本程序通过调用官方sdk/接口实现,无破坏官方接口行为; +- 本程序仅做302重定向/流量转发,不拦截、存储、篡改任何用户数据; +- 在使用本程序之前,你应了解并承担相应的风险,包括但不限于账号被ban,下载限速等,与本程序无关; +- 如有侵权,请通过[邮件](mailto:i@nn.ci)与我联系,会及时处理。 + +--- + +> [@博客](https://nn.ci/) · [@GitHub](https://github.com/Xhofe) · [@Telegram群](https://t.me/alist_chat) · [@Discord](https://discord.gg/F4ymsH4xv2) + diff --git a/apps/alist/versions/latest/config.json b/apps/alist/versions/latest/config.json new file mode 100644 index 000000000..9488b489d --- /dev/null +++ b/apps/alist/versions/latest/config.json @@ -0,0 +1,41 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 5244, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "数据文件夹路径", + "labelEn": "Data folder path", + "required": true, + "default": "./data/data", + "envKey": "DATA_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "挂载文件夹路径", + "labelEn": "Mount folder path", + "required": true, + "default": "./data/mnt", + "envKey": "MOUNT_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "管理员账户密码获取:容器终端输入./alist admin", + "labelEn": "Administrator account password retrieval: container terminal enter . /alist admin", + "required": false, + "default": "这是一个提示/This is a tip", + "edit": false + } + ] +} diff --git a/apps/alist/versions/latest/data/data/.gitkeep b/apps/alist/versions/latest/data/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/alist/versions/latest/data/mnt/.gitkeep b/apps/alist/versions/latest/data/mnt/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/alist/versions/latest/docker-compose.yml b/apps/alist/versions/latest/docker-compose.yml new file mode 100644 index 000000000..e4983778d --- /dev/null +++ b/apps/alist/versions/latest/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3' +services: + alist: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5244" + volumes: + - "${DATA_PATH}:/opt/alist/data" + - "${MOUNT_PATH}:/mnt/data" + environment: + - PUID=0 + - PGID=0 + - UMASK=022 + image: xhofe/alist:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true + diff --git a/apps/baidunetdisk/metadata/logo.png b/apps/baidunetdisk/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9685d970a4a9d2d0bf482d2159fef113d1b3928e GIT binary patch literal 16595 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 R0t7z|aB*^XY_Jdh{lB7wvcv!Y literal 0 HcmV?d00001 diff --git a/apps/flarum/versions/1.7.1/README.md b/apps/flarum/versions/1.7.1/README.md new file mode 100644 index 000000000..5fad07f35 --- /dev/null +++ b/apps/flarum/versions/1.7.1/README.md @@ -0,0 +1,69 @@ +# 使用说明 +## 账户密码 +- 初始账户: flarum +- 初始密码: flarum + +## 中文语言包 + +> 中文语言包: +>> - https://github.com/flarum-lang/chinese-simplified + +使用说明: + +- Flarum v0.1.0-beta.8 及以上版本 + +进入容器终端运行以下安装中文语言包,详细可查看原项目文档。 +``` +composer require flarum-lang/chinese-simplified +php flarum cache:clear +``` + +## 所使用docker镜像相关: + +> 项目链接 +>> - https://hub.docker.com/r/crazymax/flarum +>> - https://github.com/crazy-max/docker-flarum + +# 原始相关 + +

+ +

+ +

+Total Downloads +Latest Stable Version +License +

+ +## About Flarum + +**[Flarum](https://flarum.org/) is a delightfully simple discussion platform for your website.** It's fast and easy to use, with all the features you need to run a successful community. It is designed to be: + +* **Fast and simple.** No clutter, no bloat, no complex dependencies. Flarum is built with PHP so it’s quick and easy to deploy. The interface is powered by Mithril, a performant JavaScript framework with a tiny footprint. + +* **Beautiful and responsive.** This is forum software for humans. Flarum is carefully designed to be consistent and intuitive across platforms, out-of-the-box. + +* **Powerful and extensible.** Customize, extend, and integrate Flarum to suit your community. Flarum’s architecture is amazingly flexible, with a powerful Extension API. + +![screenshot](https://flarum.org/assets/img/home-screenshot.png) + +## Installation + +Read the **[Installation guide](https://docs.flarum.org/install)** to get started. For support, refer to the [documentation](https://docs.flarum.org/), and ask questions on the [community forum](https://discuss.flarum.org/) or [Discord chat](https://flarum.org/discord/). + +## Contributing + +Thank you for considering contributing to Flarum! Please read the **[Contributing guide](https://docs.flarum.org/contributing)** to learn how you can help. + +This repository only holds the Flarum skeleton application. Most development happens in [flarum/core](https://github.com/flarum/core). + +## Security Vulnerabilities + +If you discover a security vulnerability within Flarum, please follow our [security policy](https://github.com/flarum/core/security/policy) so we can address it promptly. + +## License + +Flarum is open-source software licensed under the [MIT License](https://github.com/flarum/flarum/blob/master/LICENSE). + + diff --git a/apps/flarum/versions/1.7.1/config.json b/apps/flarum/versions/1.7.1/config.json new file mode 100644 index 000000000..b012984af --- /dev/null +++ b/apps/flarum/versions/1.7.1/config.json @@ -0,0 +1,104 @@ +{ + "formFields": [ + { + "type": "apps", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "mysql", + "values": [{ + "label": "MySQL", + "value": "mysql" + }], + "child": { + "type": "service", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "", + "envKey": "PANEL_DB_HOST" + }, + "params": [ + { + "type": "param", + "key": "mysql", + "value": "3306", + "envKey": "FLARUM_DB_PORT" + }, + { + "type": "param", + "key": "postgresql", + "value": "5432", + "envKey": "FLARUM_DB_PORT" + } + ] + }, + { + "type": "text", + "labelZh": "数据库名", + "labelEn": "Database", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_NAME" + }, + { + "type": "text", + "labelZh": "数据库用户", + "labelEn": "User", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_USER" + }, + { + "type": "password", + "labelZh": "数据库用户密码", + "labelEn": "Password", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramComplexity", + "envKey": "PANEL_DB_USER_PASSWORD" + }, + { + "type": "text", + "labelZh": "数据库前缀", + "labelEn": "Database prefix", + "required": true, + "default": "flarum_", + "envKey": "PANEL_DB_PREFIX" + }, + { + "type": "number", + "labelZh": "端口", + "labelEn": "Port", + "required": true, + "default": 40020, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "数据存放文件夹", + "labelEn": "Data storage folder", + "required": true, + "default": "./data", + "envKey": "DATA_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "本机IP", + "labelEn": "Local IP", + "required": true, + "default": "127.0.0.1", + "envKey": "Dockerized_HOST", + "edit": true + } + ] +} + diff --git a/apps/flarum/versions/1.7.1/data/.gitkeep b/apps/flarum/versions/1.7.1/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/flarum/versions/1.7.1/docker-compose.yml b/apps/flarum/versions/1.7.1/docker-compose.yml new file mode 100644 index 000000000..8c0ce89d3 --- /dev/null +++ b/apps/flarum/versions/1.7.1/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3" +services: + flarum: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + volumes: + - "${DATA_PATH}:/data" + environment: + - TZ=Asia/Shanghai + - PUID=1000 + - PGID=1000 + - MEMORY_LIMIT=256M + - UPLOAD_MAX_SIZE=256M + - CLEAR_ENV=yes + - OPCACHE_MEM_SIZE=128M + - LISTEN_IPV6=true + - REAL_IP_FROM=0.0.0.0/32 + - DB_HOST=${PANEL_DB_HOST} + - DB_PORT=${FLARUM_DB_PORT} + - DB_NAME=${PANEL_DB_NAME} + - DB_USER=${PANEL_DB_USER} + - DB_PASSWORD=${PANEL_DB_USER_PASSWORD} + - DB_PREFIX=${PANEL_DB_PREFIX} + - DB_NOPREFIX=false + - DB_TIMEOUT=60 + - FLARUM_BASE_URL=http://${Dockerized_HOST}:${PANEL_APP_PORT_HTTP} + image: crazymax/flarum:1.7.1 + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/flarum/versions/latest/README.md b/apps/flarum/versions/latest/README.md new file mode 100644 index 000000000..5fad07f35 --- /dev/null +++ b/apps/flarum/versions/latest/README.md @@ -0,0 +1,69 @@ +# 使用说明 +## 账户密码 +- 初始账户: flarum +- 初始密码: flarum + +## 中文语言包 + +> 中文语言包: +>> - https://github.com/flarum-lang/chinese-simplified + +使用说明: + +- Flarum v0.1.0-beta.8 及以上版本 + +进入容器终端运行以下安装中文语言包,详细可查看原项目文档。 +``` +composer require flarum-lang/chinese-simplified +php flarum cache:clear +``` + +## 所使用docker镜像相关: + +> 项目链接 +>> - https://hub.docker.com/r/crazymax/flarum +>> - https://github.com/crazy-max/docker-flarum + +# 原始相关 + +

+ +

+ +

+Total Downloads +Latest Stable Version +License +

+ +## About Flarum + +**[Flarum](https://flarum.org/) is a delightfully simple discussion platform for your website.** It's fast and easy to use, with all the features you need to run a successful community. It is designed to be: + +* **Fast and simple.** No clutter, no bloat, no complex dependencies. Flarum is built with PHP so it’s quick and easy to deploy. The interface is powered by Mithril, a performant JavaScript framework with a tiny footprint. + +* **Beautiful and responsive.** This is forum software for humans. Flarum is carefully designed to be consistent and intuitive across platforms, out-of-the-box. + +* **Powerful and extensible.** Customize, extend, and integrate Flarum to suit your community. Flarum’s architecture is amazingly flexible, with a powerful Extension API. + +![screenshot](https://flarum.org/assets/img/home-screenshot.png) + +## Installation + +Read the **[Installation guide](https://docs.flarum.org/install)** to get started. For support, refer to the [documentation](https://docs.flarum.org/), and ask questions on the [community forum](https://discuss.flarum.org/) or [Discord chat](https://flarum.org/discord/). + +## Contributing + +Thank you for considering contributing to Flarum! Please read the **[Contributing guide](https://docs.flarum.org/contributing)** to learn how you can help. + +This repository only holds the Flarum skeleton application. Most development happens in [flarum/core](https://github.com/flarum/core). + +## Security Vulnerabilities + +If you discover a security vulnerability within Flarum, please follow our [security policy](https://github.com/flarum/core/security/policy) so we can address it promptly. + +## License + +Flarum is open-source software licensed under the [MIT License](https://github.com/flarum/flarum/blob/master/LICENSE). + + diff --git a/apps/flarum/versions/latest/config.json b/apps/flarum/versions/latest/config.json new file mode 100644 index 000000000..b012984af --- /dev/null +++ b/apps/flarum/versions/latest/config.json @@ -0,0 +1,104 @@ +{ + "formFields": [ + { + "type": "apps", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "mysql", + "values": [{ + "label": "MySQL", + "value": "mysql" + }], + "child": { + "type": "service", + "labelZh": "数据库服务", + "labelEn": "Database Service", + "required": true, + "default": "", + "envKey": "PANEL_DB_HOST" + }, + "params": [ + { + "type": "param", + "key": "mysql", + "value": "3306", + "envKey": "FLARUM_DB_PORT" + }, + { + "type": "param", + "key": "postgresql", + "value": "5432", + "envKey": "FLARUM_DB_PORT" + } + ] + }, + { + "type": "text", + "labelZh": "数据库名", + "labelEn": "Database", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_NAME" + }, + { + "type": "text", + "labelZh": "数据库用户", + "labelEn": "User", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramCommon", + "envKey": "PANEL_DB_USER" + }, + { + "type": "password", + "labelZh": "数据库用户密码", + "labelEn": "Password", + "required": true, + "default": "flarum", + "random": true, + "rule": "paramComplexity", + "envKey": "PANEL_DB_USER_PASSWORD" + }, + { + "type": "text", + "labelZh": "数据库前缀", + "labelEn": "Database prefix", + "required": true, + "default": "flarum_", + "envKey": "PANEL_DB_PREFIX" + }, + { + "type": "number", + "labelZh": "端口", + "labelEn": "Port", + "required": true, + "default": 40020, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "数据存放文件夹", + "labelEn": "Data storage folder", + "required": true, + "default": "./data", + "envKey": "DATA_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "本机IP", + "labelEn": "Local IP", + "required": true, + "default": "127.0.0.1", + "envKey": "Dockerized_HOST", + "edit": true + } + ] +} + diff --git a/apps/flarum/versions/latest/data/.gitkeep b/apps/flarum/versions/latest/data/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/flarum/versions/latest/docker-compose.yml b/apps/flarum/versions/latest/docker-compose.yml new file mode 100644 index 000000000..20b5ae177 --- /dev/null +++ b/apps/flarum/versions/latest/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3" +services: + flarum: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + volumes: + - "${DATA_PATH}:/data" + environment: + - TZ=Asia/Shanghai + - PUID=1000 + - PGID=1000 + - MEMORY_LIMIT=256M + - UPLOAD_MAX_SIZE=256M + - CLEAR_ENV=yes + - OPCACHE_MEM_SIZE=128M + - LISTEN_IPV6=true + - REAL_IP_FROM=0.0.0.0/32 + - DB_HOST=${PANEL_DB_HOST} + - DB_PORT=${FLARUM_DB_PORT} + - DB_NAME=${PANEL_DB_NAME} + - DB_USER=${PANEL_DB_USER} + - DB_PASSWORD=${PANEL_DB_USER_PASSWORD} + - DB_PREFIX=${PANEL_DB_PREFIX} + - DB_NOPREFIX=false + - DB_TIMEOUT=60 + - FLARUM_BASE_URL=http://${Dockerized_HOST}:${PANEL_APP_PORT_HTTP} + image: crazymax/flarum:latest + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/jellyfin/metadata/logo.png b/apps/jellyfin/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..53146eb2e17b38b848305319b45c57384950b572 GIT binary patch literal 21355 zcmV)$K#sqOP)PyA07*naRCr$Py$6_8<+VP();?z_DwafJi~l4>ED%AOzziCQ#zb#&Z*K0zU!;k# zMHs+t?8k1z8Y~FdJCkBGdQ&u%p$irijWNkJCRd^+8U<-{&bR*0*Vp&$eWr1M0nR*6 zqQcCXbM{_)eeZhLyWWLR{iHCAlRm^KsBJZsoPooFx7yr z#=tgp1*!qP8Ez*5sq2h@v>ATgcKs`=0lkTCzYOBpLucpa06<~(u%i4mg~F`7{O9F` zp`~hYZ<-5V4d@DAR~g7x6aWha6!xWO4xgEm|9*VK@g@6bg#sm)7i8+LX6;Jef@(ll z@M_AywLyE&_vdv>1bqhyk1XZj^YYga;9o_F=5!I=o*eT~?@#5Q@t>*STiI@3sv6K0 zy7e|NXAPZ||H~Kh;{ahI0e)G6W&%_wS|Moy5DC0R1XDh?<`#2X3V2ouCah(!rQR6r9DA>;`WiDZD|5=!9wanoz(WI>gUdSlz^ z4_5d$0$*8gSThx{`Y;_7?l z-w2=wJ0)GtIDK0GHB|`G&YMz&9PPVs5+@IvJ*@cH*jZmJiu@x0P)mp<1uXy*jh7Kf zC1ahPbzqx-mYAAnY(POkIYL|@pmf5S(~fvYQhbGiru(X2t-k`*4Bh%`rM}Y!^W$S0 z4=e)wf&dQII9X!jIA8&UO4KZvgJ8D>qY8NS8i4c%QA)mZ){Mb#RD-&WH>aAR+jhZh zFh4SO{$U`*lLYt$LJ1ovAF>%NE34wqWN2Lo^6adFT_`GA;p!qG<%!@O6v?;GoH1y5 zHK^NmkE$8EmDkG!^N0n9L$35oLfC^qF&GLjyXtrWg&_NPgR6sJSASL{ z#5@75ObEYq*0jMdR)e~gH>sMTTX&&sFh6?Yyq-YtYeBHD%giQ7b*4p-jXzD<$spF; zv&!D;`y{T`0WJwsp;%Lkvu##a-!EB`93j0+K;JlTYTawqpl;p0s%GdGu9IaPW{#S5 zKoRr5Ccym(sYD1l!zHt#&jh6@`ofIt16Ibd&e$xN9saft0Tlr-F96<3a^maf-ck3L zD*MrLP*(%GnQLSN=&|q3+lOlCe+aRcrrHc7<>Tw$0CUmV(O9kU+gaJ4TYMWRx< zg&)g{O?b@3GX}j^4eI8Dx*E`Bu8-^hN`cYL;S0K!Iv0N{5bGpn23fSJ!jALGzSvW6 z!{TNIHzW)}5Hg)xTx|mcMm0V`2*;Zic3uZ;d0yFL=BN;KxSBx?#(FsJT0IVy&U3}4DL&!Ri|!aaQvbbw zkK13^mjA@nfX=u!HUmC7YVJ*dc(!Vq5am=MXQcXyYU9j>rkhRCmu5YzI7w&hj9_|oC*1Z|c!Y={Oj42oC?qv}ZYJLQ`>{o*?YO{?PRbWm3Vnq3p$1)O&*k$A=kj06!S zR-0j|IU!SS(AKtk4TG)K-*I?i={udpjZjH3r#{<9tVh6vsJ|0Lvb9bdD1mQY{^LQj zs&rl$)YX7C*Td0sqvw371UR1n_6A7QG4DHlHsB1rumP=Q&I;8^IHCDvuH9hVv<-9z zJF*%qyqhRrnEzh1l;Ph*lB>Jo$Nk?KK73}bflb3~&zQOz&}!CCGaAnx`)ub=KHKeg z1SG{qmNGMphHZ{8{Obiq8F~$#k<*2sQrPLZ_ndT!^~iV-bmLsTHvpLP?)u!~j|O%cgk+^zw`GO#-VJiXmQ4tqpDFlO;*JB#&=gm4IuDY!iM>jg$EJIg<` zN;)S<3OH$|>EL<|N69(8h7l~uVCPxhLKiDLbrUWuvpel|Nse*>;EOd)JASorXV2B! zGyK?Y1KM`l9v|KK2oQ~MvQ5WaL>)mx(`oIp#n3zmBfW;g-TJpEaNu+wwgFR)lMY1x zhWe9uT4s4&_IS;RV^@kqkQWFuuD|v0Q>y{Jo$)-bc`{as87`_DSS~x8VoyU20}lf19A#Y&Su95#2A}%V09SMD?7EV?g|5X- zF4$es>e}scid^F9PXJ0oesoLitJ`BxZ&v|rVaC&^J-x%HpYGBKh<%l|S&8XwurO{o zu_Aq53})*!e6ZWbN>&TI9Ixz+XyQUpJwQRWk8!pASuHme2$G+kzr!w{4%I`p3M*|l zCXw4!KwE6tFmldqCB%t}@gg;C9YT#*ui;wQwwTKj7{%Dwz?Y2nw}v*&;Od~k!YDq* zdidc0jTgNFP<|%JA;L8`+&tit?JY}hHv#Q*8YAX>7ZHD|`DQKl;g$owsli&<>icYf zGI72u4!Qq^g$6ueIltVZUPDEDSzPVjN6cqC) z|8(T6&le$C1c>`;NvPCm@IsKm3CA@@6r7m@O!3O)8Y~tYbI#eY9$M9$#g0S`7RH#^ z(JkFYjI*{J%j7GbWzQl|ZF+ukYG!(!-Y$bb#tnjwP{ zA?5(+fm?1od~7wKw-GAOL5)#!PeFp|##1hFj-aMy@`f-09?f(=(vnZ(z8JKtc_9e$ z1dvis713-URze-23sK82o9S33O=oCJ z(LFL^PWOC*3jy%6(rv)%o6G7oTy{3nC1yDgLXB9j;R->20sy^EK(9g~^L274A@nel zEm8(5A1s}%16gUh5Olg}r_SRKUaZ*DI3ECo0Qo!MZyQQYgQnh6`+wVdrrxFl+8#1b zjGFrl034^gfuQFCO@_6+vcjXmXp{+^K=Q|1wg#1rqk|EPMp$x zy?pt?*jZh=bm{sXNZ=d*=&w%&5&|)C-AC7AXIhSw#MC|j`b6--&eeHtqQ(r_ipQo* z9ynrKr}4JgfOb%0ifC=)5!x-nB(p(3-Y}Flm8Nnb9ZD^{)B zaDCzaVe4d|%9G;to_nA*U%dIO1zp#!hYJz#Qu9z~F1(D^!+GNc;v~kbIPbiOS@HCs zYPtx56Yrcn;K6N~%G)Lb+O@Vv&p8AIE(C;KNIQJ0QL4 z2J=Uhqwk+}SM8HBkncWiY0YWV`W5X2xeUQ+r!C8$KCOR~{QIlNE&MhhK1hJOYV#T$ z)Ji|i84xEO<+4+ctCh}!pEzlT#&!|kgHmqb9XIv;%eETS+gw0fMnh%BQFERpN{*Gb zUD8iOk4CY8&C+fJMU@R8HsPI?j_N=pc!x+EEXoIJc*Af}ZXu9-j}5~c61k71FmB0V zxkNlgfcp^`N2Z_!9|`*dsKf%FpEAxK!9R=uR215Y>9MId^xtNo$2J$xHakBta_$cR z@h%Bx71W5cmZQ12_(!u1p(M2I6t;vKCYbT9A|&5BXZpZDw1r8q-+R@>Mcs+uSpj$e zNcVpt1zr3Qt}Xhk;K`m8Ti*J}V73LT z3+f5;zg&X+a|HB7wbDXm{WxItz^n~+CnL?WR^WKtPsPY#^+X{4MI@aD&bao__qH|G zW19(R4mF+_G3O_c;C~TG>n_P^uz+>a%XDKxPgi@rhA+~h)-~t?Qvki2ARaYgTJ7)K z6U=c?7bYy~ArPJi#Jxxj8(5u*r3d2&FT&a>t%sGd2F5ofA@wT&_e}p$|5J28t7+eD zLcp}m1T=#hqY&XCBDs`DH8xBU=mq;~I;2(Jbk?U%EAg~*5|)4@n?autiLXtXal|rN z{MkaUz5S@uPFq?dr?)Siv~VC%@*E)Uq%gIzQShvc7WlK_-M~(aGc?gDHISzjNS{F}T^dEruqzOFrLA36p85t{U)qB>%o;Im#pk@&T(VHaJ z4Y>D)A*;3(etMe-XlCDacS3NQW(y3jYlFZAwx-3bTagM_7c6`-#IhkyCoKcZY#bEh zCrm%$&P`#(WwYfaXDyi|gta2m?@+4(V;V8S)yCztoS~#|29aFToTCJ9xaXRF7i=q8 zdaDm;Z%97->j24b-sO=7J_=K4rmKC zm#m(h^ zPAjG)1X=g59iAhEuaYW6Z8tI0dT529J!vu~YBJmR>T_B}-mLqs>3fuvl~n$-Y~EMg zssq}#x1Sg_?@}ajrP&q8G|pNP7w9!IvR0-^xtp%G6dL_yLmunSo?82Vn*wUYx7}vT zbIzIng`B9F2Y{cKytmMj(6HMXG>BN^NS{_N*aJnOw`EX5DgiY9!E5^8IkYeaj-4>QcC$`@*dp<~ zvlo900G~D|iW%r-CyCWs^JWn*A_KEW-hfdjlr^h)e?tupe7w--?X4MlY?T2Ww6{mj zewrYWH(V>}0=1fP12t&Z+t#*LoaErkRTE|mxomS}=5m?(yt7`oMj%}zJBb2JmJV1C zJ`tYfu@_R6+IGw-3hmyQ`yaZd-$`3@vt_FcXqTNw&iQ|U__z}u>0*lQ*R}$l4El;? zEqyGpyCrE}OrA4u#e{c4vn?u>1 z&xi?87oe2DHy^#S->Ze_FA!vpSj87g{;(6~5r|D+AJkyLAh6vAp?CL&~x5ff- zs|siv%s&}3r;iXgp9s53GD2rld($#iWL%l!kNH^5Jm(wm-x=UvP3jm-8 zKcW0)TkfXB3*cxPhj&N~FAu17(*XF;<5wOwrXzj+Z7QHyAvl5nACUu~AjgVaA=oISljG{ZdLhI3#*KX?&LVB`pWiJV zu}qGPDMr5IcM`XXfOgW*QFAW^fGedbp&F^ubx>#l5E;ifg&Hq{tWSpZd z9CgNwy5DsKR->hmx9{C#F-ZhZXDlLeSvG5=bor!Oive)Sc6j zp+>nb;tzhf><%Itr;OX1Wj#353gMXd$qQVbv^4|3kAGe`Y|_?{r8{&$dvA?7#~|RZ z6o^xjeYUDNV;Hnq)+5}rZ4Db=gH9U;cYLT3hqQqng_m|+yRIZ>C=XH%5>VS_P0?oy zKNHOCg!1d=te=N%kGsyIISFZPiRj3u3VoLjpE)zvaQyL7OWh&AI&45&s3C*;gU{z? z0l^ST={4jrYy9C-dX4x-+MDKhXT82n$?@QuQq7()lvq0>y0qs{6&mBty_eq%n*rCxZ z?3}{yfp0;!sTC-*;5*(mfy;2&QA&ZnjqNhq? zlkyl>J4VE0Fj~1jj{~H}c~h_&>4|E>LIF?;ohljFHo#84_{A?E(NZEX_6_!WMWX*^ zIBDms>aL|J5GCi2u&hg|lhJup@)K0F677Ub z<)s9Za+J`i_0xvT*c92B7f=^XTC}IUW!K&|=so$*O;KFg*F5RMr4teGHu79D+s2i~ z)$;uWcE5p7UeKr!AWbDHnefzQy>9QQI*$$)(0)cx(sZST2(-I9@>2d9=}~>{7-TtE zjj^NkYHFt+AwEBT`rxliELiF6Y=i6KvzP3LMY;+Ahl@lt@_y1(5|`XCWzgR$AJn=) zly(SByW{T&aERol6@%k!5A4{P;hLQ$+UcUTE33@TX4-{aOS4>w{#;YU!9Oqbe!n9^ zj}8~m_98toV(wjt@PoJzRPe&wAid3%o4}Zi;xM+AiMq^WtM(!S9WidkkVTcw&d!Qp z+|nUQzVsOB(J8;*8{n^4OisA&_5t%NU4+_)b7B*`-bxQi6~5Mo}R6mr;Bo(`}I1bpj9w;eurQw8}4i*LoQH1i1!Xpz;V=Rmzq6{`$gxf9z<@mJXGn3xz^bC=|pKqZ*$= zqHpV|WZ8c85>LJl&|$xz$T5Xr-0GIErKUXSE$k!)j=SrKk17c@Y+znl|3Y0cDgBaU zM^n*^l=nMX6iKK891%Ye0*;$}Yo#-_h8|azB}SeT-RhLPz0XD>PIq>jc*cbI^76Wk-_9ft`$V{8cYju1!5W%*Jt9BsVmRG|~> zK2gK2a!0njYa_y{Px%jug}# zBA{)il#rvxTaB{_;7DaFYhCU6Flg*CVFgBp=l7%fLHk?i1wP`r@iT^ey^=Cj!!Ka!|tA;6}w> zD1o#%x!hU?HEtwNPub!6Cv<{A@(Ac*D&psp%7<^OSS5G}1R?nR~u z3!6b^+8RG4!ms}LrhdyRg{ST7oN(#OJppNfK-gI>C{TeI1T0tBMOqK`ForHv8sn*~ zPjJHX7x#X=BQ#sKDCDrm)T1ZN+C7)#76QNlYN32tZ#p|>rE>bO-$Q&W6^H{L$E|9O?l(l)?GT(^9;()!{{g5V1p z=4j-lYZQA;nK?YG0kn;;xhJlvW+Z3akVXJ63!fh~=tw^%?s0n$lx_n-~990B%H zg`4uG3x(*xK&Krk%5u~++1aY;q-7Q+Fml|q+D9wZ5p=;^zxZo}@VtQ+&LgAzQh7F2 z!&!AAWrLTn|ku2Am zzytms)^+PMyYMBon{i8hZLxs%0;D-tBjLpgJF7LmEIYFnHlKS7UG>@YveR*(+MWtX z&z&*7?il@yYRu}+J|oJ z{b@y@hoRJl7glrvX!@N1sFM;?y<5>(3%6oDvllV3tz3F*n7k!P31C9w1zT3Qv_%5i z9!rmno%O|BQ*I#v?xl8c>#A8h|JW>@x!XG1{m7V|Tt9X4;TKjaOIs}c-OFD7PfXxv<{{GBmcX6V z`)8Zg&CZV4`Dt@bS~DiLXYhMLP&@C!ULQe$5~#3Dwl!IQiw5-LBO9+nq#tVMP}w4m znG36yi##+;A>(=Kz@*${dVG5PjM{&%6sEJmeC4Et151Q+iJ+5K0qSul{SY!oPp4$F zP=lMlL@rMu#iw5rU>#9%#N9XaU0SK2w%6jjg%^KIkQ^;r;$X+MEbHOsG3|+xg{zs9 zsrj685?@WWAe`NJey>}$RQGVR2edu5e>$RZ{}R%RQoy6Jvn)}xvyZ2_yl`I!3k#S` zS9(X`iG*DQ>`<7n@Hv9yD8DJdciDI|MQ1aU?PNnGSa}>TDq`9RE!$Ma z<_PfI)a(0wy)~JsHQ!^e#eZJ;;#Yxiwp)V4-mBAl1ltWXjpW+q+|b5%6Kx&wPUqs< zzRzDY@Sj_P@!0GE?TyOkPJsmLT@%GYj0|2m3s*a_e~_IOOCkUtsGm_gwo)x_*Fc%D z_;dj@Rly^*k(Kke>8$0C=y;xyt-s)z-QigUPc$D7bn^7;2i#kcEX~@}|9Rz04Fcf5 z`TiES8Nlsoj0!=!4liOo^n5aGVwdNy)ma%wi+5o~d(d|X7j zQ%LEjb+JkG4kX3HXIwj|B3oY_mcDw~ppr=D5Mn23OCo!le!)^8q|&w!I$*<5x5!S+ z+Zw}Pa>b?rjTiO(U~^;X%^J{7ygzd8EdX$)ZpA9@HPUOuyRE&+prggoCgrxnICcE= zA!k$~nB|*t0X<>SEo9%b;>vAy_G&-9iPpSV+puVPsk|<_Qihyp;{X6407*naRIG=( z2I~3SVET8zvfK<(B)2-Q~Ai8kz`Ms{+ z+}*>?7SK+BbmIIkCq?lhA?>W2A0{&d*^PAsP1e#KL1Wf!ruivoY@Rwwk-i%7T z%@)wkpKkQrTR`BMx~QU@TlMR3GMjfxZGp`YC+Y02Dr^F}wtmKtiz{-|d3K(-=t&~@ zkL;!Lrty%e*RX+^A+jp7o>_hRkh?ZbkmTq0UEAlomHuqUUG>tfh&V|NBY-|FZTmi? z=@{$5Wu*o-xjunfYMPXQD2G7jFFfzi$(s{)Y?gp_?xCY*9RQG9N+g*LeLx3CbY}O@ z@7dOEYyrly(dj%B3w~5Tz3zvV5FojZU}07s{@GPd zP#>WNMCELtd!Q^V(l?hcl@D!e>}=si%KQh^*cT99^ul>PuiIQ$dXopV&6bah zXxu-a&>{fbL(jO$2@+O7WiF2lEnt;2iL2?;FzAu(O3nS4>!Z zf&h3l6TRIQ+5x9d^rA)bjsB(sXyeOn*(}mwt#+O)SLnkUapu8iPdZ{XZSX| zJ=;!KTyCkn*&_%rxqe3N`IUegu7NUkRu|~D;}QaKsMl-o2P(qHEi9Gy?d4byln!FA zehZCWB=;?VUR+<(Ww72-weer}ntk)?SM*+SOf+UUI_R{!D;HTswh?>?R~=fqdq|Z0 z;Kg%#-o4caw9S@}p0ITHT(b5xK-g0lolrc1?DvCYi<9iot6wUw7t|BNM=0=cxq7V< z0c|1672_9;7YW?1H71e|_DvK;u_aDEX$;qSF&CNJlvygz*A{23XZE|u9d%~c&7Jnh z)%~VdGD{zO?TbAGUG zD040$#H-Y9Jy~>=8G227(=i#T(-=5o8O6~8!ENL3sXMb0yffpRC8f9!fO=@*zRXyR zkF~oEt-3FRlh*#9?N}Jt5 z;toqpH=W5yv92jI&Q#7+dfNQdm(Tjjj7^QDH(5aQX_O?Vr&06;ww#kAy z5C-W+jhd&_ia6B~1wk)%%70vUe_`0VN-!QasE@w(<%bDzr26b+PgC|DoOINx@c0xt zV{m*ALH?T>1TG}hWr-yfzZ_cFL1dI%vB%Ye~ z?QfmQaJ@*9z7y{r^m-+j4F)&9PXPDmLJ$mgwt*NGK}?*)akYN%%51Dn4gUJkGPg9- z4yL*jDq?peuGhgf>WM4+JW`3%$!5*3UGqv`NZkK8A=9nSezyzGrjdq^VW^dbU;YvJ~%@oaLgFWJ;Erc;y-PIJ% z4b+LD>|X8{p188l;S~uE7GT4!fAuFo;=lOdZ*a<3RbX}@=yl-%>!Afuh4TrEL?gv98aHNiw@$<#ij%@^TjjTMrI?GrP*R@&TBu|OX<7Z?hgHpon*L&p!gSEOYP|{KX@brpFU-|c~CZH{| z@#yHrZzn`gnUN~(TImV~E`Z6%OM0wo2q1(=qcMx63Cke3}Tq zrSZOTKXRDSZZ2WWMGOgI0g`Feb6#1&5vRmsg<$HTW=FdhVR`DzOo$M|&wf(qTNyhp zo28{e$PKT~lTreerDa!_oluUw$+RuD+&O1G^mCy%Fu+G^T(_b#xPe*gO{}?S86GgClQ=bKfUhpN)&?(I}Z{F za!V~q`y*F`r5Zn6i_Ntqwz#zc+rkW?Q>aC*`nroAy6Tr{w`)BNLa~$^@Z?p!mQ?~v z+v4!ZYhOJX6Pn?sTI{q?mT_iqn)+stF6a%!(kER}DER^ySz z0KjCi(Jrgs;a%i21x8Lpo<8245XL;=r8lU{sy-8^9Jjs_&$WHemrq!9A0do&%tq|5 zVR_}WFNJyUyl9QOe-5VDpx16np@t*l0f@Qxv`M+03B2p4m-iW0iGa4(bZBA4PNHjR zIU#<@LOrj!;Ui^C>KoMn)`P^+d^Sr9`Zy8Lf5q87|5)ju-ZTL{s&NJYo$URc*$sB1 zRx#gd^tP6Zb-2~(Zk0!!ATeR$JwtA<#LaV5-MA%tiJW*15I<{A0e3TksS;kyS-6mL zxz{+@>Yce(*ghm_yI=o68}6FXbVf&Qp&6t8)TL2a?!D6b4LyH;U4`cO%*6JPA1%KC z0Is(!Y|XpJG+pdBV#Qh+C$X*%NL$(@^tVa`v@HfNt6zK;Byh8x6-*U^21f@*hFKZb zX4I5{3!9TP-Nh8H4y*(?cg=s+z#TbhXt-|K0Fe}uNMQUgF6(n=C5l5EWJ9i7zCYw( z0RismWuVHuC(M%$P$7PPvuV!dYv@wk?^#z{32f6xCm_9dJaA=FpT(N98RH)TaK>8`dQPp#Ls-dx zb^`w43qB({mF5zX?6PUyLDn&=u%N+VcEUKNR&&8_sk(KP!`g{cYhS8FcJ^)V1+@Z_ zd4!3I1if9>;zACU(ldmyUL%x~rXiIN1WQ#it%{=u00IGRp>VEa&9I$_}@ zfXP*XtkntjjT2`iiwuNH<(ecZ(;N+|vwt>(UR*v~W~sboeeCvEEh|Xi{HHGMGr1BE zyesPv6LPCWECFq3jn0Sd1o z0d1d&$41Sa4FF#a{N6H#LDL%BxV6jl&t_K%B{*W@-EudIR)$sJIRpt^iXU}-0Vz4m zncZXtU3Ao|+Qx{h)C`>o{H)GrbA_PuUiMlE-%tsM8(fg^g3_cUA~UrOxVW$AU0bQ^ zW3lw08(%vGh^8y8GzwYJscajt9u`gn@2^}()r+hE;fX(v@A17#+|P<+Xd7UUjapC( zP@M0D`!)#l<6YP8os_%Fu=0$>(6e8B^;jwCqtgQ!bsbxHlk3_ae0uSkTBfGqo99uTd^**%QYIm29IXmDREeK_``Ud$_}*I->pvN=aVy`o%?kU$4j! zZrF~&H@~^B5KYSfX;0bilbx)zUc+GPRAH|N)U>Zh#t8+qj&jiJ&p+t#Rwdr^MrUZ- z8GLN?y!(KJ=W%VzmS-*7@rqf1&<58psU&P7q#8oHb>g%kXH}w+BE!n!=SwFpKAQk< zvQo)RZaCF6@VX4PZ-n_Lvm!F9lg6)s6aSb!<%;g(L2Qe!a;!)2KpEY!sDJj-K6g|C zM{8`RO&15=`05=5Fpf~(6R7b;Ul~f)vM?#eC-x!4LZZ1ELfQB2?zLxz46ZJL)^@*3qg;UxgH{dYJrr%2Nbu6i&lLwQs~~e=p}>HfUX@bd z0a81q&16`U$JG?p5GaF^O?N&OAX6_15saxGrFzSkjpm-Sj!F&u5^yThlv@}*K!@&*BRPP_SAY#iQe z&xCL|#+okPQ(KOf9ro8Vdc3wV#bLVx+Tz(qN6md0?8uHCfNf5=?+U<}bT`4FZ=T)? z1@NN+UN77DP>EKz&+0k?&Od)%xBU8=7YN}XLfAlrHEJI=;vG!J!pnx7>MjjJ^#Pw0>E=}x`=cJ_YlUJuul7&kbO=d?A#5s7B(Fn=RTA^M;@w2G{FKT~t?L@d#UN+qHP8MkufK&vc5x=^mPeY|@ z4hPkY7{B+;D|#jXvqeI?YlCy?fYr>TdWHnn%SqjXsq(z!wo8Qn@9$?EJhQ#UVVeWm ziF%-rbRTupFCoEWm5ARiYq$OtDiKD@u0$5#5r#6f+*q$Ni} zLYEWZ*W6I3W+}|tVzX+_7eVP@4+KWO%c--yF+Mk)wTNnqq@n346}8ew8Is#VSx@FU zyDlfBqTf;uuKd*x51Y41u9;!WQp(1z(P^JTajqloeC~JTBK+1JfzZr zAM@0vVP+@14X10`H)u(sZ!VO_g&Raosqfi$3|UdBVzAszi|w?=j-A!zGoRV%5Xj*mQ7jFl zBB+CMe|qnOjyu!7S<^G7cs^} zpUw#5{(kzwceO|S-{ydpZ$M(&rp|k>fCLXxl1n3h3nzV9$1CpP2f`M=p4Scp2%tAV z-e+)+iivDmOhJT&!t5NtP?7aJ>(762pIlPhw*p1SzZ_u`KtPni`x8n9vbaM`?T)A8KmWhwIwGE@I!w>{njg8lV`ygse8 zuu67^jWJGJ27lSiC{eQLy&oJjxIOQ$O#$ufy++Uf8iC|+WkI0y-Nv}w7YFVGW|8ih zMk*?6S^8$`nbQZKv8l6j_65_EhFP3se**2~b(9~2~m(Q2F)L_#($QReI$u%{7KDXh2 zCU!47D=Dx4Y?z%4l@Ff8m+G+CJVETPmC4dyxoyQg0Puak^oc#VaUq!fP)9SBwnk7F zdmSMReE-ygm$#LvX;VPkR`(;L=iN>Kxxl?@Q~AyNB7!63D-p9QV6EHOT$iy>SUt4>its>zO1cm zN2>$c6@w!hcf%aa6{rd)-|DuRI8_AkE|+QF2JK~swe0+%O!)oJnl|{wO4D_f2(~!b z(-5F-LlcF9$+S8G%*e%N&bn>6FgBp4yxL!gEVV-= z-;QrMUfQr~$Cv6?$GHLqL(9VOz1{YF1`v+%Wl_XhuR7gI+PG6&KAE2UZvB#6LD;D@H^K#{uzyv!@Oo z+wtK>$BD7c{!V7j%)#-;mkyco`u#+7q7wZB$st-cGiewPW6Y!CqB%~Qi^8NlHBqyR zi$DC^yF-+mw3Uh^c#6@Y5In(O8;()h}Id7}MqBr?=7`sTQIz`u?J+<~i z+g{)7H>>&!Tf74O?p|6WvF(9VR$PmO7fLrWyAe2S09jF2oSn@ARmIX6bz)Xef=Dza z&|}rf2fta-fVSE4p;3+3Ljo6A(`}xeRpY?6y@NJyq+Byv1cR4YXVI)%5P0Fa(*|8% z4d@o*YKwh?4d{cXyzxT;rV}^e9+OY#nCMWw9U?s zoY>e;0REN;cGK3Vdi>XR2b)yy^BK*W1o9h-PP3$-EpIzL5?2+z;)Wg z(3%RN+C|H^hS@g1Z??q-J{+F9>3gNR1i+PonvVRWmD-LL1KI}GgQMr33W(EUg;jbY zA%ll>og;tLa5EWQFi?|_?mS3$oPSqseKnvven5Bs@oTpL%DwGLlhSqA9)z=MD9=fU z!wumBU?z4{16s(T1%eY+pK{RSt!c8f7|@mresE0VG(bF6OGTv_c-#>TF*Gj@wEuf# zV`VY7pZ?afWq@Wd5p}HQ#_Sy+3VX6x+MR(LtV>LPC^ezlJ`9iyU;X{= zKWT~WXjMQzFs5-DC2*>oA=87f%m>an^4lZCTCG}7Gp6q->zu^BIn>i>mIL8x0C8;- zt)Ei3bJ%M8=*%46ki6crgQ(9ob9`;`UuQ?HdNd#~jdj1f|Fp~MrnNsH!V3vt7irF; z;D+lfaGehC81mYw1zgQNTAUBJo-q{wlh>Yf;Q18^==)D>Tm}GrovUc(_9OivTo=%_ zIV6m zSFg#hd~QS6PA3D2F$8e1Xb!thmk)>>hmnCT zJvt=3`B3f8OW@%qvEk+GrX2Z!zm;0IZ2#NKGOOYyca2n(0H|SC{uS91OC_DCDfSWq z{!1Wyhve=VJ-IKlvfMCh_BUFl%PdLN`7H9lj{Qc=(6Eup`Zaf|xnaBoSsciX8|rt$ z|EuOPxDn232qx%pS$HsH;yJS7X;ci&x>lcM|;D?Xr}3aY4G7u&Xq&p?Oa zJsR-OAMKxXTe*s6Up};yIpIQthu!*mZ$VT`3DgP1fq?L3Ha{tYN``bU6d<)w2%6c+ zW_8eRsF<@J7L%*As_c6Sa5W@!^x828E^aPMmknsEe|})hyb}e&{pJIiDd&tr(BW!U z2s#`T76)2z+REdHQGxO~68ediA5i&0=ovluNFcmRhzkV50ub=>1`;cG+imT~1-0Bg z{Uzaw{Zkp_>CDc5rh^2(&9MBfnQSWqSN`z_ukV3!!bN(~Wqs~mlV8~pb6s}LQE5Mc zqOVAx4hRMi;+_Dsvy2{@L=Zr3tCAU$Wn_kpjUS0N7UDi4Q6cDdvP4z~!Eh|g&US;C zw>z^dNkAlc{Dv{z8=B*z%LcUNfbTzX{>6lFwHmily>+%Eri{Tz*-ck2IJxr=D=@9| zkmjSk5-WHBTqP_g8)Qu)`~7;7+F^T@IaY$q;sAdX2!9p=-_8O4bv@$Brd8tIY18^Q zwHv z=S4za0!a3U1P%~@J%LDCpn3aXeJ|BQE$_K9?8UX>p!>$o zyNeKiAY0SQ=-SK;T7Efn=wy{{wqC=S6YA`&9D`CG!p#S}hAB4K^))gc8v37B6r~^v zyExj1?h^sE1vP*H1b%@JeYr2TK#{fYD%=E>IjXa4j> z_{-X11p#X=O5jYCfwj0LmmeOGN0o$uvXGT^OkV99k4;;G7QD+wO+@ekAiOUCJ|vVD z1IedC&}vHHV_iE5D+%m|3GE^Xb`qL0+ZzCO)m=Jv zKip?w7*y9AGQ-IeRtK%hzNWAX#^u6VCcf9Irtz!xyz5gOu-uy?D|5Sj=ONVa(1j-= z6(>z{3m1TRc*BVYjczmK;2Mg1Pn!P=0{VB}uMf=kT0y_03qhZm)m}dr?A8&82fL;C zY|A|C|7#3wbtG}SovXO?UTm`*Nd3D6Dk@E>ogwN?80g}U+4Ph}mM+Bvl@z}^H%|Ro z+!ia#49R*~exGrmai2d`XnX1_V3hbNbse^zgq3Mn3YB-snk;f{qg za+b#~Pmlf7Sg^;(tX?HyJmu`erBRaftYvG9Rs5RFqV2$R+sOow%z|w1p}BNIy%pIG z*70v#>{U=2NTq2pZ!xAmTuGrc!bj4XL zcPj9rzm50W`EUpNpN! z;p)t>8l5S81BNebG{Ix7vdUJ%X0*oyqANPwI8Pkx>CL7o3s~zZ609iZLMo2;)6F8S zD0BEx(J#J$w%I5;Wt115=W^{lX4>G~cU?oBF*_~P#C^u{%b-TF*Vnqe+RqUQ#-chY zNF;$>u4gXzrn7L(UAgu*I|Z%c(p)nmQZuB0%Ee}jE&NaMe-HSUYW$R$F>E%V<;R>c zcEQtt@NcAEl=4AVXg0(0CW#4PQwaLNw}IIL>tS%UU&7-G8$;rkTPhzNYo=h-?o9mUrjyg!~qf%WUXWiOtA?Tbf4gNKV*SiKPwj%q z3iga1f=)bf@yH&wK*Yv_*v61QB{gJ|$t;3Jy6D%C1EC;BcfX>|v>ngT)5p#`juL#z zG%&1Pm*;!kg|fw0Mj@ERN%J@ET<~>9aYqx&TAsU%;D&pkY*yF7q>uGxs`eBWr~^x5 zL34y=+WoTMql?G%G>*BEKGQZks&B5Pzmcj+R7?oZusra~pKjibNC%q7)hy8X>y`^T z!!(2ol04jLP5(h>`*3%=-*~_pbnc9*d=mUP$t_*ECYniE`wDuLE zo{5ItmT!IvT<*exWA_W@eUljG{yhs5*_)WXV0K#f5Hj-uTt16SUt^{ruCw8CE(mbJIO>O9A|C4tO?>uGx zbV4}A{35-lE?^6o#Z#R9BCauXPKqfsnLVOHFepGQJ;doZPha^twOETC(pRa1##Z$9 z0aDMMJ>nylg%^TBW@H%O)d1Yl-aphO)CQtr-L`dV`q542mW50bA2@b`MY3 zN%MF#L$8q)1ZCQ{nldyuKA_~vvjy3VPh3ARNagh!rUtOt-gCOyoO!v9AS=Lw>>L%U zmbplEG~;V&sWx{%BdJ4#t5da(mmTmHc7*r!4oIDy<>_u4Y0rs-ZYhm9=vftWW?MjO z60ZH8HV3r&J;P__q#?O|k(*ARcN`|k$%61dJg!y`RMBv{Iblu%H^Sqx8pE9BE{@GI ztRv_(yO!AJO#^!~*=B*D?HV@&nxnUPL1fi*WpH)CvUtp^GnB%Bt`KxJLiBLEn#8dq z<@Fj~%E>etoR?3r3Oelu!Bs|^<7rM?^jmyh23NcGc&y!UEqJ}DS1A&;gu-O*HH7q2 zfypDqG2MUdg0~&P+^V9mxu-)0_V9+`QmLq-_lDCKbte+vNpd(+BzOps+&%4rONyH$ z-Dd|ZwN#VK7#+sW8m#3*l(sq!3&E7uBa4&f^p(q6{B_uI?ONCzv$u?^196QNJq5bu zi1K6)f*xsN|4UJxVf_&LF{e)`zrH!ErU*q=@*cW5LQXfvkS}1QqGH*9PAkwd8+p}a zk?vF`xLOdrAqakw0Q_X#_YeHDEBef~+O}k6{=MzW(EJ7D^L|BPcCKKINbKKTcgDh_ z5nz}|V1R@q1lT2NYsw^0Qho(WY_3)U_>BM&-x@A#G&)QUCmbe=TiE;r$SMT6u!%7V zL9lyX*@|oYQh8fUMx3(~8!@QBf>HCek*SkWo>{wH6CB&h|0ZxGNRLfD-Uy7Hq>FG9BiuDN@cAEMQr8zCMvd`gs^=mZ_mUGKcV@KZ{%_(rLNa$?> zm`6yzNl?7<$%Zv=yU{7hTF9>o?^~=`K*tY}gd-pAwtsSZG>j_${Pn%RbO>PSNFo?a z00$D{7YJa_OudE<0;#JfW2nuhOUw*hR(1|0B;ZOylCvVi89TV`$bFtW^T|Nh)_ zU)ix{{n{^Jg8M;22a`y86GATnItUPVio0Q9L8JC0N+wJlZ}I>)#iw2<&!vws&zltl zDZPg6;6-pEH~~@?uukL@NNiguc!N{MZivd_m2L2IE}1ukc*Dok3t=&8TFUx_Qi)dn zt2Xsfes8)p^Gq|Gq7{X;3A=ScrLICJFvU@S5@yw41}?K*9Tk?k z3NmmZ=GMbv*$2BODWZp3vnNUppjq3jX&hIOsUlOE_OS1>@5S2R;%d^<@&A%T!hrNg zKzu_`?hPu*Vy@}^4?cK*o!U+nf7uK?TsPg?8<_3=xh)dV;hQBKKD;539(B^$sDaUe zSs!Zr_{E>?+BMm`iAs9|<@PS+a34h4R{(yFfc64{&xsuFNrbzp=8WrdMNNR89|sS zwA{?1d9XMY$CZaxGor7g?V<|6A|Sj+fbS8K%(m|ViT9*gkHF;JoPd?g4cl*9^L{$%;Tg31axK&ckheu*>1^{@vO5JbluP;x5N5U zm#&zj9SBN$0*E~UlRX8%?f~>T0QejwxQ8Ivg8+9Rf;=U1vpm$ul^B4~N&T5@=i6dW z6iYA#g2}F~~B~2)(i4xo(1Qj8{wE(!b31JNot;r?0 zwuwrsDXCe92&;(blM<9Z=~U|c33OZaakIf$?!wD=)c{GqkCr9NR<5FslyTb{D;+dL zxAkM_K({}|T}YdIrS?7qt$ud}N`}Mh`4!UI3jqGS_gZRKz_t1pS{Pu)ewzC^OP6)v zY}=NP?LJ0(erVhJ8T}yGhak(d?!djfAxMYpegGe>?25bXy_Wv4auq4xIsj-;#^Cbb z+ED}<@lD|hz!g0j(0bpk+PfRBUD*}8?!8w14(T3hue<)e(k!n58eTU>lNIK3x7K^S z4Q1#pcnh*zLEH0oIv^%(&&Sx3KT{3pEqV2;zq{gBpc>E>zogX{+>%$I8qizv>Q{ev y#jij$peue!t1q}EuRt}Rx8&8Y{_cujf&U*nk9v}nu=m;k0000Jellyfin +

The Free Software Media System

+ +--- + +

+Logo Banner +
+
+ +GPL 2.0 License + + +Current Release + + +Translation Status + + +Azure Builds + + +Docker Pull Count + +
+ +Donate + + +Submit Feature Requests + + +Chat on Matrix + + +Join our Subreddit + + +Release RSS Feed + + +Master Commits RSS Feed + +

+ +--- + +Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest! + +For further details, please see [our documentation page](https://jellyfin.org/docs/). To receive the latest updates, get help with Jellyfin, and join the community, please visit [one of our communication channels](https://jellyfin.org/docs/general/getting-help). For more information about the project, please see our [about page](https://jellyfin.org/docs/general/about). + +Want to get started?
+Check out our downloads page or our installation guide, then see our quick start guide. You can also build from source.
+ +Something not working right?
+Open an Issue on GitHub.
+ +Want to contribute?
+Check out our contributing choose-your-own-adventure to see where you can help, then see our contributing guide and our community standards.
+ +New idea or improvement?
+Check out our feature request hub.
+ +Don't see Jellyfin in your language?
+Check out our Weblate instance to help translate Jellyfin and its subprojects.
+ + +Detailed Translation Status + + +--- + +## Jellyfin Server + +This repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub [organization](https://github.com/jellyfin/) on GitHub. If you want to contribute, you can start by checking out our [documentation](https://jellyfin.org/docs/general/contributing/index.html) to see what to work on. + +## Server Development + +These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our [guidelines on development contributions](https://jellyfin.org/docs/general/contributing/development.html). Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible. + +### Prerequisites + +Before the project can be built, you must first install the [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system. + +Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download). + +[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) will also need to be installed. + +### Cloning the Repository + +After dependencies are installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should [set up your own fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) of the repository. The following example shows how you can clone the repository directly over HTTPS. + +```bash +git clone https://github.com/jellyfin/jellyfin.git +``` + +### Installing the Web Client + +The server is configured to host the static files required for the [web client](https://github.com/jellyfin/jellyfin-web) in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly. + +Note that it is also possible to [host the web client separately](#hosting-the-web-client-separately) from the web server with some additional configuration, in which case you can skip this step. + +There are three options to get the files for the web client. + +1. Download one of the finished builds from the [Azure DevOps pipeline](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27). You can download the build for a specific release by looking at the [branches tab](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27&_a=summary&repositoryFilter=6&view=branches) of the pipelines page. +2. Build them from source following the instructions on the [jellyfin-web repository](https://github.com/jellyfin/jellyfin-web) +3. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at `C:\Program Files\Jellyfin\Server\jellyfin-web` + +### Running The Server + +The following instructions will help you get the project up and running via the command line, or your preferred IDE. + +#### Running With Visual Studio + +To run the project with Visual Studio you can open the Solution (`.sln`) file and then press `F5` to run the server. + +#### Running With Visual Studio Code + +To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the `Open Folder...` option. + +Second, you need to [install the recommended extensions for the workspace](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions). Note that extension recommendations are classified as either "Workspace Recommendations" or "Other Recommendations", but only the "Workspace Recommendations" are required. + +After the required extensions are installed, you can run the server by pressing `F5`. + +#### Running From The Command Line + +To run the server from the command line you can use the `dotnet run` command. The example below shows how to do this if you have cloned the repository into a directory named `jellyfin` (the default directory name) and should work on all operating systems. + +```bash +cd jellyfin # Move into the repository directory +dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project +``` + +A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the `--help` flag to list details on all the supported command line options. + +1. Build the project + +```bash +dotnet build # Build the project +cd Jellyfin.Server/bin/Debug/net7.0 # Change into the build output directory +``` + +2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`. + +### Running The Tests + +This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests. + +1. Run tests from the command line using `dotnet test` +2. Run tests in Visual Studio using the [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer) +3. Run individual tests in Visual Studio Code using the associated [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests) + +### Advanced Configuration + +The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above. + +#### Hosting The Web Client Separately + +It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) repo for instructions on how to do this. + +To instruct the server not to host the web content, there is a `nowebclient` configuration flag that must be set. This can specified using the command line +switch `--nowebclient` or the environment variable `JELLYFIN_NOWEBCONTENT=true`. + +Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called `Jellyfin.Server (nowebcontent)` that can be selected from the 'Start Debugging' dropdown in the main toolbar. + +**NOTE:** The setup wizard can not be run if the web client is hosted separately. + +--- +

+This project is supported by: +
+
+DigitalOcean +   +JetBrains logo +

diff --git a/apps/jellyfin/versions/10.8.9/config.json b/apps/jellyfin/versions/10.8.9/config.json new file mode 100644 index 000000000..088448ce2 --- /dev/null +++ b/apps/jellyfin/versions/10.8.9/config.json @@ -0,0 +1,33 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 8096, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "媒体文件夹路径", + "labelEn": "Media folder path", + "required": true, + "default": "./data/media", + "envKey": "MEDIA_FOLDER_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "缓存文件夹路径", + "labelEn": "Cache folder path", + "required": true, + "default": "./data/cache", + "envKey": "CACHE_FOLDER_PATH", + "edit": true + } + ] +} diff --git a/apps/jellyfin/versions/10.8.9/data/cache/.gitkeep b/apps/jellyfin/versions/10.8.9/data/cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/10.8.9/data/config/.gitkeep b/apps/jellyfin/versions/10.8.9/data/config/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/10.8.9/data/media/.gitkeep b/apps/jellyfin/versions/10.8.9/data/media/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/10.8.9/docker-compose.yml b/apps/jellyfin/versions/10.8.9/docker-compose.yml new file mode 100644 index 000000000..87083470b --- /dev/null +++ b/apps/jellyfin/versions/10.8.9/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3" +services: + jellyfin: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8096" + volumes: + - "./data/config:/config" + - "${CACHE_FOLDER_PATH}:/cache" + - "${MEDIA_FOLDER_PATH}:/media/media" + image: "jellyfin/jellyfin:10.8.9" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/jellyfin/versions/unstable/README.md b/apps/jellyfin/versions/unstable/README.md new file mode 100644 index 000000000..2362741b4 --- /dev/null +++ b/apps/jellyfin/versions/unstable/README.md @@ -0,0 +1,176 @@ +

Jellyfin

+

The Free Software Media System

+ +--- + +

+Logo Banner +
+
+ +GPL 2.0 License + + +Current Release + + +Translation Status + + +Azure Builds + + +Docker Pull Count + +
+ +Donate + + +Submit Feature Requests + + +Chat on Matrix + + +Join our Subreddit + + +Release RSS Feed + + +Master Commits RSS Feed + +

+ +--- + +Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest! + +For further details, please see [our documentation page](https://jellyfin.org/docs/). To receive the latest updates, get help with Jellyfin, and join the community, please visit [one of our communication channels](https://jellyfin.org/docs/general/getting-help). For more information about the project, please see our [about page](https://jellyfin.org/docs/general/about). + +Want to get started?
+Check out our downloads page or our installation guide, then see our quick start guide. You can also build from source.
+ +Something not working right?
+Open an Issue on GitHub.
+ +Want to contribute?
+Check out our contributing choose-your-own-adventure to see where you can help, then see our contributing guide and our community standards.
+ +New idea or improvement?
+Check out our feature request hub.
+ +Don't see Jellyfin in your language?
+Check out our Weblate instance to help translate Jellyfin and its subprojects.
+ + +Detailed Translation Status + + +--- + +## Jellyfin Server + +This repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub [organization](https://github.com/jellyfin/) on GitHub. If you want to contribute, you can start by checking out our [documentation](https://jellyfin.org/docs/general/contributing/index.html) to see what to work on. + +## Server Development + +These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our [guidelines on development contributions](https://jellyfin.org/docs/general/contributing/development.html). Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible. + +### Prerequisites + +Before the project can be built, you must first install the [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system. + +Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download). + +[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) will also need to be installed. + +### Cloning the Repository + +After dependencies are installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should [set up your own fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) of the repository. The following example shows how you can clone the repository directly over HTTPS. + +```bash +git clone https://github.com/jellyfin/jellyfin.git +``` + +### Installing the Web Client + +The server is configured to host the static files required for the [web client](https://github.com/jellyfin/jellyfin-web) in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly. + +Note that it is also possible to [host the web client separately](#hosting-the-web-client-separately) from the web server with some additional configuration, in which case you can skip this step. + +There are three options to get the files for the web client. + +1. Download one of the finished builds from the [Azure DevOps pipeline](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27). You can download the build for a specific release by looking at the [branches tab](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27&_a=summary&repositoryFilter=6&view=branches) of the pipelines page. +2. Build them from source following the instructions on the [jellyfin-web repository](https://github.com/jellyfin/jellyfin-web) +3. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at `C:\Program Files\Jellyfin\Server\jellyfin-web` + +### Running The Server + +The following instructions will help you get the project up and running via the command line, or your preferred IDE. + +#### Running With Visual Studio + +To run the project with Visual Studio you can open the Solution (`.sln`) file and then press `F5` to run the server. + +#### Running With Visual Studio Code + +To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the `Open Folder...` option. + +Second, you need to [install the recommended extensions for the workspace](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions). Note that extension recommendations are classified as either "Workspace Recommendations" or "Other Recommendations", but only the "Workspace Recommendations" are required. + +After the required extensions are installed, you can run the server by pressing `F5`. + +#### Running From The Command Line + +To run the server from the command line you can use the `dotnet run` command. The example below shows how to do this if you have cloned the repository into a directory named `jellyfin` (the default directory name) and should work on all operating systems. + +```bash +cd jellyfin # Move into the repository directory +dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project +``` + +A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the `--help` flag to list details on all the supported command line options. + +1. Build the project + +```bash +dotnet build # Build the project +cd Jellyfin.Server/bin/Debug/net7.0 # Change into the build output directory +``` + +2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`. + +### Running The Tests + +This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests. + +1. Run tests from the command line using `dotnet test` +2. Run tests in Visual Studio using the [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer) +3. Run individual tests in Visual Studio Code using the associated [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests) + +### Advanced Configuration + +The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above. + +#### Hosting The Web Client Separately + +It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) repo for instructions on how to do this. + +To instruct the server not to host the web content, there is a `nowebclient` configuration flag that must be set. This can specified using the command line +switch `--nowebclient` or the environment variable `JELLYFIN_NOWEBCONTENT=true`. + +Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called `Jellyfin.Server (nowebcontent)` that can be selected from the 'Start Debugging' dropdown in the main toolbar. + +**NOTE:** The setup wizard can not be run if the web client is hosted separately. + +--- +

+This project is supported by: +
+
+DigitalOcean +   +JetBrains logo +

diff --git a/apps/jellyfin/versions/unstable/config.json b/apps/jellyfin/versions/unstable/config.json new file mode 100644 index 000000000..088448ce2 --- /dev/null +++ b/apps/jellyfin/versions/unstable/config.json @@ -0,0 +1,33 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 8096, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "text", + "labelZh": "媒体文件夹路径", + "labelEn": "Media folder path", + "required": true, + "default": "./data/media", + "envKey": "MEDIA_FOLDER_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "缓存文件夹路径", + "labelEn": "Cache folder path", + "required": true, + "default": "./data/cache", + "envKey": "CACHE_FOLDER_PATH", + "edit": true + } + ] +} diff --git a/apps/jellyfin/versions/unstable/data/cache/.gitkeep b/apps/jellyfin/versions/unstable/data/cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/unstable/data/config/.gitkeep b/apps/jellyfin/versions/unstable/data/config/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/unstable/data/media/.gitkeep b/apps/jellyfin/versions/unstable/data/media/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/jellyfin/versions/unstable/docker-compose.yml b/apps/jellyfin/versions/unstable/docker-compose.yml new file mode 100644 index 000000000..b4aad2d38 --- /dev/null +++ b/apps/jellyfin/versions/unstable/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3" +services: + jellyfin: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8096" + volumes: + - "./data/config:/config" + - "${CACHE_FOLDER_PATH}:/cache" + - "${MEDIA_FOLDER_PATH}:/media/media" + image: "jellyfinjellyfinunstable" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/list.json b/apps/list.json index 9903cdefc..cb100a3c8 100644 --- a/apps/list.json +++ b/apps/list.json @@ -35,7 +35,7 @@ "key": "mysql", "name": "MySQL", "tags": ["Database"], - "versions": ["5.7.39","8.0.30"], + "versions": ["5.5.62","5.6.51","5.7.39","8.0.30"], "shortDescZh": "MySQL 开源关系型数据库", "shortDescEn": "Open source relational database management system", "type": "runtime", @@ -333,7 +333,7 @@ "github": "https://github.com/php/php-src", "document": "https://www.php.net/docs.php" }, - { + { "key": "gitea", "name": "Gitea", "tags": ["CI/CD"], @@ -346,6 +346,104 @@ "website": "https://gitea.io/", "github": "https://github.com/go-gitea/gitea", "document": "https://docs.gitea.io/" + }, + { + "key": "qBittorrent", + "name": "qBittorrent", + "tags": ["Tool"], + "versions": ["4.3.5","4.5.2","latest"], + "shortDescZh": "qBittorrent是一个跨平台的开源BitTorrent客户端", + "shortDescEn": "qBittorrent is a cross-platform open source BitTorrent client", + "type": "tool", + "limit": 0, + "crossVersionUpdate": true, + "website": "https://www.qbittorrent.org/", + "github": "https://github.com/qbittorrent/qBittorrent", + "document": "http://wiki.qbittorrent.org/" + }, + { + "key": "jellyfin", + "name": "Jellyfin", + "tags": ["Tool"], + "versions": ["10.8.9","unstable"], + "shortDescZh": "Jellyfin是一套多媒体应用程序软件套装", + "shortDescEn": "Jellyfin is a multimedia application software suite", + "type": "tool", + "limit": 0, + "crossVersionUpdate": true, + "website": "https://jellyfin.org/", + "github": "https://github.com/jellyfin/jellyfin", + "document": "https://jellyfin.org/docs/" + }, + { + "key": "ALS", + "name": "ALS", + "tags": ["Tool"], + "versions": ["latest"], + "shortDescZh": "Another Looking-glass Server,测速服务端", + "shortDescEn": "Another Looking-glass Server,Speed measurement server", + "type": "tool", + "limit": 0, + "crossVersionUpdate": false, + "website": "https://github.com/wikihost-opensource/als", + "github": "https://github.com/wikihost-opensource/als", + "document": "https://github.com/wikihost-opensource/als" + }, + { + "key": "alist", + "name": "alist", + "tags": ["Tool"], + "versions": ["3.16.0","latest"], + "shortDescZh": "一个支持多存储的文件列表程序。", + "shortDescEn": "A file list program that supports multiple storage.", + "type": "tool", + "limit": 0, + "crossVersionUpdate": true, + "website": "https://github.com/alist-org/alist", + "github": "https://github.com/alist-org/alist", + "document": "https://alist.nn.ci/zh/" + }, + { + "key": "watchtower", + "name": "watchtower", + "tags": ["Tool"], + "versions": ["latest"], + "shortDescZh": "自动更新Docker容器基础镜像的工具。", + "shortDescEn": "Tool to automatically update Docker container base images.", + "type": "tool", + "limit": 1, + "crossVersionUpdate": false, + "website": "https://github.com/containrrr/watchtower", + "github": "https://github.com/containrrr/watchtower", + "document": "https://containrrr.dev/watchtower/" + }, + { + "key": "flarum", + "name": "flarum", + "tags": ["WebSite"], + "versions": ["1.7.1","latest"], + "shortDescZh": "新一代的论坛软件,使在线讨论变得有趣。", + "shortDescEn": "The next-generation forum software that makes online discussion fun.", + "type": "website", + "limit": 0, + "crossVersionUpdate": true, + "website": "https://flarum.org/", + "github": "https://github.com/flarum/flarum", + "document": "https://docs.flarum.org/" + }, + { + "key": "baidunetdisk", + "name": "百度网盘", + "tags": ["Tool"], + "versions": ["4.14.6","4.17.7","latest"], + "shortDescZh": "百度网盘是百度推出的一项云存储服务。", + "shortDescEn": "BaiduNetdisk is a cloud storage service launched by Baidu.", + "type": "tool", + "limit": 0, + "crossVersionUpdate": true, + "website": "https://pan.baidu.com/", + "github": "https://github.com/gshang2017/docker/tree/master/baidunetdisk", + "document": "https://github.com/gshang2017/docker/tree/master/baidunetdisk" } ] } diff --git a/apps/mysql/versions/5.5.62/README.md b/apps/mysql/versions/5.5.62/README.md new file mode 100644 index 000000000..7951cf6ae --- /dev/null +++ b/apps/mysql/versions/5.5.62/README.md @@ -0,0 +1,20 @@ +Copyright (c) 2000, 2022, Oracle and/or its affiliates. + +This is a release of MySQL, an SQL database server. + +License information can be found in the LICENSE file. + +In test packages where this file is renamed README-test, the license +file is renamed LICENSE-test. + +This distribution may include materials developed by third parties. +For license and attribution notices for these materials, +please refer to the LICENSE file. + +For further information on MySQL or additional documentation, visit +http://dev.mysql.com/doc/ + +For additional downloads and the source of MySQL, visit +http://dev.mysql.com/downloads/ + +MySQL is brought to you by the MySQL team at Oracle. diff --git a/apps/mysql/versions/5.5.62/conf/my.cnf b/apps/mysql/versions/5.5.62/conf/my.cnf new file mode 100644 index 000000000..f71051076 --- /dev/null +++ b/apps/mysql/versions/5.5.62/conf/my.cnf @@ -0,0 +1,5 @@ +[mysqld] +skip-host-cache +skip-name-resolve +datadir = /var/lib/mysql +!includedir /etc/mysql/conf.d/ diff --git a/apps/mysql/versions/5.5.62/config.json b/apps/mysql/versions/5.5.62/config.json new file mode 100644 index 000000000..1ed30aa10 --- /dev/null +++ b/apps/mysql/versions/5.5.62/config.json @@ -0,0 +1,23 @@ +{ + "formFields": [ + { + "type": "password", + "labelZh": "root用户密码", + "labelEn": "Root Password", + "required": true, + "default": "mysql", + "random": true, + "rule": "paramComplexity", + "envKey": "PANEL_DB_ROOT_PASSWORD" + }, + { + "type": "number", + "labelZh": "端口", + "labelEn": "Port", + "required": true, + "default": 3306, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP" + } + ] +} \ No newline at end of file diff --git a/apps/mysql/versions/5.5.62/docker-compose.yml b/apps/mysql/versions/5.5.62/docker-compose.yml new file mode 100644 index 000000000..b44bd83e3 --- /dev/null +++ b/apps/mysql/versions/5.5.62/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3' + +services: + mysql: + image: mysql:5.5.62 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data/:/var/lib/mysql + - ./conf/my.cnf:/etc/mysql/my.cnf + - ./log:/var/log/mysql + command: + --lower-case-table-names=1 + --character-set-server=utf8 + --collation-server=utf8_general_ci + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/mysql/versions/5.6.51/README.md b/apps/mysql/versions/5.6.51/README.md new file mode 100644 index 000000000..7951cf6ae --- /dev/null +++ b/apps/mysql/versions/5.6.51/README.md @@ -0,0 +1,20 @@ +Copyright (c) 2000, 2022, Oracle and/or its affiliates. + +This is a release of MySQL, an SQL database server. + +License information can be found in the LICENSE file. + +In test packages where this file is renamed README-test, the license +file is renamed LICENSE-test. + +This distribution may include materials developed by third parties. +For license and attribution notices for these materials, +please refer to the LICENSE file. + +For further information on MySQL or additional documentation, visit +http://dev.mysql.com/doc/ + +For additional downloads and the source of MySQL, visit +http://dev.mysql.com/downloads/ + +MySQL is brought to you by the MySQL team at Oracle. diff --git a/apps/mysql/versions/5.6.51/conf/my.cnf b/apps/mysql/versions/5.6.51/conf/my.cnf new file mode 100644 index 000000000..573c347c3 --- /dev/null +++ b/apps/mysql/versions/5.6.51/conf/my.cnf @@ -0,0 +1,33 @@ +# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# +# The MySQL Server configuration file. +# +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html + +# * IMPORTANT: Additional settings that can override those from this file! +# The files must end with '.cnf', otherwise they'll be ignored. +# +!includedir /etc/mysql/conf.d/ +!includedir /etc/mysql/mysql.conf.d/ diff --git a/apps/mysql/versions/5.6.51/config.json b/apps/mysql/versions/5.6.51/config.json new file mode 100644 index 000000000..1ed30aa10 --- /dev/null +++ b/apps/mysql/versions/5.6.51/config.json @@ -0,0 +1,23 @@ +{ + "formFields": [ + { + "type": "password", + "labelZh": "root用户密码", + "labelEn": "Root Password", + "required": true, + "default": "mysql", + "random": true, + "rule": "paramComplexity", + "envKey": "PANEL_DB_ROOT_PASSWORD" + }, + { + "type": "number", + "labelZh": "端口", + "labelEn": "Port", + "required": true, + "default": 3306, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP" + } + ] +} \ No newline at end of file diff --git a/apps/mysql/versions/5.6.51/docker-compose.yml b/apps/mysql/versions/5.6.51/docker-compose.yml new file mode 100644 index 000000000..d12fc640f --- /dev/null +++ b/apps/mysql/versions/5.6.51/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3' + +services: + mysql: + image: mysql:5.6.51 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data:/var/lib/mysql + - ./conf/my.cnf:/etc/mysql/my.cnf + - ./log:/var/log/mysql + command: + --explicit-defaults-for-timestamp=1 + --lower-case-table-names=1 + --character-set-server=utf8 + --collation-server=utf8_general_ci + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/qBittorrent/metadata/logo.png b/apps/qBittorrent/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f75eababcd3e3645036caca1b044c2e815a71efe GIT binary patch literal 37653 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 Z{|7#a453s>Oius+002ovPDHLkV1lFkW7+@! literal 0 HcmV?d00001 diff --git a/apps/qBittorrent/versions/4.3.5/README.md b/apps/qBittorrent/versions/4.3.5/README.md new file mode 100644 index 000000000..a618f7148 --- /dev/null +++ b/apps/qBittorrent/versions/4.3.5/README.md @@ -0,0 +1,73 @@ + +# 本应用介绍 + +基于镜像 +> - https://hub.docker.com/r/jarylc/qbittorrent + +- 数据目录:"./data" +- 默认账号:admin +- 密码:adminadmin +- 开启中文,默认为PT下载做的设置,但未优化参数。 + +> 原项目相关 +>> - https://www.qbittorrent.org/ +>> - https://github.com/qbittorrent/qBittorrent + +# 原项目介绍 + +- qBittorrent是一个跨平台的开源、自由的BitTorrent客户端,其图形用户界面是通过Qt所写,后端使用libtorrent。 +- 由贝尔福- 蒙贝利亚尔理工大学的克里斯托夫·迪梅,在2006年3月开始开发。 + +qBittorrent - A BitTorrent client in Qt +------------------------------------------ + +[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/qbittorrent/qBittorrent?branch=master&svg=true)](https://ci.appveyor.com/project/qbittorrent/qBittorrent) +[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/workflows/GitHub%20Actions%20CI/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) +[![Coverity Status](https://scan.coverity.com/projects/5494/badge.svg)](https://scan.coverity.com/projects/5494) +******************************** +### Description: +qBittorrent is a bittorrent client programmed in C++ / Qt that uses +libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. + +It aims to be a good alternative to all other bittorrent clients +out there. qBittorrent is fast, stable and provides unicode +support as well as many features. + +The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). + +### Installation: +For installation, follow the instructions from INSTALL file, but simple: + +``` +./configure +make && make install +qbittorrent +``` + +will install and execute qBittorrent hopefully without any problem. + +### Public key: +Starting from v3.3.4 all source tarballs and binaries are signed.
+The key currently used is 4096R/[5B7CC9A2](https://pgp.mit.edu/pks/lookup?op=get&search=0x6E4A2D025B7CC9A2) with fingerprint `D8F3DA77AAC6741053599C136E4A2D025B7CC9A2`.
+You can also download it from [here](https://github.com/qbittorrent/qBittorrent/raw/master/5B7CC9A2.asc).
+**PREVIOUSLY** the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer **only**: 4096R/[520EC6F6](https://pgp.mit.edu/pks/lookup?op=get&search=0xA1ACCAE4520EC6F6) with fingerprint `F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6`.
+ +### Misc: +For more information please visit: +https://www.qbittorrent.org + +or our wiki here: +http://wiki.qbittorrent.org + +Use the forum for troubleshooting before reporting bugs: +http://forum.qbittorrent.org + +Please report any bug (or feature request) to: +http://bugs.qbittorrent.org + +Official IRC channel: +[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent) + +------------------------------------------ +sledgehammer999 \ + diff --git a/apps/qBittorrent/versions/4.3.5/config.json b/apps/qBittorrent/versions/4.3.5/config.json new file mode 100644 index 000000000..a4e243f80 --- /dev/null +++ b/apps/qBittorrent/versions/4.3.5/config.json @@ -0,0 +1,43 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 40155, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "number", + "labelZh": "BT端口", + "labelEn": "Peer Port", + "required": true, + "default": 40150, + "rule": "paramPort", + "envKey": "PEER_PORT_VALUE", + "edit": true + }, + { + "type": "text", + "labelZh": "缓存文件夹路径", + "labelEn": "Cache folder path", + "required": true, + "default": "./data/.cache", + "envKey": "CACHE_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "下载文件夹路径", + "labelEn": "Download folder path", + "required": true, + "default": "./data/downloads", + "envKey": "DOWNLOAD_PATH", + "edit": true + } + ] +} diff --git a/apps/qBittorrent/versions/4.3.5/data/.cache/.gitkeep b/apps/qBittorrent/versions/4.3.5/data/.cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.3.5/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/versions/4.3.5/data/.config/qBittorrent/qBittorrent.conf new file mode 100644 index 000000000..5db60da74 --- /dev/null +++ b/apps/qBittorrent/versions/4.3.5/data/.config/qBittorrent/qBittorrent.conf @@ -0,0 +1,75 @@ +[General] +ported_to_new_savepath_system=true + +[AutoRun] +enabled=false +program= + +[Core] +AutoDeleteAddedTorrentFile=Never + +[LegalNotice] +Accepted=true + +[Network] +Cookies=@Invalid() + +[Preferences] +Advanced\IgnoreLimitsLAN=true +Advanced\RecheckOnCompletion=false +Advanced\trackerPort=9000 +Bittorrent\DHT=false +Bittorrent\LSD=false +Bittorrent\MaxConnecs=-1 +Bittorrent\MaxConnecsPerTorrent=-1 +Bittorrent\MaxUploads=-1 +Bittorrent\MaxUploadsPerTorrent=-1 +Bittorrent\PeX=false +Bittorrent\uTP_rate_limited=false +Connection\PortRangeMin=40150 +Connection\ResolvePeerCountries=true +Downloads\SavePath=/data/downloads +Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) +Downloads\StartInPause=true +DynDNS\DomainName=changeme.dyndns.org +DynDNS\Enabled=false +DynDNS\Password= +DynDNS\Service=0 +DynDNS\Username= +General\Locale=zh +MailNotification\email= +MailNotification\enabled=false +MailNotification\password= +MailNotification\req_auth=true +MailNotification\req_ssl=false +MailNotification\sender=qBittorrent_notification@example.com +MailNotification\smtp_server=smtp.changeme.com +MailNotification\username= +Queueing\QueueingEnabled=false +WebUI\Address=* +WebUI\AlternativeUIEnabled=false +WebUI\AuthSubnetWhitelist=@Invalid() +WebUI\AuthSubnetWhitelistEnabled=false +WebUI\BanDuration=3600 +WebUI\CSRFProtection=false +WebUI\ClickjackingProtection=true +WebUI\CustomHTTPHeaders= +WebUI\CustomHTTPHeadersEnabled=false +WebUI\Enabled=true +WebUI\HTTPS\CertificatePath= +WebUI\HTTPS\Enabled=false +WebUI\HTTPS\KeyPath= +WebUI\HostHeaderValidation=true +WebUI\LocalHostAuth=true +WebUI\MaxAuthenticationFailCount=5 +WebUI\Port=40155 +WebUI\RootFolder= +WebUI\SecureCookie=true +WebUI\ServerDomains=* +WebUI\SessionTimeout=3600 +WebUI\UseUPnP=true +WebUI\Username=admin + +[RSS] +AutoDownloader\DownloadRepacks=true +AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/versions/4.3.5/data/.local/.gitkeep b/apps/qBittorrent/versions/4.3.5/data/.local/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.3.5/data/downloads/.gitkeep b/apps/qBittorrent/versions/4.3.5/data/downloads/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.3.5/docker-compose.yml b/apps/qBittorrent/versions/4.3.5/docker-compose.yml new file mode 100644 index 000000000..28ceff48a --- /dev/null +++ b/apps/qBittorrent/versions/4.3.5/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3" +services: + qbittorrent: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + environment: + - UID=1000 + - GID=1000 + - PEER_PORT=40150 + - WEB_PORT=40155 + ports: + - "${PEER_PORT_VALUE}:40150" + - "${PEER_PORT_VALUE}:40150/udp" + - "${PANEL_APP_PORT_HTTP}:40155" + volumes: + - "./data/.config:/data/.config" + - "./data/.local:/data/.local" + - "${CACHE_PATH}:/data/.cache" + - "${DOWNLOAD_PATH}:/data/downloads" + image: "jarylc/qbittorrent:4.3.5_1.2.14" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/qBittorrent/versions/4.5.2/README.md b/apps/qBittorrent/versions/4.5.2/README.md new file mode 100644 index 000000000..a618f7148 --- /dev/null +++ b/apps/qBittorrent/versions/4.5.2/README.md @@ -0,0 +1,73 @@ + +# 本应用介绍 + +基于镜像 +> - https://hub.docker.com/r/jarylc/qbittorrent + +- 数据目录:"./data" +- 默认账号:admin +- 密码:adminadmin +- 开启中文,默认为PT下载做的设置,但未优化参数。 + +> 原项目相关 +>> - https://www.qbittorrent.org/ +>> - https://github.com/qbittorrent/qBittorrent + +# 原项目介绍 + +- qBittorrent是一个跨平台的开源、自由的BitTorrent客户端,其图形用户界面是通过Qt所写,后端使用libtorrent。 +- 由贝尔福- 蒙贝利亚尔理工大学的克里斯托夫·迪梅,在2006年3月开始开发。 + +qBittorrent - A BitTorrent client in Qt +------------------------------------------ + +[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/qbittorrent/qBittorrent?branch=master&svg=true)](https://ci.appveyor.com/project/qbittorrent/qBittorrent) +[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/workflows/GitHub%20Actions%20CI/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) +[![Coverity Status](https://scan.coverity.com/projects/5494/badge.svg)](https://scan.coverity.com/projects/5494) +******************************** +### Description: +qBittorrent is a bittorrent client programmed in C++ / Qt that uses +libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. + +It aims to be a good alternative to all other bittorrent clients +out there. qBittorrent is fast, stable and provides unicode +support as well as many features. + +The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). + +### Installation: +For installation, follow the instructions from INSTALL file, but simple: + +``` +./configure +make && make install +qbittorrent +``` + +will install and execute qBittorrent hopefully without any problem. + +### Public key: +Starting from v3.3.4 all source tarballs and binaries are signed.
+The key currently used is 4096R/[5B7CC9A2](https://pgp.mit.edu/pks/lookup?op=get&search=0x6E4A2D025B7CC9A2) with fingerprint `D8F3DA77AAC6741053599C136E4A2D025B7CC9A2`.
+You can also download it from [here](https://github.com/qbittorrent/qBittorrent/raw/master/5B7CC9A2.asc).
+**PREVIOUSLY** the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer **only**: 4096R/[520EC6F6](https://pgp.mit.edu/pks/lookup?op=get&search=0xA1ACCAE4520EC6F6) with fingerprint `F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6`.
+ +### Misc: +For more information please visit: +https://www.qbittorrent.org + +or our wiki here: +http://wiki.qbittorrent.org + +Use the forum for troubleshooting before reporting bugs: +http://forum.qbittorrent.org + +Please report any bug (or feature request) to: +http://bugs.qbittorrent.org + +Official IRC channel: +[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent) + +------------------------------------------ +sledgehammer999 \ + diff --git a/apps/qBittorrent/versions/4.5.2/config.json b/apps/qBittorrent/versions/4.5.2/config.json new file mode 100644 index 000000000..a4e243f80 --- /dev/null +++ b/apps/qBittorrent/versions/4.5.2/config.json @@ -0,0 +1,43 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 40155, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "number", + "labelZh": "BT端口", + "labelEn": "Peer Port", + "required": true, + "default": 40150, + "rule": "paramPort", + "envKey": "PEER_PORT_VALUE", + "edit": true + }, + { + "type": "text", + "labelZh": "缓存文件夹路径", + "labelEn": "Cache folder path", + "required": true, + "default": "./data/.cache", + "envKey": "CACHE_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "下载文件夹路径", + "labelEn": "Download folder path", + "required": true, + "default": "./data/downloads", + "envKey": "DOWNLOAD_PATH", + "edit": true + } + ] +} diff --git a/apps/qBittorrent/versions/4.5.2/data/.cache/.gitkeep b/apps/qBittorrent/versions/4.5.2/data/.cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.5.2/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/versions/4.5.2/data/.config/qBittorrent/qBittorrent.conf new file mode 100644 index 000000000..5db60da74 --- /dev/null +++ b/apps/qBittorrent/versions/4.5.2/data/.config/qBittorrent/qBittorrent.conf @@ -0,0 +1,75 @@ +[General] +ported_to_new_savepath_system=true + +[AutoRun] +enabled=false +program= + +[Core] +AutoDeleteAddedTorrentFile=Never + +[LegalNotice] +Accepted=true + +[Network] +Cookies=@Invalid() + +[Preferences] +Advanced\IgnoreLimitsLAN=true +Advanced\RecheckOnCompletion=false +Advanced\trackerPort=9000 +Bittorrent\DHT=false +Bittorrent\LSD=false +Bittorrent\MaxConnecs=-1 +Bittorrent\MaxConnecsPerTorrent=-1 +Bittorrent\MaxUploads=-1 +Bittorrent\MaxUploadsPerTorrent=-1 +Bittorrent\PeX=false +Bittorrent\uTP_rate_limited=false +Connection\PortRangeMin=40150 +Connection\ResolvePeerCountries=true +Downloads\SavePath=/data/downloads +Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) +Downloads\StartInPause=true +DynDNS\DomainName=changeme.dyndns.org +DynDNS\Enabled=false +DynDNS\Password= +DynDNS\Service=0 +DynDNS\Username= +General\Locale=zh +MailNotification\email= +MailNotification\enabled=false +MailNotification\password= +MailNotification\req_auth=true +MailNotification\req_ssl=false +MailNotification\sender=qBittorrent_notification@example.com +MailNotification\smtp_server=smtp.changeme.com +MailNotification\username= +Queueing\QueueingEnabled=false +WebUI\Address=* +WebUI\AlternativeUIEnabled=false +WebUI\AuthSubnetWhitelist=@Invalid() +WebUI\AuthSubnetWhitelistEnabled=false +WebUI\BanDuration=3600 +WebUI\CSRFProtection=false +WebUI\ClickjackingProtection=true +WebUI\CustomHTTPHeaders= +WebUI\CustomHTTPHeadersEnabled=false +WebUI\Enabled=true +WebUI\HTTPS\CertificatePath= +WebUI\HTTPS\Enabled=false +WebUI\HTTPS\KeyPath= +WebUI\HostHeaderValidation=true +WebUI\LocalHostAuth=true +WebUI\MaxAuthenticationFailCount=5 +WebUI\Port=40155 +WebUI\RootFolder= +WebUI\SecureCookie=true +WebUI\ServerDomains=* +WebUI\SessionTimeout=3600 +WebUI\UseUPnP=true +WebUI\Username=admin + +[RSS] +AutoDownloader\DownloadRepacks=true +AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/versions/4.5.2/data/.local/.gitkeep b/apps/qBittorrent/versions/4.5.2/data/.local/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.5.2/data/downloads/.gitkeep b/apps/qBittorrent/versions/4.5.2/data/downloads/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/4.5.2/docker-compose.yml b/apps/qBittorrent/versions/4.5.2/docker-compose.yml new file mode 100644 index 000000000..f6fefd48a --- /dev/null +++ b/apps/qBittorrent/versions/4.5.2/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3" +services: + qbittorrent: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + environment: + - UID=1000 + - GID=1000 + - PEER_PORT=40150 + - WEB_PORT=40155 + ports: + - "${PEER_PORT_VALUE}:40150" + - "${PEER_PORT_VALUE}:40150/udp" + - "${PANEL_APP_PORT_HTTP}:40155" + volumes: + - "./data/.config:/data/.config" + - "./data/.local:/data/.local" + - "${CACHE_PATH}:/data/.cache" + - "${DOWNLOAD_PATH}:/data/downloads" + image: "jarylc/qbittorrent:4.5.2_2.0.8" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/qBittorrent/versions/latest/README.md b/apps/qBittorrent/versions/latest/README.md new file mode 100644 index 000000000..a618f7148 --- /dev/null +++ b/apps/qBittorrent/versions/latest/README.md @@ -0,0 +1,73 @@ + +# 本应用介绍 + +基于镜像 +> - https://hub.docker.com/r/jarylc/qbittorrent + +- 数据目录:"./data" +- 默认账号:admin +- 密码:adminadmin +- 开启中文,默认为PT下载做的设置,但未优化参数。 + +> 原项目相关 +>> - https://www.qbittorrent.org/ +>> - https://github.com/qbittorrent/qBittorrent + +# 原项目介绍 + +- qBittorrent是一个跨平台的开源、自由的BitTorrent客户端,其图形用户界面是通过Qt所写,后端使用libtorrent。 +- 由贝尔福- 蒙贝利亚尔理工大学的克里斯托夫·迪梅,在2006年3月开始开发。 + +qBittorrent - A BitTorrent client in Qt +------------------------------------------ + +[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/qbittorrent/qBittorrent?branch=master&svg=true)](https://ci.appveyor.com/project/qbittorrent/qBittorrent) +[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/workflows/GitHub%20Actions%20CI/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) +[![Coverity Status](https://scan.coverity.com/projects/5494/badge.svg)](https://scan.coverity.com/projects/5494) +******************************** +### Description: +qBittorrent is a bittorrent client programmed in C++ / Qt that uses +libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. + +It aims to be a good alternative to all other bittorrent clients +out there. qBittorrent is fast, stable and provides unicode +support as well as many features. + +The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). + +### Installation: +For installation, follow the instructions from INSTALL file, but simple: + +``` +./configure +make && make install +qbittorrent +``` + +will install and execute qBittorrent hopefully without any problem. + +### Public key: +Starting from v3.3.4 all source tarballs and binaries are signed.
+The key currently used is 4096R/[5B7CC9A2](https://pgp.mit.edu/pks/lookup?op=get&search=0x6E4A2D025B7CC9A2) with fingerprint `D8F3DA77AAC6741053599C136E4A2D025B7CC9A2`.
+You can also download it from [here](https://github.com/qbittorrent/qBittorrent/raw/master/5B7CC9A2.asc).
+**PREVIOUSLY** the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer **only**: 4096R/[520EC6F6](https://pgp.mit.edu/pks/lookup?op=get&search=0xA1ACCAE4520EC6F6) with fingerprint `F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6`.
+ +### Misc: +For more information please visit: +https://www.qbittorrent.org + +or our wiki here: +http://wiki.qbittorrent.org + +Use the forum for troubleshooting before reporting bugs: +http://forum.qbittorrent.org + +Please report any bug (or feature request) to: +http://bugs.qbittorrent.org + +Official IRC channel: +[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent) + +------------------------------------------ +sledgehammer999 \ + diff --git a/apps/qBittorrent/versions/latest/config.json b/apps/qBittorrent/versions/latest/config.json new file mode 100644 index 000000000..a4e243f80 --- /dev/null +++ b/apps/qBittorrent/versions/latest/config.json @@ -0,0 +1,43 @@ + +{ + "formFields": [ + { + "type": "number", + "labelZh": "网页端口", + "labelEn": "WebUI Port", + "required": true, + "default": 40155, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP", + "edit": true + }, + { + "type": "number", + "labelZh": "BT端口", + "labelEn": "Peer Port", + "required": true, + "default": 40150, + "rule": "paramPort", + "envKey": "PEER_PORT_VALUE", + "edit": true + }, + { + "type": "text", + "labelZh": "缓存文件夹路径", + "labelEn": "Cache folder path", + "required": true, + "default": "./data/.cache", + "envKey": "CACHE_PATH", + "edit": true + }, + { + "type": "text", + "labelZh": "下载文件夹路径", + "labelEn": "Download folder path", + "required": true, + "default": "./data/downloads", + "envKey": "DOWNLOAD_PATH", + "edit": true + } + ] +} diff --git a/apps/qBittorrent/versions/latest/data/.cache/.gitkeep b/apps/qBittorrent/versions/latest/data/.cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/latest/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/versions/latest/data/.config/qBittorrent/qBittorrent.conf new file mode 100644 index 000000000..5db60da74 --- /dev/null +++ b/apps/qBittorrent/versions/latest/data/.config/qBittorrent/qBittorrent.conf @@ -0,0 +1,75 @@ +[General] +ported_to_new_savepath_system=true + +[AutoRun] +enabled=false +program= + +[Core] +AutoDeleteAddedTorrentFile=Never + +[LegalNotice] +Accepted=true + +[Network] +Cookies=@Invalid() + +[Preferences] +Advanced\IgnoreLimitsLAN=true +Advanced\RecheckOnCompletion=false +Advanced\trackerPort=9000 +Bittorrent\DHT=false +Bittorrent\LSD=false +Bittorrent\MaxConnecs=-1 +Bittorrent\MaxConnecsPerTorrent=-1 +Bittorrent\MaxUploads=-1 +Bittorrent\MaxUploadsPerTorrent=-1 +Bittorrent\PeX=false +Bittorrent\uTP_rate_limited=false +Connection\PortRangeMin=40150 +Connection\ResolvePeerCountries=true +Downloads\SavePath=/data/downloads +Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) +Downloads\StartInPause=true +DynDNS\DomainName=changeme.dyndns.org +DynDNS\Enabled=false +DynDNS\Password= +DynDNS\Service=0 +DynDNS\Username= +General\Locale=zh +MailNotification\email= +MailNotification\enabled=false +MailNotification\password= +MailNotification\req_auth=true +MailNotification\req_ssl=false +MailNotification\sender=qBittorrent_notification@example.com +MailNotification\smtp_server=smtp.changeme.com +MailNotification\username= +Queueing\QueueingEnabled=false +WebUI\Address=* +WebUI\AlternativeUIEnabled=false +WebUI\AuthSubnetWhitelist=@Invalid() +WebUI\AuthSubnetWhitelistEnabled=false +WebUI\BanDuration=3600 +WebUI\CSRFProtection=false +WebUI\ClickjackingProtection=true +WebUI\CustomHTTPHeaders= +WebUI\CustomHTTPHeadersEnabled=false +WebUI\Enabled=true +WebUI\HTTPS\CertificatePath= +WebUI\HTTPS\Enabled=false +WebUI\HTTPS\KeyPath= +WebUI\HostHeaderValidation=true +WebUI\LocalHostAuth=true +WebUI\MaxAuthenticationFailCount=5 +WebUI\Port=40155 +WebUI\RootFolder= +WebUI\SecureCookie=true +WebUI\ServerDomains=* +WebUI\SessionTimeout=3600 +WebUI\UseUPnP=true +WebUI\Username=admin + +[RSS] +AutoDownloader\DownloadRepacks=true +AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/versions/latest/data/.local/.gitkeep b/apps/qBittorrent/versions/latest/data/.local/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/latest/data/downloads/.gitkeep b/apps/qBittorrent/versions/latest/data/downloads/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/apps/qBittorrent/versions/latest/docker-compose.yml b/apps/qBittorrent/versions/latest/docker-compose.yml new file mode 100644 index 000000000..8dc7b31ba --- /dev/null +++ b/apps/qBittorrent/versions/latest/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3" +services: + qbittorrent: + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + environment: + - UID=1000 + - GID=1000 + - PEER_PORT=40150 + - WEB_PORT=40155 + ports: + - "${PEER_PORT_VALUE}:40150" + - "${PEER_PORT_VALUE}:40150/udp" + - "${PANEL_APP_PORT_HTTP}:40155" + volumes: + - "./data/.config:/data/.config" + - "./data/.local:/data/.local" + - "${CACHE_PATH}:/data/.cache" + - "${DOWNLOAD_PATH}:/data/downloads" + image: "jarylc/qbittorrent:latest" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/watchtower/metadata/logo.png b/apps/watchtower/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4987592bc6fb7c86268af7563525e7cda000309d GIT binary patch literal 17730 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 N002ovPDHLkV1h0)=&%3) literal 0 HcmV?d00001 diff --git a/apps/watchtower/versions/latest/README.md b/apps/watchtower/versions/latest/README.md new file mode 100644 index 000000000..6f3486141 --- /dev/null +++ b/apps/watchtower/versions/latest/README.md @@ -0,0 +1,175 @@ +
+ + + # Watchtower + + A process for automating Docker container base image updates. +

+ + [![Circle CI](https://circleci.com/gh/containrrr/watchtower.svg?style=shield)](https://circleci.com/gh/containrrr/watchtower) + [![codecov](https://codecov.io/gh/containrrr/watchtower/branch/main/graph/badge.svg)](https://codecov.io/gh/containrrr/watchtower) + [![GoDoc](https://godoc.org/github.com/containrrr/watchtower?status.svg)](https://godoc.org/github.com/containrrr/watchtower) + [![Go Report Card](https://goreportcard.com/badge/github.com/containrrr/watchtower)](https://goreportcard.com/report/github.com/containrrr/watchtower) + [![latest version](https://img.shields.io/github/tag/containrrr/watchtower.svg)](https://github.com/containrrr/watchtower/releases) + [![Apache-2.0 License](https://img.shields.io/github/license/containrrr/watchtower.svg)](https://www.apache.org/licenses/LICENSE-2.0) + [![Codacy Badge](https://app.codacy.com/project/badge/Grade/1c48cfb7646d4009aa8c6f71287670b8)](https://www.codacy.com/gh/containrrr/watchtower/dashboard?utm_source=github.com&utm_medium=referral&utm_content=containrrr/watchtower&utm_campaign=Badge_Grade) + [![All Contributors](https://img.shields.io/github/all-contributors/containrrr/watchtower)](#contributors) + [![Pulls from DockerHub](https://img.shields.io/docker/pulls/containrrr/watchtower.svg)](https://hub.docker.com/r/containrrr/watchtower) + +
+ +## Quick Start + +With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry. + +Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. Run the watchtower container with the following command: + +``` +$ docker run --detach \ + --name watchtower \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower +``` + +## Documentation +The full documentation is available at https://containrrr.dev/watchtower. + +## Contributors + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
James
James

⚠️ 🤔
Florian
Florian

👀 📖
Brian DeHamer
Brian DeHamer

💻 🚧
Ross Cadogan
Ross Cadogan

💻
stffabi
stffabi

💻 🚧
Austin
Austin

📖
David Gardner
David Gardner

👀 📖
Tanguy ⧓ Herrmann
Tanguy ⧓ Herrmann

💻
Rodrigo Damazio Bovendorp
Rodrigo Damazio Bovendorp

💻 📖
Ryan Kuba
Ryan Kuba

🚇
cnrmck
cnrmck

📖
Harry Walter
Harry Walter

💻
Robotex
Robotex

📖
Gerald Pape
Gerald Pape

📖
fomk
fomk

💻
Sven Gottwald
Sven Gottwald

🚇
techknowlogick
techknowlogick

💻
waja
waja

📖
Scott Albertson
Scott Albertson

📖
Jason Huddleston
Jason Huddleston

📖
Napster
Napster

💻
Maxim
Maxim

💻 📖
Max Schmitt
Max Schmitt

📖
cron410
cron410

📖
Paulo Henrique
Paulo Henrique

📖
Kaleb Elwert
Kaleb Elwert

📖
Bill Butler
Bill Butler

📖
Mario Tacke
Mario Tacke

💻
Mark Woodbridge
Mark Woodbridge

💻
Simon Aronsson
Simon Aronsson

💻 🚧 👀 📖
Ansem93
Ansem93

📖
Luka Peschke
Luka Peschke

💻 📖
Zois Pagoulatos
Zois Pagoulatos

💻 👀 🚧
Alexandre Menif
Alexandre Menif

💻
Andrey
Andrey

📖
Armando Lüscher
Armando Lüscher

📖
Ryan Budke
Ryan Budke

📖
Kaloyan Raev
Kaloyan Raev

💻 ⚠️
sixth
sixth

📖
Gina Häußge
Gina Häußge

💻
Max H.
Max H.

💻
Jungkook Park
Jungkook Park

📖
Jan Kristof Nidzwetzki
Jan Kristof Nidzwetzki

📖
lukas
lukas

💻
Ameya Shenoy
Ameya Shenoy

💻
Raymon de Looff
Raymon de Looff

💻
John Clayton
John Clayton

💻
Germs2004
Germs2004

📖
Lukas Willburger
Lukas Willburger

💻
Oliver Cervera
Oliver Cervera

📖
Victor Moura
Victor Moura

⚠️ 💻 📖
Maximilian Brandau
Maximilian Brandau

💻 ⚠️
Andrew
Andrew

📖
sixcorners
sixcorners

📖
nils måsén
nils måsén

📖 💻
Arne Jørgensen
Arne Jørgensen

⚠️ 👀
PatSki123
PatSki123

📖
Valentine Zavadsky
Valentine Zavadsky

💻 📖 ⚠️
Alexander Voronin
Alexander Voronin

💻 🐛
Oliver Mueller
Oliver Mueller

📖
Sebastiaan Tammer
Sebastiaan Tammer

💻
miosame
miosame

📖
Andrew Metzger
Andrew Metzger

🐛 💡
Pierre Grimaud
Pierre Grimaud

📖
Matt Doran
Matt Doran

📖
MihailITPlace
MihailITPlace

💻
bugficks
bugficks

💻 📖
Michael
Michael

💻
D. Domig
D. Domig

📖
Ben Osheroff
Ben Osheroff

💻
David H.
David H.

💻
Chander Ganesan
Chander Ganesan

📖
yrien30
yrien30

💻
ksurl
ksurl

📖 💻 🚇
rg9400
rg9400

💻
Turtle Kalus
Turtle Kalus

💻
Srihari Thalla
Srihari Thalla

📖
Thomas Gaudin
Thomas Gaudin

📖
hydrargyrum
hydrargyrum

📖
Reinout van Rees
Reinout van Rees

📖
DasSkelett
DasSkelett

💻
zenjabba
zenjabba

📖
Dan Quan
Dan Quan

📖
modem7
modem7

📖
Igor Zibarev
Igor Zibarev

💻
Patrice
Patrice

💻
James White
James White

📖
Dirk Kok
Dirk Kok

💻
EDIflyer
EDIflyer

📖
Jauder Ho
Jauder Ho

💻
Tamal Das
Tamal Das

📖
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/apps/watchtower/versions/latest/config.json b/apps/watchtower/versions/latest/config.json new file mode 100644 index 000000000..d8c4e3f47 --- /dev/null +++ b/apps/watchtower/versions/latest/config.json @@ -0,0 +1,30 @@ +{ + "formFields": [ + { + "type": "text", + "labelZh": "环境参数(以;分割)", + "labelEn": "Environmental parameters (split by ;)", + "required": true, + "default": "WATCHTOWER_NO_STARTUP_MESSAGE", + "envKey": "ENV1", + "edit": true + }, + { + "type": "text", + "labelZh": "命令参数(以空格分割)", + "labelEn": "Command parameters (separated by spaces)", + "required": true, + "default": "--interval 3600 --cleanup", + "envKey": "COMMAND1", + "edit": true + }, + { + "type": "text", + "labelZh": "更多参数命令看官方文档获取", + "labelEn": "See the official documentation for more parameter commands", + "required": false, + "default": "这是一个提示/This is a tip", + "edit": false + } + ] +} diff --git a/apps/watchtower/versions/latest/docker-compose.yml b/apps/watchtower/versions/latest/docker-compose.yml new file mode 100644 index 000000000..cfce3f9f5 --- /dev/null +++ b/apps/watchtower/versions/latest/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3" +services: + watchtower: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - ${ENV1} + command: ${COMMAND1} + image: containrrr/watchtower + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true