From fa577040281e9366e1bd2bc129addcceeb9c0c81 Mon Sep 17 00:00:00 2001 From: ms Date: Thu, 5 Dec 2024 18:28:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=20Homarr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/README.md | 3 +++ README.md | 1 + apps/homarr/0.15.7/data.yml | 17 ++++++++++++ apps/homarr/0.15.7/docker-compose.yml | 22 ++++++++++++++++ apps/homarr/0.15.7/envs/default.env | 2 ++ apps/homarr/0.15.7/envs/global.env | 2 ++ apps/homarr/0.15.7/scripts/init.sh | 17 ++++++++++++ apps/homarr/0.15.7/scripts/uninstall.sh | 10 +++++++ apps/homarr/0.15.7/scripts/upgrade.sh | 17 ++++++++++++ apps/homarr/README.md | 33 ++++++++++++++++++++++++ apps/homarr/data.yml | 14 ++++++++++ apps/homarr/logo.png | Bin 0 -> 16957 bytes 12 files changed, 138 insertions(+) create mode 100644 apps/homarr/0.15.7/data.yml create mode 100644 apps/homarr/0.15.7/docker-compose.yml create mode 100644 apps/homarr/0.15.7/envs/default.env create mode 100644 apps/homarr/0.15.7/envs/global.env create mode 100644 apps/homarr/0.15.7/scripts/init.sh create mode 100644 apps/homarr/0.15.7/scripts/uninstall.sh create mode 100644 apps/homarr/0.15.7/scripts/upgrade.sh create mode 100644 apps/homarr/README.md create mode 100644 apps/homarr/data.yml create mode 100644 apps/homarr/logo.png diff --git a/.github/README.md b/.github/README.md index 9da24aa3d..00b9661c6 100644 --- a/.github/README.md +++ b/.github/README.md @@ -64,6 +64,7 @@ | 🟢 | | Gitea | https://gitea.io/ | 私有、快速、可靠的 DevOps 平台 | Gitea | | 🟢 | | Gitea Runner | https://gitea.io/ | 【Runner】私有、快速、可靠的 DevOps 平台 | Gitea | | 🟢 | | Halo | https://halo.run/ | 强大易用的开源建站工具 | | +| 🟢 | | Homarr | https://homarr.dev/ | 一个时尚、现代化的仪表板 | | | 🟢 | | Iframely | https://iframely.com/ | 响应式 Web 嵌入和 URL 元的 Iframely API | | | 🟢 | | Immich | https://immich.app/ | 【完整版本】高性能自托管照片和视频管理解决方案 | Immich | | 🟢 | | Immich-Server | https://immich.app/ | 【主服务模块】高性能自托管照片和视频管理解决方案 | Immich | @@ -146,6 +147,8 @@ > 以上排序不分先后,按照字母顺序排列。 > > 维护状态:🟢 维护中 🔴 未维护 🟡 表示不定期维护 + + --- ## 1Pane 导入应用商店 diff --git a/README.md b/README.md index e01b5b0db..5c55236ac 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ | 🟢 | | Gitea | https://gitea.io/ | 私有、快速、可靠的 DevOps 平台 | Gitea | | 🟢 | | Gitea Runner | https://gitea.io/ | 【Runner】私有、快速、可靠的 DevOps 平台 | Gitea | | 🟢 | | Halo | https://halo.run/ | 强大易用的开源建站工具 | | +| 🟢 | | Homarr | https://homarr.dev/ | 一个时尚、现代化的仪表板 | | | 🟢 | | Iframely | https://iframely.com/ | 响应式 Web 嵌入和 URL 元的 Iframely API | | | 🟢 | | Immich | https://immich.app/ | 【完整版本】高性能自托管照片和视频管理解决方案 | Immich | | 🟢 | | Immich-Server | https://immich.app/ | 【主服务模块】高性能自托管照片和视频管理解决方案 | Immich | diff --git a/apps/homarr/0.15.7/data.yml b/apps/homarr/0.15.7/data.yml new file mode 100644 index 000000000..d4f817f91 --- /dev/null +++ b/apps/homarr/0.15.7/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/baota" + edit: true + envKey: BAOTA_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 7575 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/apps/homarr/0.15.7/docker-compose.yml b/apps/homarr/0.15.7/docker-compose.yml new file mode 100644 index 000000000..2d0f99524 --- /dev/null +++ b/apps/homarr/0.15.7/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true + +services: + baota: + image: ghcr.io/ajnart/homarr:0.15.7 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + network_mode: ${NETWORK_MODE} + ports: + - ${PANEL_APP_PORT_HTTP}:7575 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ${HOMARR_ROOT_PATH}/configs:/app/data/configs + - ${HOMARR_ROOT_PATH}/icons:/app/public/icons + - ${HOMARR_ROOT_PATH}/data:/data diff --git a/apps/homarr/0.15.7/envs/default.env b/apps/homarr/0.15.7/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/homarr/0.15.7/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/homarr/0.15.7/envs/global.env b/apps/homarr/0.15.7/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/homarr/0.15.7/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/homarr/0.15.7/scripts/init.sh b/apps/homarr/0.15.7/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/homarr/0.15.7/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/homarr/0.15.7/scripts/uninstall.sh b/apps/homarr/0.15.7/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/homarr/0.15.7/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/homarr/0.15.7/scripts/upgrade.sh b/apps/homarr/0.15.7/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/homarr/0.15.7/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/homarr/README.md b/apps/homarr/README.md new file mode 100644 index 000000000..d3a9f9285 --- /dev/null +++ b/apps/homarr/README.md @@ -0,0 +1,33 @@ +# homarr + +一个时尚、现代化的仪表板 + +![homarr](https://file.lifebus.top/imgs/homarr_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 特性 + +🖌️ 通过广泛的拖放网格系统进行高度可定制 + +✨ 与您最喜欢的自托管应用程序无缝集成 + +📌 简单快速的应用程序管理 - 不涉及 YAML + +🙊 先进的机密管理系统,增强安全性 + +📄 详细的文档和活跃的社区 + +🔍 立即搜索网络或支持的集成 + +🏴§筛选偢筛选偮筛选偩筛选偲筛选偿使用内置状态系统监控您的应用程序 + +🦞 全面的内置图标选择器,包含 7000 多个图标 + +🐳 使用 Docker、unRAID 和 Synology 轻松部署 + +🚀 与任何主要消费类硬件兼容(x86、Raspberry Pi、旧笔记本电脑......) + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/homarr/data.yml b/apps/homarr/data.yml new file mode 100644 index 000000000..1c57a4436 --- /dev/null +++ b/apps/homarr/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: homarr + name: Homarr + tags: + - WebSite + - Local + shortDescZh: 一个时尚、现代化的仪表板 + shortDescEn: A stylish, modern dashboard + type: website + crossVersionUpdate: true + limit: 0 + website: https://homarr.dev/ + github: https://github.com/ajnart/homarr/ + document: https://homarr.dev/ diff --git a/apps/homarr/logo.png b/apps/homarr/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d76809e3059bc10b42df2c994e19216c8bcd8d7d GIT binary patch literal 16957 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 literal 0 HcmV?d00001