From bccd51347cc1793f25bba275d8335a4a689e6c23 Mon Sep 17 00:00:00 2001 From: QYG2297248353 Date: Mon, 17 Feb 2025 03:25:11 +0000 Subject: [PATCH] Processed apps directory via GitHub Actions --- appstore/glance/0.7.2/scripts/init.sh | 6 +- appstore/glance/0.7.2/scripts/upgrade.sh | 8 +- appstore/jellyfin/{10.10.5 => 10.10.6}/.env | 0 .../jellyfin/{10.10.5 => 10.10.6}/data.yml | 0 .../{10.10.5 => 10.10.6}/docker-compose.yml | 2 +- .../{10.10.5 => 10.10.6}/envs/default.env | 0 .../{10.10.5 => 10.10.6}/envs/global.env | 0 .../{10.10.5 => 10.10.6}/scripts/init.sh | 0 .../{10.10.5 => 10.10.6}/scripts/uninstall.sh | 0 .../{10.10.5 => 10.10.6}/scripts/upgrade.sh | 0 appstore/onedev/{11.6.14 => 11.6.15}/.env | 0 appstore/onedev/{11.6.14 => 11.6.15}/data.yml | 0 .../{11.6.14 => 11.6.15}/docker-compose.yml | 2 +- .../{11.6.14 => 11.6.15}/envs/default.env | 0 .../{11.6.14 => 11.6.15}/envs/global.env | 0 .../{11.6.14 => 11.6.15}/envs/onedev.env | 0 .../{11.6.14 => 11.6.15}/scripts/init.sh | 0 .../{11.6.14 => 11.6.15}/scripts/uninstall.sh | 0 .../{11.6.14 => 11.6.15}/scripts/upgrade.sh | 0 appstore/stream-rec-backend/main/.env | 12 +++ appstore/stream-rec-backend/main/data.yml | 32 ++++++++ .../main/docker-compose.yml | 24 ++++++ .../stream-rec-backend/main/envs/default.env | 2 + .../stream-rec-backend/main/envs/global.env | 2 + .../stream-rec-backend/main/scripts/init.sh | 17 +++++ .../main/scripts/uninstall.sh | 10 +++ .../main/scripts/upgrade.sh | 17 +++++ appstore/stream-rec-frontend/main/.env | 18 +++++ appstore/stream-rec-frontend/main/data.yml | 46 ++++++++++++ .../main/docker-compose.yml | 17 +++++ .../stream-rec-frontend/main/envs/default.env | 2 + .../stream-rec-frontend/main/envs/global.env | 2 + .../stream-rec-frontend/main/scripts/init.sh | 17 +++++ .../main/scripts/uninstall.sh | 10 +++ .../main/scripts/upgrade.sh | 17 +++++ appstore/stream-rec/main/.env | 27 +++++++ appstore/stream-rec/main/data.yml | 69 ++++++++++++++++++ appstore/stream-rec/main/docker-compose.yml | 46 ++++++++++++ appstore/stream-rec/main/envs/default.env | 2 + appstore/stream-rec/main/envs/global.env | 2 + appstore/stream-rec/main/scripts/init.sh | 17 +++++ appstore/stream-rec/main/scripts/uninstall.sh | 10 +++ appstore/stream-rec/main/scripts/upgrade.sh | 17 +++++ appstore/super-productivity/11.1.3/.env | 6 ++ .../11.1.3/conf/webdav.yaml | 13 ++++ appstore/super-productivity/11.1.3/data.yml | 17 +++++ .../11.1.3/docker-compose.yml | 31 ++++++++ .../11.1.3/envs/default.env | 2 + .../super-productivity/11.1.3/envs/global.env | 2 + .../super-productivity/11.1.3/scripts/init.sh | 23 ++++++ .../11.1.3/scripts/uninstall.sh | 10 +++ .../11.1.3/scripts/upgrade.sh | 25 +++++++ appstore/super-productivity/README.md | 27 +++++++ appstore/super-productivity/data.yml | 14 ++++ appstore/super-productivity/logo.png | Bin 0 -> 37423 bytes dockge/jellyfin/docker-compose.yml | 2 +- dockge/onedev/docker-compose.yml | 2 +- dockge/stream-rec-backend_main/.env | 12 +++ .../docker-compose.yml | 24 ++++++ .../stream-rec-backend_main/envs/default.env | 2 + .../stream-rec-backend_main/envs/global.env | 2 + dockge/stream-rec-frontend_main/.env | 18 +++++ .../docker-compose.yml | 17 +++++ .../stream-rec-frontend_main/envs/default.env | 2 + .../stream-rec-frontend_main/envs/global.env | 2 + dockge/stream-rec_main/.env | 27 +++++++ dockge/stream-rec_main/docker-compose.yml | 46 ++++++++++++ dockge/stream-rec_main/envs/default.env | 2 + dockge/stream-rec_main/envs/global.env | 2 + dockge/super-productivity/.env | 6 ++ dockge/super-productivity/conf/webdav.yaml | 13 ++++ dockge/super-productivity/docker-compose.yml | 31 ++++++++ dockge/super-productivity/envs/default.env | 2 + dockge/super-productivity/envs/global.env | 2 + 74 files changed, 826 insertions(+), 11 deletions(-) rename appstore/jellyfin/{10.10.5 => 10.10.6}/.env (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/data.yml (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/docker-compose.yml (96%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/envs/default.env (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/envs/global.env (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/scripts/init.sh (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/scripts/uninstall.sh (100%) rename appstore/jellyfin/{10.10.5 => 10.10.6}/scripts/upgrade.sh (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/.env (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/data.yml (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/docker-compose.yml (95%) rename appstore/onedev/{11.6.14 => 11.6.15}/envs/default.env (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/envs/global.env (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/envs/onedev.env (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/scripts/init.sh (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/scripts/uninstall.sh (100%) rename appstore/onedev/{11.6.14 => 11.6.15}/scripts/upgrade.sh (100%) create mode 100644 appstore/stream-rec-backend/main/.env create mode 100644 appstore/stream-rec-backend/main/data.yml create mode 100644 appstore/stream-rec-backend/main/docker-compose.yml create mode 100644 appstore/stream-rec-backend/main/envs/default.env create mode 100644 appstore/stream-rec-backend/main/envs/global.env create mode 100644 appstore/stream-rec-backend/main/scripts/init.sh create mode 100644 appstore/stream-rec-backend/main/scripts/uninstall.sh create mode 100644 appstore/stream-rec-backend/main/scripts/upgrade.sh create mode 100644 appstore/stream-rec-frontend/main/.env create mode 100644 appstore/stream-rec-frontend/main/data.yml create mode 100644 appstore/stream-rec-frontend/main/docker-compose.yml create mode 100644 appstore/stream-rec-frontend/main/envs/default.env create mode 100644 appstore/stream-rec-frontend/main/envs/global.env create mode 100644 appstore/stream-rec-frontend/main/scripts/init.sh create mode 100644 appstore/stream-rec-frontend/main/scripts/uninstall.sh create mode 100644 appstore/stream-rec-frontend/main/scripts/upgrade.sh create mode 100644 appstore/stream-rec/main/.env create mode 100644 appstore/stream-rec/main/data.yml create mode 100644 appstore/stream-rec/main/docker-compose.yml create mode 100644 appstore/stream-rec/main/envs/default.env create mode 100644 appstore/stream-rec/main/envs/global.env create mode 100644 appstore/stream-rec/main/scripts/init.sh create mode 100644 appstore/stream-rec/main/scripts/uninstall.sh create mode 100644 appstore/stream-rec/main/scripts/upgrade.sh create mode 100644 appstore/super-productivity/11.1.3/.env create mode 100644 appstore/super-productivity/11.1.3/conf/webdav.yaml create mode 100644 appstore/super-productivity/11.1.3/data.yml create mode 100644 appstore/super-productivity/11.1.3/docker-compose.yml create mode 100644 appstore/super-productivity/11.1.3/envs/default.env create mode 100644 appstore/super-productivity/11.1.3/envs/global.env create mode 100644 appstore/super-productivity/11.1.3/scripts/init.sh create mode 100644 appstore/super-productivity/11.1.3/scripts/uninstall.sh create mode 100644 appstore/super-productivity/11.1.3/scripts/upgrade.sh create mode 100644 appstore/super-productivity/README.md create mode 100644 appstore/super-productivity/data.yml create mode 100644 appstore/super-productivity/logo.png create mode 100644 dockge/stream-rec-backend_main/.env create mode 100644 dockge/stream-rec-backend_main/docker-compose.yml create mode 100644 dockge/stream-rec-backend_main/envs/default.env create mode 100644 dockge/stream-rec-backend_main/envs/global.env create mode 100644 dockge/stream-rec-frontend_main/.env create mode 100644 dockge/stream-rec-frontend_main/docker-compose.yml create mode 100644 dockge/stream-rec-frontend_main/envs/default.env create mode 100644 dockge/stream-rec-frontend_main/envs/global.env create mode 100644 dockge/stream-rec_main/.env create mode 100644 dockge/stream-rec_main/docker-compose.yml create mode 100644 dockge/stream-rec_main/envs/default.env create mode 100644 dockge/stream-rec_main/envs/global.env create mode 100644 dockge/super-productivity/.env create mode 100644 dockge/super-productivity/conf/webdav.yaml create mode 100644 dockge/super-productivity/docker-compose.yml create mode 100644 dockge/super-productivity/envs/default.env create mode 100644 dockge/super-productivity/envs/global.env diff --git a/appstore/glance/0.7.2/scripts/init.sh b/appstore/glance/0.7.2/scripts/init.sh index 2195dc928..ecfa16a43 100644 --- a/appstore/glance/0.7.2/scripts/init.sh +++ b/appstore/glance/0.7.2/scripts/init.sh @@ -10,10 +10,10 @@ if [ -f .env ]; then echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env - mkdir -p "$APP_NAME_ROOT_PATH" - mkdir -p "$APP_NAME_ROOT_PATH/app" + mkdir -p "$GLANCE_ROOT_PATH" + mkdir -p "$GLANCE_ROOT_PATH/app" - cp ./conf/glance.yml "$APP_NAME_ROOT_PATH/app/glance.yml" + cp ./conf/glance.yml "$GLANCE_ROOT_PATH/app/glance.yml" echo "Check Finish." diff --git a/appstore/glance/0.7.2/scripts/upgrade.sh b/appstore/glance/0.7.2/scripts/upgrade.sh index 0be9bfe0c..fda819a40 100644 --- a/appstore/glance/0.7.2/scripts/upgrade.sh +++ b/appstore/glance/0.7.2/scripts/upgrade.sh @@ -10,11 +10,11 @@ if [ -f .env ]; then echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env - mkdir -p "$APP_NAME_ROOT_PATH" - mkdir -p "$APP_NAME_ROOT_PATH/app" + mkdir -p "$GLANCE_ROOT_PATH" + mkdir -p "$GLANCE_ROOT_PATH/app" - if [ ! -f "$APP_NAME_ROOT_PATH/app/glance.yml" ]; then - cp ./conf/glance.yml "$APP_NAME_ROOT_PATH/app/glance.yml" + if [ ! -f "$GLANCE_ROOT_PATH/app/glance.yml" ]; then + cp ./conf/glance.yml "$GLANCE_ROOT_PATH/app/glance.yml" fi echo "Check Finish." diff --git a/appstore/jellyfin/10.10.5/.env b/appstore/jellyfin/10.10.6/.env similarity index 100% rename from appstore/jellyfin/10.10.5/.env rename to appstore/jellyfin/10.10.6/.env diff --git a/appstore/jellyfin/10.10.5/data.yml b/appstore/jellyfin/10.10.6/data.yml similarity index 100% rename from appstore/jellyfin/10.10.5/data.yml rename to appstore/jellyfin/10.10.6/data.yml diff --git a/appstore/jellyfin/10.10.5/docker-compose.yml b/appstore/jellyfin/10.10.6/docker-compose.yml similarity index 96% rename from appstore/jellyfin/10.10.5/docker-compose.yml rename to appstore/jellyfin/10.10.6/docker-compose.yml index 4807397ab..92e6f6faa 100644 --- a/appstore/jellyfin/10.10.5/docker-compose.yml +++ b/appstore/jellyfin/10.10.6/docker-compose.yml @@ -10,7 +10,7 @@ services: - ROC_ENABLE_PRE_VEGA=1 - HTTPS_PROXY=${HTTP_PROXY:-} - NO_PROXY=localhost,127.0.0.1,::1 - image: jellyfin/jellyfin:10.10.5 + image: jellyfin/jellyfin:10.10.6 labels: createdBy: Apps network_mode: ${NETWORK_MODE} diff --git a/appstore/jellyfin/10.10.5/envs/default.env b/appstore/jellyfin/10.10.6/envs/default.env similarity index 100% rename from appstore/jellyfin/10.10.5/envs/default.env rename to appstore/jellyfin/10.10.6/envs/default.env diff --git a/appstore/jellyfin/10.10.5/envs/global.env b/appstore/jellyfin/10.10.6/envs/global.env similarity index 100% rename from appstore/jellyfin/10.10.5/envs/global.env rename to appstore/jellyfin/10.10.6/envs/global.env diff --git a/appstore/jellyfin/10.10.5/scripts/init.sh b/appstore/jellyfin/10.10.6/scripts/init.sh similarity index 100% rename from appstore/jellyfin/10.10.5/scripts/init.sh rename to appstore/jellyfin/10.10.6/scripts/init.sh diff --git a/appstore/jellyfin/10.10.5/scripts/uninstall.sh b/appstore/jellyfin/10.10.6/scripts/uninstall.sh similarity index 100% rename from appstore/jellyfin/10.10.5/scripts/uninstall.sh rename to appstore/jellyfin/10.10.6/scripts/uninstall.sh diff --git a/appstore/jellyfin/10.10.5/scripts/upgrade.sh b/appstore/jellyfin/10.10.6/scripts/upgrade.sh similarity index 100% rename from appstore/jellyfin/10.10.5/scripts/upgrade.sh rename to appstore/jellyfin/10.10.6/scripts/upgrade.sh diff --git a/appstore/onedev/11.6.14/.env b/appstore/onedev/11.6.15/.env similarity index 100% rename from appstore/onedev/11.6.14/.env rename to appstore/onedev/11.6.15/.env diff --git a/appstore/onedev/11.6.14/data.yml b/appstore/onedev/11.6.15/data.yml similarity index 100% rename from appstore/onedev/11.6.14/data.yml rename to appstore/onedev/11.6.15/data.yml diff --git a/appstore/onedev/11.6.14/docker-compose.yml b/appstore/onedev/11.6.15/docker-compose.yml similarity index 95% rename from appstore/onedev/11.6.14/docker-compose.yml rename to appstore/onedev/11.6.15/docker-compose.yml index 2a629eb7f..9eaea8355 100644 --- a/appstore/onedev/11.6.14/docker-compose.yml +++ b/appstore/onedev/11.6.15/docker-compose.yml @@ -14,7 +14,7 @@ services: - initial_email=${INITIAL_EMAIL} - initial_server_url=${INITIAL_SERVER_URL} - initial_ssh_root_url=${INITIAL_SSH_ROOT_URL} - image: 1dev/server:11.6.14 + image: 1dev/server:11.6.15 labels: createdBy: Apps networks: diff --git a/appstore/onedev/11.6.14/envs/default.env b/appstore/onedev/11.6.15/envs/default.env similarity index 100% rename from appstore/onedev/11.6.14/envs/default.env rename to appstore/onedev/11.6.15/envs/default.env diff --git a/appstore/onedev/11.6.14/envs/global.env b/appstore/onedev/11.6.15/envs/global.env similarity index 100% rename from appstore/onedev/11.6.14/envs/global.env rename to appstore/onedev/11.6.15/envs/global.env diff --git a/appstore/onedev/11.6.14/envs/onedev.env b/appstore/onedev/11.6.15/envs/onedev.env similarity index 100% rename from appstore/onedev/11.6.14/envs/onedev.env rename to appstore/onedev/11.6.15/envs/onedev.env diff --git a/appstore/onedev/11.6.14/scripts/init.sh b/appstore/onedev/11.6.15/scripts/init.sh similarity index 100% rename from appstore/onedev/11.6.14/scripts/init.sh rename to appstore/onedev/11.6.15/scripts/init.sh diff --git a/appstore/onedev/11.6.14/scripts/uninstall.sh b/appstore/onedev/11.6.15/scripts/uninstall.sh similarity index 100% rename from appstore/onedev/11.6.14/scripts/uninstall.sh rename to appstore/onedev/11.6.15/scripts/uninstall.sh diff --git a/appstore/onedev/11.6.14/scripts/upgrade.sh b/appstore/onedev/11.6.15/scripts/upgrade.sh similarity index 100% rename from appstore/onedev/11.6.14/scripts/upgrade.sh rename to appstore/onedev/11.6.15/scripts/upgrade.sh diff --git a/appstore/stream-rec-backend/main/.env b/appstore/stream-rec-backend/main/.env new file mode 100644 index 000000000..0362943f4 --- /dev/null +++ b/appstore/stream-rec-backend/main/.env @@ -0,0 +1,12 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# API 端口 [必填] +PANEL_APP_PORT_HTTP=12555 + +# 登录密码 (初始化) [必填] +LOGIN_SECRET=stream-rec + +# 网络代理 +HTTP_PROXY= + diff --git a/appstore/stream-rec-backend/main/data.yml b/appstore/stream-rec-backend/main/data.yml new file mode 100644 index 000000000..08ef890a1 --- /dev/null +++ b/appstore/stream-rec-backend/main/data.yml @@ -0,0 +1,32 @@ +additionalProperties: + formFields: + - default: "/home/stream-rec" + edit: true + envKey: STREAM_REC_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 12555 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: API 端口 + labelEn: API port + required: true + rule: paramPort + type: number + - default: "stream-rec" + edit: false + envKey: LOGIN_SECRET + labelZh: 登录密码 (初始化) + labelEn: Login Password (Initialization) + required: true + random: true + type: text + - default: "" + edit: true + envKey: HTTP_PROXY + labelZh: 网络代理 + labelEn: Network Proxy + required: false + type: text diff --git a/appstore/stream-rec-backend/main/docker-compose.yml b/appstore/stream-rec-backend/main/docker-compose.yml new file mode 100644 index 000000000..cca1bacc5 --- /dev/null +++ b/appstore/stream-rec-backend/main/docker-compose.yml @@ -0,0 +1,24 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-backend: + container_name: stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - LOG_LEVEL=INFO + - DB_PATH=/opt/records + - DOWNLOAD_PATH=/download + image: streamrec/stream-rec:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:12555 + restart: always + volumes: + - ${STREAM_REC_ROOT_PATH}/records:/opt/records + - ${STREAM_REC_ROOT_PATH}/download:/download diff --git a/appstore/stream-rec-backend/main/envs/default.env b/appstore/stream-rec-backend/main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/stream-rec-backend/main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/stream-rec-backend/main/envs/global.env b/appstore/stream-rec-backend/main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/stream-rec-backend/main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/stream-rec-backend/main/scripts/init.sh b/appstore/stream-rec-backend/main/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec-backend/main/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/appstore/stream-rec-backend/main/scripts/uninstall.sh b/appstore/stream-rec-backend/main/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/stream-rec-backend/main/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/appstore/stream-rec-backend/main/scripts/upgrade.sh b/appstore/stream-rec-backend/main/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec-backend/main/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/appstore/stream-rec-frontend/main/.env b/appstore/stream-rec-frontend/main/.env new file mode 100644 index 000000000..30b031d37 --- /dev/null +++ b/appstore/stream-rec-frontend/main/.env @@ -0,0 +1,18 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=15275 + +# NextAuth 加密密钥 [必填] +NEXTAUTH_SECRET= + +# API 地址 [必填] +API_URL=http://stream-rec-backend:12555/api + +# WebSocket API 地址 [必填] +WS_API_URL=ws://stream-rec-backend:12555/live/update + +# NextAuth 服务器地址 [必填] +NEXTAUTH_URL=http://localhost:15275/ + diff --git a/appstore/stream-rec-frontend/main/data.yml b/appstore/stream-rec-frontend/main/data.yml new file mode 100644 index 000000000..c90bf4283 --- /dev/null +++ b/appstore/stream-rec-frontend/main/data.yml @@ -0,0 +1,46 @@ +additionalProperties: + formFields: + - default: "/home/stream-rec" + edit: true + envKey: STREAM_REC_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 15275 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: NEXTAUTH_SECRET + labelZh: NextAuth 加密密钥 + labelEn: NextAuth Secret + required: true + random: true + type: text + - default: "http://stream-rec-backend:12555/api" + edit: true + envKey: API_URL + labelZh: API 地址 + labelEn: API URL + required: true + type: text + - default: "ws://stream-rec-backend:12555/live/update" + edit: true + envKey: WS_API_URL + labelZh: WebSocket API 地址 + labelEn: WebSocket API URL + required: true + type: text + - default: "http://localhost:15275/" + edit: true + envKey: NEXTAUTH_URL + labelZh: NextAuth 服务器地址 + labelEn: NextAuth Server URL + required: true + type: text diff --git a/appstore/stream-rec-frontend/main/docker-compose.yml b/appstore/stream-rec-frontend/main/docker-compose.yml new file mode 100644 index 000000000..adf7b34f0 --- /dev/null +++ b/appstore/stream-rec-frontend/main/docker-compose.yml @@ -0,0 +1,17 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-frontend: + container_name: stream-rec-frontend + env_file: + - ./envs/global.env + - .env + image: streamrec/stream-rec-front:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:15275 + restart: always diff --git a/appstore/stream-rec-frontend/main/envs/default.env b/appstore/stream-rec-frontend/main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/stream-rec-frontend/main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/stream-rec-frontend/main/envs/global.env b/appstore/stream-rec-frontend/main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/stream-rec-frontend/main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/stream-rec-frontend/main/scripts/init.sh b/appstore/stream-rec-frontend/main/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec-frontend/main/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/appstore/stream-rec-frontend/main/scripts/uninstall.sh b/appstore/stream-rec-frontend/main/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/stream-rec-frontend/main/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/appstore/stream-rec-frontend/main/scripts/upgrade.sh b/appstore/stream-rec-frontend/main/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec-frontend/main/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/appstore/stream-rec/main/.env b/appstore/stream-rec/main/.env new file mode 100644 index 000000000..2b1c26e47 --- /dev/null +++ b/appstore/stream-rec/main/.env @@ -0,0 +1,27 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=15275 + +# API 端口 [必填] +PANEL_APP_PORT_API=12555 + +# 默认用户名 [必填] +LOGIN_USERNAME=stream-rec + +# 登录密码 (初始化) [必填] +LOGIN_SECRET=stream-rec + +# 加密密钥 [必填] +AUTH_SECRET= + +# 访问域名 [必填] +NEXT_PUBLIC_BASE_URL=http://127.0.0.1:15275 + +# WebSocket API 地址 [必填] +WS_API_URL=ws://127.0.0.1:12555/live/update + +# 网络代理 +HTTP_PROXY= + diff --git a/appstore/stream-rec/main/data.yml b/appstore/stream-rec/main/data.yml new file mode 100644 index 000000000..44a51650b --- /dev/null +++ b/appstore/stream-rec/main/data.yml @@ -0,0 +1,69 @@ +additionalProperties: + formFields: + - default: "/home/stream-rec" + edit: true + envKey: STREAM_REC_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 15275 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 12555 + edit: true + envKey: PANEL_APP_PORT_API + labelZh: API 端口 + labelEn: API port + required: true + rule: paramPort + type: number + - default: "stream-rec" + disabled: true + envKey: LOGIN_USERNAME + labelZh: 默认用户名 + labelEn: Default Username + required: true + type: text + - default: "stream-rec" + edit: false + envKey: LOGIN_SECRET + labelZh: 登录密码 (初始化) + labelEn: Login Password (Initialization) + required: true + random: true + type: password + - default: "" + edit: true + envKey: AUTH_SECRET + labelZh: 加密密钥 + labelEn: Encryption Key + required: true + random: true + type: text + - default: "http://127.0.0.1:15275" + edit: true + envKey: NEXT_PUBLIC_BASE_URL + labelZh: 访问域名 + labelEn: Access Domain + required: true + type: text + - default: "ws://127.0.0.1:12555/live/update" + edit: true + envKey: WS_API_URL + labelZh: WebSocket API 地址 + labelEn: WebSocket API URL + required: true + type: text + - default: "" + edit: true + envKey: HTTP_PROXY + labelZh: 网络代理 + labelEn: Network Proxy + required: false + type: text diff --git a/appstore/stream-rec/main/docker-compose.yml b/appstore/stream-rec/main/docker-compose.yml new file mode 100644 index 000000000..453e6ea75 --- /dev/null +++ b/appstore/stream-rec/main/docker-compose.yml @@ -0,0 +1,46 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-backend: + container_name: stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - HTTPS_PROXY=${HTTP_PROXY} + - LOG_LEVEL=INFO + - DB_PATH=/opt/records + - DOWNLOAD_PATH=/download + - PGID=1000 + - PUID=1000 + image: streamrec/stream-rec:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_API}:12555 + restart: always + volumes: + - ${STREAM_REC_ROOT_PATH}/records:/opt/records + - ${STREAM_REC_ROOT_PATH}/download:/download + stream-rec-frontend: + container_name: stream-rec + depends_on: + - stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - API_URL=http://stream-rec-backend:12555/api + image: streamrec/stream-rec-front:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:15275 + restart: always diff --git a/appstore/stream-rec/main/envs/default.env b/appstore/stream-rec/main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/stream-rec/main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/stream-rec/main/envs/global.env b/appstore/stream-rec/main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/stream-rec/main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/stream-rec/main/scripts/init.sh b/appstore/stream-rec/main/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec/main/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/appstore/stream-rec/main/scripts/uninstall.sh b/appstore/stream-rec/main/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/stream-rec/main/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/appstore/stream-rec/main/scripts/upgrade.sh b/appstore/stream-rec/main/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/appstore/stream-rec/main/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/appstore/super-productivity/11.1.3/.env b/appstore/super-productivity/11.1.3/.env new file mode 100644 index 000000000..67b1f21c8 --- /dev/null +++ b/appstore/super-productivity/11.1.3/.env @@ -0,0 +1,6 @@ +# 数据持久化路径 [必填] +SUPER_PRODUCTIVITY_ROOT_PATH=/home/super-productivity + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=8080 + diff --git a/appstore/super-productivity/11.1.3/conf/webdav.yaml b/appstore/super-productivity/11.1.3/conf/webdav.yaml new file mode 100644 index 000000000..629109a81 --- /dev/null +++ b/appstore/super-productivity/11.1.3/conf/webdav.yaml @@ -0,0 +1,13 @@ +address: 0.0.0.0 +port: 80 + +prefix: / +permissions: CRUD + +users: + - username: alice + password: alicepassword + directory: /data/alice + - username: bob + password: bobpassword + directory: /data/bob diff --git a/appstore/super-productivity/11.1.3/data.yml b/appstore/super-productivity/11.1.3/data.yml new file mode 100644 index 000000000..f40ef60a9 --- /dev/null +++ b/appstore/super-productivity/11.1.3/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/super-productivity" + edit: true + envKey: SUPER_PRODUCTIVITY_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/appstore/super-productivity/11.1.3/docker-compose.yml b/appstore/super-productivity/11.1.3/docker-compose.yml new file mode 100644 index 000000000..70892fc6c --- /dev/null +++ b/appstore/super-productivity/11.1.3/docker-compose.yml @@ -0,0 +1,31 @@ +networks: + 1panel-network: + external: true +services: + sp-webdav: + env_file: + - ./envs/global.env + - .env + image: hacdias/webdav:latest + networks: + - 1panel-network + restart: always + volumes: + - ${SUPER_PRODUCTIVITY_ROOT_PATH}/config/webdav.yaml:/config.yml + - ${SUPER_PRODUCTIVITY_ROOT_PATH}/data:/data + super-productivity: + container_name: super-productivity + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - WEBDAV_BACKEND=http://sp-webdav + image: johannesjo/super-productivity:v11.1.3 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + restart: always diff --git a/appstore/super-productivity/11.1.3/envs/default.env b/appstore/super-productivity/11.1.3/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/appstore/super-productivity/11.1.3/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/super-productivity/11.1.3/envs/global.env b/appstore/super-productivity/11.1.3/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/appstore/super-productivity/11.1.3/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/super-productivity/11.1.3/scripts/init.sh b/appstore/super-productivity/11.1.3/scripts/init.sh new file mode 100644 index 000000000..16af78ff6 --- /dev/null +++ b/appstore/super-productivity/11.1.3/scripts/init.sh @@ -0,0 +1,23 @@ +#!/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 + + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH" + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH/data" + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH/config" + + cp ./conf/webdav.yaml "$SUPER_PRODUCTIVITY_ROOT_PATH/config/webdav.yaml" + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/super-productivity/11.1.3/scripts/uninstall.sh b/appstore/super-productivity/11.1.3/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/appstore/super-productivity/11.1.3/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/appstore/super-productivity/11.1.3/scripts/upgrade.sh b/appstore/super-productivity/11.1.3/scripts/upgrade.sh new file mode 100644 index 000000000..c49abea9e --- /dev/null +++ b/appstore/super-productivity/11.1.3/scripts/upgrade.sh @@ -0,0 +1,25 @@ +#!/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 + + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH" + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH/data" + mkdir -p "$SUPER_PRODUCTIVITY_ROOT_PATH/config" + + if [ ! -f "$SUPER_PRODUCTIVITY_ROOT_PATH/app/glance.yml" ]; then + cp ./conf/webdav.yaml "$SUPER_PRODUCTIVITY_ROOT_PATH/config/webdav.yaml" + fi + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/super-productivity/README.md b/appstore/super-productivity/README.md new file mode 100644 index 000000000..3658f1628 --- /dev/null +++ b/appstore/super-productivity/README.md @@ -0,0 +1,27 @@ +# Super Productivity + +一个高级TODO列表应用程序,具有时间框和时间跟踪功能,该应用程序支持您的日历,JIRA,GITHUB等导入任务 + +![Super Productivity](https://file.lifebus.top/imgs/super-productivity_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) + +## 简介 + +- **保持条理清晰和专注!** 使用子任务、项目和标签来计划和分类您的任务,并根据需要对它们进行颜色编码。 +- 使用**时间盒**和**跟踪您的时间**。轻松创建工时表和工作摘要,以便将其轻松导出到您公司的工时跟踪系统。 +- 帮助您**建立健康且高效的习惯**: + - **休息提醒**会在该离开的时候提醒您。 + - **反拖延功能**在您确实需要时帮助您获得新的视角。 + - 需要更加专注?**番茄钟计时器**也总是触手可及。 + - **收集个人指标**以查看哪些工作例程需要调整。 +- 与**Jira**、**GitHub**、**GitLab**、**Gitea**和**OpenProject**集成。自动导入分配给您的任务,在本地详细规划,自动生成工作日志,并在有变化时立即得到通知。 +- 基本的[**CalDAV**](https://github.com/johannesjo/super-productivity/blob/master/docs/caldav.md)集成。 +- 使用**Dropbox**和**WebDAV**支持备份并在多个设备间同步您的数据。 +- 将上下文信息附加到任务和项目。创建**笔记**,附加**文件**或为链接、文件甚至命令创建**项目级别的书签**。 +- Super Productivity**尊重您的隐私**且**不会收集任何数据**,并且没有用户账户或注册要求。**由您决定数据存储的位置!** +- 它是**免费**且**开源**的,并且永远都是。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/appstore/super-productivity/data.yml b/appstore/super-productivity/data.yml new file mode 100644 index 000000000..7d1787b55 --- /dev/null +++ b/appstore/super-productivity/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: super-productivity + name: Super Productivity + tags: + - WebSite + - Local + shortDescZh: 一个高级TODO列表应用程序,具有时间框和时间跟踪功能,该应用程序支持您的日历,JIRA,GITHUB等导入任务 + shortDescEn: An advanced TODO list application with time boxing and time tracking features that supports importing tasks from your calendar, JIRA, GITHUB, etc. + type: website + crossVersionUpdate: true + limit: 0 + website: https://super-productivity.com/ + github: https://github.com/johannesjo/super-productivity/ + document: https://super-productivity.com/ diff --git a/appstore/super-productivity/logo.png b/appstore/super-productivity/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2faaafdf6686577bbb4e09c8ed368c03e61ef7 GIT binary patch literal 37423 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 AivR!s literal 0 HcmV?d00001 diff --git a/dockge/jellyfin/docker-compose.yml b/dockge/jellyfin/docker-compose.yml index 4807397ab..92e6f6faa 100644 --- a/dockge/jellyfin/docker-compose.yml +++ b/dockge/jellyfin/docker-compose.yml @@ -10,7 +10,7 @@ services: - ROC_ENABLE_PRE_VEGA=1 - HTTPS_PROXY=${HTTP_PROXY:-} - NO_PROXY=localhost,127.0.0.1,::1 - image: jellyfin/jellyfin:10.10.5 + image: jellyfin/jellyfin:10.10.6 labels: createdBy: Apps network_mode: ${NETWORK_MODE} diff --git a/dockge/onedev/docker-compose.yml b/dockge/onedev/docker-compose.yml index 2a629eb7f..9eaea8355 100644 --- a/dockge/onedev/docker-compose.yml +++ b/dockge/onedev/docker-compose.yml @@ -14,7 +14,7 @@ services: - initial_email=${INITIAL_EMAIL} - initial_server_url=${INITIAL_SERVER_URL} - initial_ssh_root_url=${INITIAL_SSH_ROOT_URL} - image: 1dev/server:11.6.14 + image: 1dev/server:11.6.15 labels: createdBy: Apps networks: diff --git a/dockge/stream-rec-backend_main/.env b/dockge/stream-rec-backend_main/.env new file mode 100644 index 000000000..0362943f4 --- /dev/null +++ b/dockge/stream-rec-backend_main/.env @@ -0,0 +1,12 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# API 端口 [必填] +PANEL_APP_PORT_HTTP=12555 + +# 登录密码 (初始化) [必填] +LOGIN_SECRET=stream-rec + +# 网络代理 +HTTP_PROXY= + diff --git a/dockge/stream-rec-backend_main/docker-compose.yml b/dockge/stream-rec-backend_main/docker-compose.yml new file mode 100644 index 000000000..cca1bacc5 --- /dev/null +++ b/dockge/stream-rec-backend_main/docker-compose.yml @@ -0,0 +1,24 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-backend: + container_name: stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - LOG_LEVEL=INFO + - DB_PATH=/opt/records + - DOWNLOAD_PATH=/download + image: streamrec/stream-rec:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:12555 + restart: always + volumes: + - ${STREAM_REC_ROOT_PATH}/records:/opt/records + - ${STREAM_REC_ROOT_PATH}/download:/download diff --git a/dockge/stream-rec-backend_main/envs/default.env b/dockge/stream-rec-backend_main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/stream-rec-backend_main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/stream-rec-backend_main/envs/global.env b/dockge/stream-rec-backend_main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/stream-rec-backend_main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/dockge/stream-rec-frontend_main/.env b/dockge/stream-rec-frontend_main/.env new file mode 100644 index 000000000..30b031d37 --- /dev/null +++ b/dockge/stream-rec-frontend_main/.env @@ -0,0 +1,18 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=15275 + +# NextAuth 加密密钥 [必填] +NEXTAUTH_SECRET= + +# API 地址 [必填] +API_URL=http://stream-rec-backend:12555/api + +# WebSocket API 地址 [必填] +WS_API_URL=ws://stream-rec-backend:12555/live/update + +# NextAuth 服务器地址 [必填] +NEXTAUTH_URL=http://localhost:15275/ + diff --git a/dockge/stream-rec-frontend_main/docker-compose.yml b/dockge/stream-rec-frontend_main/docker-compose.yml new file mode 100644 index 000000000..adf7b34f0 --- /dev/null +++ b/dockge/stream-rec-frontend_main/docker-compose.yml @@ -0,0 +1,17 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-frontend: + container_name: stream-rec-frontend + env_file: + - ./envs/global.env + - .env + image: streamrec/stream-rec-front:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:15275 + restart: always diff --git a/dockge/stream-rec-frontend_main/envs/default.env b/dockge/stream-rec-frontend_main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/stream-rec-frontend_main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/stream-rec-frontend_main/envs/global.env b/dockge/stream-rec-frontend_main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/stream-rec-frontend_main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/dockge/stream-rec_main/.env b/dockge/stream-rec_main/.env new file mode 100644 index 000000000..2b1c26e47 --- /dev/null +++ b/dockge/stream-rec_main/.env @@ -0,0 +1,27 @@ +# 数据持久化路径 [必填] +STREAM_REC_ROOT_PATH=/home/stream-rec + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=15275 + +# API 端口 [必填] +PANEL_APP_PORT_API=12555 + +# 默认用户名 [必填] +LOGIN_USERNAME=stream-rec + +# 登录密码 (初始化) [必填] +LOGIN_SECRET=stream-rec + +# 加密密钥 [必填] +AUTH_SECRET= + +# 访问域名 [必填] +NEXT_PUBLIC_BASE_URL=http://127.0.0.1:15275 + +# WebSocket API 地址 [必填] +WS_API_URL=ws://127.0.0.1:12555/live/update + +# 网络代理 +HTTP_PROXY= + diff --git a/dockge/stream-rec_main/docker-compose.yml b/dockge/stream-rec_main/docker-compose.yml new file mode 100644 index 000000000..453e6ea75 --- /dev/null +++ b/dockge/stream-rec_main/docker-compose.yml @@ -0,0 +1,46 @@ +networks: + 1panel-network: + external: true +services: + stream-rec-backend: + container_name: stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - HTTPS_PROXY=${HTTP_PROXY} + - LOG_LEVEL=INFO + - DB_PATH=/opt/records + - DOWNLOAD_PATH=/download + - PGID=1000 + - PUID=1000 + image: streamrec/stream-rec:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_API}:12555 + restart: always + volumes: + - ${STREAM_REC_ROOT_PATH}/records:/opt/records + - ${STREAM_REC_ROOT_PATH}/download:/download + stream-rec-frontend: + container_name: stream-rec + depends_on: + - stream-rec-backend + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - API_URL=http://stream-rec-backend:12555/api + image: streamrec/stream-rec-front:main + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:15275 + restart: always diff --git a/dockge/stream-rec_main/envs/default.env b/dockge/stream-rec_main/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/stream-rec_main/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/stream-rec_main/envs/global.env b/dockge/stream-rec_main/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/stream-rec_main/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/dockge/super-productivity/.env b/dockge/super-productivity/.env new file mode 100644 index 000000000..67b1f21c8 --- /dev/null +++ b/dockge/super-productivity/.env @@ -0,0 +1,6 @@ +# 数据持久化路径 [必填] +SUPER_PRODUCTIVITY_ROOT_PATH=/home/super-productivity + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=8080 + diff --git a/dockge/super-productivity/conf/webdav.yaml b/dockge/super-productivity/conf/webdav.yaml new file mode 100644 index 000000000..629109a81 --- /dev/null +++ b/dockge/super-productivity/conf/webdav.yaml @@ -0,0 +1,13 @@ +address: 0.0.0.0 +port: 80 + +prefix: / +permissions: CRUD + +users: + - username: alice + password: alicepassword + directory: /data/alice + - username: bob + password: bobpassword + directory: /data/bob diff --git a/dockge/super-productivity/docker-compose.yml b/dockge/super-productivity/docker-compose.yml new file mode 100644 index 000000000..70892fc6c --- /dev/null +++ b/dockge/super-productivity/docker-compose.yml @@ -0,0 +1,31 @@ +networks: + 1panel-network: + external: true +services: + sp-webdav: + env_file: + - ./envs/global.env + - .env + image: hacdias/webdav:latest + networks: + - 1panel-network + restart: always + volumes: + - ${SUPER_PRODUCTIVITY_ROOT_PATH}/config/webdav.yaml:/config.yml + - ${SUPER_PRODUCTIVITY_ROOT_PATH}/data:/data + super-productivity: + container_name: super-productivity + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - WEBDAV_BACKEND=http://sp-webdav + image: johannesjo/super-productivity:v11.1.3 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + restart: always diff --git a/dockge/super-productivity/envs/default.env b/dockge/super-productivity/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/dockge/super-productivity/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/super-productivity/envs/global.env b/dockge/super-productivity/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/dockge/super-productivity/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai