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 9da24aa3..00b9661c 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 e01b5b0d..5c55236a 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 00000000..d4f817f9 --- /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 00000000..2d0f9952 --- /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 00000000..cd05f46e --- /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 00000000..e10989fe --- /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 00000000..07fb8c3f --- /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 00000000..c86c4fbc --- /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 00000000..07fb8c3f --- /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 00000000..d3a9f928 --- /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 00000000..1c57a443 --- /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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 P00000NkvXXu0mjfnkS{P literal 0 KcmV+b0RR6000031