From cfe0b310ff2d89e45ccc36870476485f0a5f8bbc Mon Sep 17 00:00:00 2001 From: okxlin <61420215+okxlin@users.noreply.github.com> Date: Sat, 29 Aug 2026 00:47:16 +0800 Subject: [PATCH] Update trek app Rebuilt-from-PR: #6238 Source-PR: https://github.com/okxlin/appstore/pull/6238 Maintainer-workflow: appstore-pr-maintainer --- apps/trek/3.3.0/data.yml | 156 ------------------ apps/trek/3.3.0/docker-compose.yml | 48 ------ apps/trek/3.3.0/scripts/init.sh | 6 - apps/trek/3.3.0/scripts/upgrade.sh | 6 - apps/trek/{3.3.0 => 4.0.0}/.env.sample | 2 +- apps/trek/4.0.0/data.yml | 156 ++++++++++++++++++ apps/trek/{3.3.0 => 4.0.0}/data/.gitkeep | 0 .../trek/{latest => 4.0.0}/docker-compose.yml | 2 +- apps/trek/{3.3.0 => 4.0.0}/scripts/.gitkeep | 0 apps/trek/4.0.0/scripts/init.sh | 106 ++++++++++++ .../{3.3.0 => 4.0.0}/scripts/uninstall.sh | 0 apps/trek/4.0.0/scripts/upgrade.sh | 5 + apps/trek/README.md | 6 + apps/trek/data.yml | 23 ++- apps/trek/latest/.env.sample | 10 -- apps/trek/latest/data.yml | 156 ------------------ apps/trek/latest/data/.gitkeep | 0 apps/trek/latest/scripts/.gitkeep | 0 apps/trek/latest/scripts/init.sh | 6 - apps/trek/latest/scripts/uninstall.sh | 4 - apps/trek/latest/scripts/upgrade.sh | 6 - apps/trek/logo.png | Bin 3944 -> 3916 bytes 22 files changed, 286 insertions(+), 412 deletions(-) delete mode 100644 apps/trek/3.3.0/data.yml delete mode 100644 apps/trek/3.3.0/docker-compose.yml delete mode 100755 apps/trek/3.3.0/scripts/init.sh delete mode 100755 apps/trek/3.3.0/scripts/upgrade.sh rename apps/trek/{3.3.0 => 4.0.0}/.env.sample (82%) create mode 100644 apps/trek/4.0.0/data.yml rename apps/trek/{3.3.0 => 4.0.0}/data/.gitkeep (100%) rename apps/trek/{latest => 4.0.0}/docker-compose.yml (90%) rename apps/trek/{3.3.0 => 4.0.0}/scripts/.gitkeep (100%) create mode 100755 apps/trek/4.0.0/scripts/init.sh rename apps/trek/{3.3.0 => 4.0.0}/scripts/uninstall.sh (100%) create mode 100755 apps/trek/4.0.0/scripts/upgrade.sh delete mode 100644 apps/trek/latest/.env.sample delete mode 100644 apps/trek/latest/data.yml delete mode 100644 apps/trek/latest/data/.gitkeep delete mode 100644 apps/trek/latest/scripts/.gitkeep delete mode 100755 apps/trek/latest/scripts/init.sh delete mode 100755 apps/trek/latest/scripts/uninstall.sh delete mode 100755 apps/trek/latest/scripts/upgrade.sh diff --git a/apps/trek/3.3.0/data.yml b/apps/trek/3.3.0/data.yml deleted file mode 100644 index 5a3c04466..000000000 --- a/apps/trek/3.3.0/data.yml +++ /dev/null @@ -1,156 +0,0 @@ -additionalProperties: - formFields: - - default: 3000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Web Port - labelZh: Web 访问端口 - label: - en: Web Port - zh: Web 访问端口 - zh-Hant: Web 存取埠 - ja: Web ポート - ko: Web 포트 - ru: Веб-порт - ms: Port Web - pt-br: Porta Web - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: APP_DATA_DIR - labelEn: Data Directory - labelZh: 数据目录 - label: - en: Data Directory - zh: 数据目录 - zh-Hant: 資料目錄 - ja: データディレクトリ - ko: 데이터 디렉터리 - ru: Каталог данных - ms: Direktori Data - pt-br: Diretório de Dados - required: true - type: text - - default: ./data/uploads - edit: true - envKey: APP_UPLOADS_DIR - labelEn: Uploads Directory - labelZh: 上传目录 - label: - en: Uploads Directory - zh: 上传目录 - zh-Hant: 上傳目錄 - ja: アップロードディレクトリ - ko: 업로드 디렉터리 - ru: Каталог загрузок - ms: Direktori Muat Naik - pt-br: Diretório de Uploads - required: true - type: text - - default: '' - edit: true - envKey: ENCRYPTION_KEY - labelEn: Encryption Key - labelZh: 加密密钥 - label: - en: Encryption Key - zh: 加密密钥 - zh-Hant: 加密密鑰 - ja: 暗号化キー - ko: 암호화 키 - ru: Ключ шифрования - ms: Kunci Penyulitan - pt-br: Chave de Criptografia - required: false - type: password - - default: UTC - edit: true - envKey: TZ - labelEn: Timezone - labelZh: 时区 - label: - en: Timezone - zh: 时区 - zh-Hant: 時區 - ja: タイムゾーン - ko: 시간대 - ru: Часовой пояс - ms: Zon waktu - pt-br: Fuso horário - required: true - type: text - - default: info - edit: true - envKey: LOG_LEVEL - labelEn: Log Level - labelZh: 日志级别 - label: - en: Log Level - zh: 日志级别 - zh-Hant: 日誌級別 - ja: ログレベル - ko: 로그 레벨 - ru: Уровень журнала - ms: Tahap Log - pt-br: Nível de Log - required: true - type: select - values: - - label: debug - value: debug - - label: info - value: info - - label: warn - value: warn - - label: error - value: error - - default: '' - edit: true - envKey: ADMIN_EMAIL - labelEn: Admin Email - labelZh: 管理员邮箱 - label: - en: Admin Email - zh: 管理员邮箱 - zh-Hant: 管理員郵箱 - ja: 管理者メール - ko: 관리자 이메일 - ru: Почта администратора - ms: Emel Pentadbir - pt-br: E-mail do Admin - required: false - type: text - - default: '' - edit: true - envKey: ADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - label: - en: Admin Password - zh: 管理员密码 - zh-Hant: 管理員密碼 - ja: 管理者パスワード - ko: 관리자 비밀번호 - ru: Пароль администратора - ms: Kata Laluan Pentadbir - pt-br: Senha do Admin - required: false - type: password - - default: '' - edit: true - envKey: ALLOWED_ORIGINS - labelEn: Allowed Origins - labelZh: 允许来源 - label: - en: Allowed Origins - zh: 允许来源 - zh-Hant: 允許來源 - ja: 許可オリジン - ko: 허용 출처 - ru: Разрешенные origins - ms: Origin Dibenarkan - pt-br: Origens Permitidas - required: false - type: text diff --git a/apps/trek/3.3.0/docker-compose.yml b/apps/trek/3.3.0/docker-compose.yml deleted file mode 100644 index e258dd672..000000000 --- a/apps/trek/3.3.0/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -services: - trek: - image: "mauriceboe/trek:3.3.0" - container_name: ${CONTAINER_NAME} - read_only: true - security_opt: - - no-new-privileges:true - cap_drop: - - ALL - cap_add: - - CHOWN - - SETUID - - SETGID - tmpfs: - - /tmp:noexec,nosuid,size=64m - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - environment: - - NODE_ENV=production - - PORT=3000 - - ENCRYPTION_KEY=${ENCRYPTION_KEY:-} - - TZ=${TZ} - - LOG_LEVEL=${LOG_LEVEL} - - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-} - - ADMIN_EMAIL=${ADMIN_EMAIL:-} - - ADMIN_PASSWORD=${ADMIN_PASSWORD:-} - volumes: - - "${APP_DATA_DIR}:/app/data" - - "${APP_UPLOADS_DIR}:/app/uploads" - healthcheck: - test: - - CMD - - wget - - -qO- - - http://localhost:3000/api/health - interval: 30s - timeout: 10s - retries: 3 - start_period: 15s - labels: - createdBy: Apps - networks: - - 1panel-network - restart: unless-stopped - -networks: - 1panel-network: - external: true diff --git a/apps/trek/3.3.0/scripts/init.sh b/apps/trek/3.3.0/scripts/init.sh deleted file mode 100755 index d8755e2d1..000000000 --- a/apps/trek/3.3.0/scripts/init.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -DATA_DIR="${APP_DATA_DIR:-./data}" -UPLOADS_DIR="${APP_UPLOADS_DIR:-./data/uploads}" -mkdir -p "$DATA_DIR" "$UPLOADS_DIR" diff --git a/apps/trek/3.3.0/scripts/upgrade.sh b/apps/trek/3.3.0/scripts/upgrade.sh deleted file mode 100755 index d8755e2d1..000000000 --- a/apps/trek/3.3.0/scripts/upgrade.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -DATA_DIR="${APP_DATA_DIR:-./data}" -UPLOADS_DIR="${APP_UPLOADS_DIR:-./data/uploads}" -mkdir -p "$DATA_DIR" "$UPLOADS_DIR" diff --git a/apps/trek/3.3.0/.env.sample b/apps/trek/4.0.0/.env.sample similarity index 82% rename from apps/trek/3.3.0/.env.sample rename to apps/trek/4.0.0/.env.sample index 14df8eb37..de6d71dd5 100644 --- a/apps/trek/3.3.0/.env.sample +++ b/apps/trek/4.0.0/.env.sample @@ -1,3 +1,4 @@ +CONTAINER_NAME=trek-compose-check PANEL_APP_PORT_HTTP=3000 APP_DATA_DIR=./data APP_UPLOADS_DIR=./data/uploads @@ -7,4 +8,3 @@ LOG_LEVEL=info ADMIN_EMAIL= ADMIN_PASSWORD= ALLOWED_ORIGINS= -CONTAINER_NAME= diff --git a/apps/trek/4.0.0/data.yml b/apps/trek/4.0.0/data.yml new file mode 100644 index 000000000..58d0000c8 --- /dev/null +++ b/apps/trek/4.0.0/data.yml @@ -0,0 +1,156 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: Web 访问端口 + label: + en: Web Port + zh: Web 访问端口 + zh-Hant: Web 存取埠 + ja: Web ポート + ko: Web 포트 + ru: Веб-порт + ms: Port Web + pt-br: Porta Web + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: APP_DATA_DIR + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + zh-Hant: 資料目錄 + ja: データディレクトリ + ko: 데이터 디렉터리 + ru: Каталог данных + ms: Direktori Data + pt-br: Diretório de Dados + required: true + type: text + - default: ./data/uploads + edit: true + envKey: APP_UPLOADS_DIR + labelEn: Uploads Directory + labelZh: 上传目录 + label: + en: Uploads Directory + zh: 上传目录 + zh-Hant: 上傳目錄 + ja: アップロードディレクトリ + ko: 업로드 디렉터리 + ru: Каталог загрузок + ms: Direktori Muat Naik + pt-br: Diretório de Uploads + required: true + type: text + - default: '' + edit: true + envKey: ENCRYPTION_KEY + labelEn: Encryption Key + labelZh: 加密密钥 + label: + en: Encryption Key + zh: 加密密钥 + zh-Hant: 加密密鑰 + ja: 暗号化キー + ko: 암호화 키 + ru: Ключ шифрования + ms: Kunci Penyulitan + pt-br: Chave de Criptografia + required: false + type: password + - default: UTC + edit: true + envKey: TZ + labelEn: Timezone + labelZh: 时区 + label: + en: Timezone + zh: 时区 + zh-Hant: 時區 + ja: タイムゾーン + ko: 시간대 + ru: Часовой пояс + ms: Zon waktu + pt-br: Fuso horário + required: true + type: text + - default: info + edit: true + envKey: LOG_LEVEL + labelEn: Log Level + labelZh: 日志级别 + label: + en: Log Level + zh: 日志级别 + zh-Hant: 日誌級別 + ja: ログレベル + ko: 로그 레벨 + ru: Уровень журнала + ms: Tahap Log + pt-br: Nível de Log + required: true + type: select + values: + - label: debug + value: debug + - label: info + value: info + - label: warn + value: warn + - label: error + value: error + - default: '' + edit: true + envKey: ADMIN_EMAIL + labelEn: Admin Email + labelZh: 管理员邮箱 + label: + en: Admin Email + zh: 管理员邮箱 + zh-Hant: 管理員郵箱 + ja: 管理者メール + ko: 관리자 이메일 + ru: Почта администратора + ms: Emel Pentadbir + pt-br: E-mail do Admin + required: false + type: text + - default: '' + edit: true + envKey: ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 管理员密码 + label: + en: Admin Password + zh: 管理员密码 + zh-Hant: 管理員密碼 + ja: 管理者パスワード + ko: 관리자 비밀번호 + ru: Пароль администратора + ms: Kata Laluan Pentadbir + pt-br: Senha do Admin + required: false + type: password + - default: '' + edit: true + envKey: ALLOWED_ORIGINS + labelEn: Allowed Origins + labelZh: 允许来源 + label: + en: Allowed Origins + zh: 允许来源 + zh-Hant: 允許來源 + ja: 許可オリジン + ko: 허용 출처 + ru: Разрешенные origins + ms: Origin Dibenarkan + pt-br: Origens Permitidas + required: false + type: text diff --git a/apps/trek/3.3.0/data/.gitkeep b/apps/trek/4.0.0/data/.gitkeep similarity index 100% rename from apps/trek/3.3.0/data/.gitkeep rename to apps/trek/4.0.0/data/.gitkeep diff --git a/apps/trek/latest/docker-compose.yml b/apps/trek/4.0.0/docker-compose.yml similarity index 90% rename from apps/trek/latest/docker-compose.yml rename to apps/trek/4.0.0/docker-compose.yml index 47467334b..08ede235a 100644 --- a/apps/trek/latest/docker-compose.yml +++ b/apps/trek/4.0.0/docker-compose.yml @@ -1,6 +1,6 @@ services: trek: - image: "mauriceboe/trek:latest" + image: "mauriceboe/trek:4.0.0@sha256:ae64a5ce6cf510e4e3757667b4a8dc8b3951ded8a18204a819243eee8461835a" container_name: ${CONTAINER_NAME} read_only: true security_opt: diff --git a/apps/trek/3.3.0/scripts/.gitkeep b/apps/trek/4.0.0/scripts/.gitkeep similarity index 100% rename from apps/trek/3.3.0/scripts/.gitkeep rename to apps/trek/4.0.0/scripts/.gitkeep diff --git a/apps/trek/4.0.0/scripts/init.sh b/apps/trek/4.0.0/scripts/init.sh new file mode 100755 index 000000000..78af06334 --- /dev/null +++ b/apps/trek/4.0.0/scripts/init.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +set -euo pipefail +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export PATH + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" +ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}" + +read_env_value() { + local key="$1" + [[ -f "$ENV_FILE" ]] || return 0 + local value + value="$(sed -n "s/^${key}=//p" "$ENV_FILE" | tail -n 1)" + case "$value" in + \"*\") value="${value#\"}"; value="${value%\"}" ;; + \'*\') value="${value#\'}"; value="${value%\'}" ;; + esac + printf '%s\n' "$value" +} + +configured_value() { + local key="$1" + local default_value="$2" + local value + value="${!key:-}" + if [[ -z "$value" ]]; then + value="$(read_env_value "$key")" + fi + printf '%s\n' "${value:-$default_value}" +} + +resolve_app_path() { + local key="$1" + local raw="$2" + local clean candidate resolved current part + local -a parts=() + case "$raw" in + ""|/*|.|..|../*|*/../*|*/..) echo "unsafe ${key} path" >&2; return 1 ;; + esac + if [[ "$raw" =~ [[:cntrl:]] ]]; then + echo "unsafe ${key} path" >&2 + return 1 + fi + clean="${raw#./}" + [[ -n "$clean" ]] || { echo "unsafe ${key} path" >&2; return 1; } + command -v realpath >/dev/null 2>&1 || { echo "realpath is required" >&2; return 1; } + candidate="$ROOT_DIR/$clean" + resolved="$(realpath -m -- "$candidate")" || { echo "unsafe ${key} path" >&2; return 1; } + case "$resolved" in + "$ROOT_DIR"/*) ;; + *) echo "unsafe ${key} path" >&2; return 1 ;; + esac + current="$ROOT_DIR" + IFS='/' read -r -a parts <<< "$clean" + for part in "${parts[@]}"; do + [[ -z "$part" || "$part" == "." ]] && continue + current="$current/$part" + if [[ -L "$current" ]]; then + echo "unsafe ${key} path" >&2 + return 1 + fi + done + printf '%s\n' "$resolved" +} + +resolve_direct_child() { + local key="$1" + local raw="$2" + local clean path + clean="${raw#./}" + if [[ -z "$clean" || "$clean" == */* ]]; then + echo "unsafe ${key} path: lifecycle directories must be direct children of the version root" >&2 + return 1 + fi + path="$(resolve_app_path "$key" "$raw")" + [[ "$path" == "$ROOT_DIR/$clean" ]] || { echo "unsafe ${key} path" >&2; return 1; } + printf '%s\n' "$path" +} + +verify_trusted_root_chain() { + local current owner mode + [[ "$(id -u)" == "0" ]] || { echo "directory ownership initialization must run as root" >&2; return 1; } + command -v stat >/dev/null 2>&1 || { echo "stat is required" >&2; return 1; } + current="$ROOT_DIR" + while [[ "$current" != "/" ]]; do + [[ -d "$current" && ! -L "$current" ]] || { echo "unsafe version root chain: $current" >&2; return 1; } + IFS=':' read -r owner mode < <(stat -c '%u:%a' -- "$current") + [[ "$owner" == "0" ]] || { echo "unsafe version root chain owner: $current" >&2; return 1; } + [[ "$mode" =~ ^[0-7]{3,4}$ ]] || { echo "unsafe version root chain mode: $current" >&2; return 1; } + (( (8#$mode & 0022) == 0 )) || { echo "unsafe version root chain permissions: $current" >&2; return 1; } + current="$(dirname -- "$current")" + done +} + +ensure_dir() { + local key="$1" + local raw + local path + raw="$(configured_value "$key" "$2")" + path="$(resolve_app_path "$key" "$raw")" + mkdir -p -- "$path" + [[ "$(resolve_app_path "$key" "$raw")" == "$path" ]] || { echo "unsafe ${key} path" >&2; return 1; } +} + +ensure_dir "APP_DATA_DIR" "./data" +ensure_dir "APP_UPLOADS_DIR" "./data/uploads" diff --git a/apps/trek/3.3.0/scripts/uninstall.sh b/apps/trek/4.0.0/scripts/uninstall.sh similarity index 100% rename from apps/trek/3.3.0/scripts/uninstall.sh rename to apps/trek/4.0.0/scripts/uninstall.sh diff --git a/apps/trek/4.0.0/scripts/upgrade.sh b/apps/trek/4.0.0/scripts/upgrade.sh new file mode 100755 index 000000000..5ec28d784 --- /dev/null +++ b/apps/trek/4.0.0/scripts/upgrade.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" +exec "$SCRIPT_DIR/init.sh" diff --git a/apps/trek/README.md b/apps/trek/README.md index d654b5b4b..e6984f5b1 100644 --- a/apps/trek/README.md +++ b/apps/trek/README.md @@ -22,6 +22,9 @@ http://服务器IP:端口 - `APP_DATA_DIR`:持久化 `/app/data` - `APP_UPLOADS_DIR`:持久化 `/app/uploads` +## 安全风险提示 +维护侧对候选镜像的固定 digest 扫描发现当前基础镜像层包含 Critical=10、High=78 项漏洞,部分项目暂无上游修复版本。该版本已完成真实 1Panel 安装、升级、重启和卸载实装;使用前请评估暴露面,并优先部署在可信内网,等待上游镜像更新。 + ## Introduction TREK is a travel planning and collaborative map application with itineraries, budgets, files, maps, and multi-user collaboration. @@ -31,6 +34,9 @@ TREK is a travel planning and collaborative map application with itineraries, bu - Can auto-seed the first admin account on initial startup - Preserves the upstream read-only root filesystem and minimal privilege setup +## Security risk notice +The maintainer scan of the pinned candidate image found Critical=10 and High=78 vulnerabilities in the current base image layers; some findings have no upstream fix yet. The version passed a real 1Panel install, upgrade, restart, and uninstall test. Assess your exposure before use, prefer a trusted network, and follow upstream image updates. + ## 参考资料 - 源码: - 文档: diff --git a/apps/trek/data.yml b/apps/trek/data.yml index 0729fee1e..7c98419be 100644 --- a/apps/trek/data.yml +++ b/apps/trek/data.yml @@ -1,15 +1,24 @@ name: TREK tags: - - Tool +- Tool title: 旅行计划与协作地图应用 description: 旅行计划与协作地图应用 additionalProperties: key: trek name: TREK tags: - - Tool + - Tool + type: tool + website: https://github.com/mauriceboe/TREK + document: https://github.com/mauriceboe/TREK/blob/main/README.md + github: https://github.com/mauriceboe/TREK shortDescZh: 旅行计划与协作地图应用 shortDescEn: Travel planning and collaborative map app + crossVersionUpdate: true + limit: 0 + architectures: + - amd64 + - arm64 description: en: Travel planning and collaborative map app. zh: 旅行计划与协作地图应用。 @@ -19,13 +28,3 @@ additionalProperties: ru: Приложение для планирования путешествий и совместной работы с картами. ms: Aplikasi perancangan perjalanan dan peta kolaboratif. pt-br: Aplicativo de planejamento de viagens e mapa colaborativo. - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/mauriceboe/TREK - github: https://github.com/mauriceboe/TREK - document: https://github.com/mauriceboe/TREK/blob/main/README.md - architectures: - - amd64 - - arm64 diff --git a/apps/trek/latest/.env.sample b/apps/trek/latest/.env.sample deleted file mode 100644 index 14df8eb37..000000000 --- a/apps/trek/latest/.env.sample +++ /dev/null @@ -1,10 +0,0 @@ -PANEL_APP_PORT_HTTP=3000 -APP_DATA_DIR=./data -APP_UPLOADS_DIR=./data/uploads -ENCRYPTION_KEY= -TZ=UTC -LOG_LEVEL=info -ADMIN_EMAIL= -ADMIN_PASSWORD= -ALLOWED_ORIGINS= -CONTAINER_NAME= diff --git a/apps/trek/latest/data.yml b/apps/trek/latest/data.yml deleted file mode 100644 index 5a3c04466..000000000 --- a/apps/trek/latest/data.yml +++ /dev/null @@ -1,156 +0,0 @@ -additionalProperties: - formFields: - - default: 3000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Web Port - labelZh: Web 访问端口 - label: - en: Web Port - zh: Web 访问端口 - zh-Hant: Web 存取埠 - ja: Web ポート - ko: Web 포트 - ru: Веб-порт - ms: Port Web - pt-br: Porta Web - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: APP_DATA_DIR - labelEn: Data Directory - labelZh: 数据目录 - label: - en: Data Directory - zh: 数据目录 - zh-Hant: 資料目錄 - ja: データディレクトリ - ko: 데이터 디렉터리 - ru: Каталог данных - ms: Direktori Data - pt-br: Diretório de Dados - required: true - type: text - - default: ./data/uploads - edit: true - envKey: APP_UPLOADS_DIR - labelEn: Uploads Directory - labelZh: 上传目录 - label: - en: Uploads Directory - zh: 上传目录 - zh-Hant: 上傳目錄 - ja: アップロードディレクトリ - ko: 업로드 디렉터리 - ru: Каталог загрузок - ms: Direktori Muat Naik - pt-br: Diretório de Uploads - required: true - type: text - - default: '' - edit: true - envKey: ENCRYPTION_KEY - labelEn: Encryption Key - labelZh: 加密密钥 - label: - en: Encryption Key - zh: 加密密钥 - zh-Hant: 加密密鑰 - ja: 暗号化キー - ko: 암호화 키 - ru: Ключ шифрования - ms: Kunci Penyulitan - pt-br: Chave de Criptografia - required: false - type: password - - default: UTC - edit: true - envKey: TZ - labelEn: Timezone - labelZh: 时区 - label: - en: Timezone - zh: 时区 - zh-Hant: 時區 - ja: タイムゾーン - ko: 시간대 - ru: Часовой пояс - ms: Zon waktu - pt-br: Fuso horário - required: true - type: text - - default: info - edit: true - envKey: LOG_LEVEL - labelEn: Log Level - labelZh: 日志级别 - label: - en: Log Level - zh: 日志级别 - zh-Hant: 日誌級別 - ja: ログレベル - ko: 로그 레벨 - ru: Уровень журнала - ms: Tahap Log - pt-br: Nível de Log - required: true - type: select - values: - - label: debug - value: debug - - label: info - value: info - - label: warn - value: warn - - label: error - value: error - - default: '' - edit: true - envKey: ADMIN_EMAIL - labelEn: Admin Email - labelZh: 管理员邮箱 - label: - en: Admin Email - zh: 管理员邮箱 - zh-Hant: 管理員郵箱 - ja: 管理者メール - ko: 관리자 이메일 - ru: Почта администратора - ms: Emel Pentadbir - pt-br: E-mail do Admin - required: false - type: text - - default: '' - edit: true - envKey: ADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - label: - en: Admin Password - zh: 管理员密码 - zh-Hant: 管理員密碼 - ja: 管理者パスワード - ko: 관리자 비밀번호 - ru: Пароль администратора - ms: Kata Laluan Pentadbir - pt-br: Senha do Admin - required: false - type: password - - default: '' - edit: true - envKey: ALLOWED_ORIGINS - labelEn: Allowed Origins - labelZh: 允许来源 - label: - en: Allowed Origins - zh: 允许来源 - zh-Hant: 允許來源 - ja: 許可オリジン - ko: 허용 출처 - ru: Разрешенные origins - ms: Origin Dibenarkan - pt-br: Origens Permitidas - required: false - type: text diff --git a/apps/trek/latest/data/.gitkeep b/apps/trek/latest/data/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/trek/latest/scripts/.gitkeep b/apps/trek/latest/scripts/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/trek/latest/scripts/init.sh b/apps/trek/latest/scripts/init.sh deleted file mode 100755 index d8755e2d1..000000000 --- a/apps/trek/latest/scripts/init.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -DATA_DIR="${APP_DATA_DIR:-./data}" -UPLOADS_DIR="${APP_UPLOADS_DIR:-./data/uploads}" -mkdir -p "$DATA_DIR" "$UPLOADS_DIR" diff --git a/apps/trek/latest/scripts/uninstall.sh b/apps/trek/latest/scripts/uninstall.sh deleted file mode 100755 index 024242bb3..000000000 --- a/apps/trek/latest/scripts/uninstall.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -euo pipefail - -docker-compose down --volumes diff --git a/apps/trek/latest/scripts/upgrade.sh b/apps/trek/latest/scripts/upgrade.sh deleted file mode 100755 index d8755e2d1..000000000 --- a/apps/trek/latest/scripts/upgrade.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -euo pipefail - -DATA_DIR="${APP_DATA_DIR:-./data}" -UPLOADS_DIR="${APP_UPLOADS_DIR:-./data/uploads}" -mkdir -p "$DATA_DIR" "$UPLOADS_DIR" diff --git a/apps/trek/logo.png b/apps/trek/logo.png index 2dbd73c5b899e263621127b71a12bbb29d1f9dc4..cd3b171a66f116c0e0d84dce58d22c9b38c59a9d 100644 GIT binary patch delta 3724 zcmV;74s-G79?Tw)Bmp3iC3yqU)7O!qPJhVC&bPY2QCDSNWO3{4?$+4bNKjte+~1<5 zt?23Nbb5t%eTeh(^jKePtgyB~M^>b$ug}rd-r(Zz@bQF+lfc5q=jiIm%g}&@j}R9t z4j3ypKu=OwW)2o90!|9H000f=Nklxzs zjWJPX#BnP`3tG#VE06AlM(xxVbetIyW~FuWMxYxNrL`Yp%*7roWdj1{K4@LPtz|}%T@4Y4U`q!{{W%QnMA6>;XBpEU;zyYYEy0ufa|pWMH_YtR z>8)a&IWymy&$qnm%zS?4%$fOoKHu7!&zsln#S%_fI>a|R&|2uvJM-PMDQoZCstHE@ zH>(IU_1IZ^?}O(2g|mt4A~0N^gV4GTMQf$*>_hcQD)ZS(3Zt3HAAcxm>nhuI5wpIW z41GnFUNM510+|9!Lb`5^tGmh2*U&%@W%h1FZ98-~t~2IhGV|_L!f<`|LTlT`!Tg4q zT}p<&egh-)*#qq+WWxCkv-va``lcRyc6*^cIT`=m3b*!>q4x>nnJIVSfOp>-!)7s-nrT}g(1u%-k%d!cnSmuohkCqqBfNMR=X`l`e6vvr0)N*BDxl*CN3 znBRW8oy`2?AC$yQZf(Lz%=owA@{45Xr^ji`jZfEcw2t0maew$E8G4R1X6hV<@tnEA zvt;JIN0i3gf$quk8}%?5`uT>^n8}TwRbO5d>jzU@TGE)QmHX<;<>LN7lcDcXA~QL6 ztp55St|c?yJ)}fta`m}4&p-Pz8T$5;5}C<~pL;WmIQT3XdMnk=#De(QhTcyXyjxtr zvBSa4%++i8Lw|^w`r~KEU2Y~re^m$`t?nyAQ1&RDZp@s$k*eyY#d)0ie}&$!EWq1(>P7f1_@Izyw*E_XL36i%K@z zA!d^JbAJha^nEh)n>7F;QGC1iiUZ6f@r`mHZk{JY|4Rb|S$zBXn(cTh2p!mi1@shI znzv*K^s6Yoy04%FQejpC` z1`)Fg$92_xMQg29dY0z-h5%xj+%H1ROkVde{iw~3%RvaH^0$s%so!Ow151e z2q1`BC)?Rl4nrI3>^9CRgXPC$=!--EL3BpFI0|W9C-!jK%iWVvC%0O?K4gH1_a%yV z&k;PQ48!h5EF9Tt8MMdkHi?zEyY~!%h-mhqmwNBqlD+!ekv!8H9W3>^roOSiy}i9X zpU>ypBi6;2n#x++?9sLOXHTD>v42;enaNcTcT~wUTUylk{9~^~?fPG*8ps6S*0TTS zx8Al>OZBnd+*};N(8FhHjQf2&y^Y~76wD(vzR`Nas>vg1$=IVk!#k>HdmwXH?+R#p zuC1QT>zmU|=rbS09ER?UYogCLZ0Ns{xpoZlTiT92dYR35W(;9wSMnO@Mt?A@`L?O& z+9_PMJS^X%E3%j4JWOScR=%(iDc?$I18+UK%s zL2BvGtA(x2>BNNJ?psGHsDJg^hORDF9Ya4B=R-jU$+xo0OP@4*psirEt9440r?`DQ zpn4pw(r(y}k;o&`cI@G2hAdC1n9n*4)Kf;7|>;~Xjh zVQirN2Z}6D@t#1^>Tz`awm$tA8l7u$$zjA%Ldn zj@)r?gaK2l_O-=@7Un640NVVVo`#}MQy~T8=}=s!9}26-08NpGy2a!ig~5#&dHe>g z-wdc8r_Zo{wXwEe1YE_Q8AA6(Y3Xf1Ts@BG-L>T!F=%bVF~2M=y?2V_)#IKzobAdK zbB{2yOb-TCkE3$`GJn4R1nvPN?3O;KNnAaSu5XrZ>SH)Gj3HUK^s_?nCg_eNfosH| zVGOiL4}LF-DYw!EZ$B%pD1CRb5HyT2Sp6_{^*Fjd+f)g$anLZvfMng$^8wZ4=(=;% zCv{Qi^4U`&J=lB1B(5I!)!{gpRO*E;=UTz^ESS3JLc_d)~bdLehI(>%qCdqum2i-isPE?0`cgXVUaXh}wrG|E)Vdrv}qHgIS z)#JW897|2DI!|LP^SE><3V_P$arzAFiz6QC)7E2#NY*XAV2G>7@%UEi8y@$lpSq`{ z-6Q}_kfqssm4Azw9q95&djE(tkse%M5fRbpWahg+<|Cl3=UxKF2&a~B8X}_Eon+{bvk{iI z>sEjqozg}s|@~? z-W_=_6Ts#bGb{Hw+hgjmQ)FrK0o#yS8EgBEVwT;?`f6Ho-^lEZXd3)M_3jC}BR>pa zuG9mzeSe2C^Az2YncT|E%nHVOX7z}^0;G3G{<+Dd{#-28*mm6W>z3&=tbb^+Z)6$Q z&;}U!{5n3IG%Xzkb`F<1Od9e0I!>Qq-MxAu--Ess!r*=+oj${QeI?cBz{PebGq2NU zSZ|V4IVx_I*7wB|%&_ju&hA1ziW3oIo~7KZ34dl-zmqaol2=(8Bblem()8XECY-b<4{!}?$)^XKw4XUJbjo}R2j>TgsFyIiLY0 z*hu`GWt?**&~4}mnOpONL#f^PIm>d+0?^6K9GM>!t=u1rw*A?HPTParGe0P1&VM}d zbCAp<7oJ zPyF0scA*C|y8*{&krtiZ4YLD1+@H(m*V$6XBVwei2s<)6$rxd_q0`Uqkq2R=9Tl}t qo^9q~(0%d7Xyyvt%GX7hPyP?1L{pUA*16FD0000+fwm?T#q^PgY(beAI;_vYB;p63miIc#>$LHwk z$;;4yg^v&yD-IYdH$YGP{QOc_W)2o9Ijqz<000g5Nkl*!pplxS&PzUbn=T9+^3Wwfc@tbY|H}Q?+rMd9HDKooD}QQdpt5uIN*?nPlAyKfW-dTw%!Q>bXfjb|hwK2t4aoHoTY#ZGe6JbfcoQ_G65> z*n_2PK)~Dut=DhYvY`dcYiiSBYLwOm3TS}3nbGCXP0L;_}Q*|-ODDSBOd5I|pM ziXSQ3R%dy33S6&XNhjO%<*``Vy3RJE)ZQBIGk?&NnIg`i*Ul013lj*JJHt8yTRKSU&tYgMiuUe5%b5NU zKgvvK2%g-ZL(tv6VJ63pZxrjqiRs34y5U_XrqdHAPE4oM>Bh!%TEA}2=5WH&KEBa{ z)Ynr@#=Sv#i|buj9`Sw)zs!_L}!A2g@WoJ?G2f&Tg&gx2d&bbqbXt$nCINo78H zPGK-J`2!_wU1i%YVwUHVp)aV?D+VxAAX8vTNZYM(aXT6M5^Cta%-)TtZHI2hb;g`c zX5PL?=&#RSXl>g#nBOpybIH(`uV8>ad!XHfOgO(`R-YzAU)8AVP<}&cwSSS!{MjB2(z+(J_TI95YjHgp`o;ta%;X51*4F(h1a0SF zUv)Tsw$AW->4JBkl9)*r^V@GXlbIj`6pi`Ltmd$A~QMhb7zJTd!Hpk zZ=~9pSP(zk(0{w>f_IGzICeOgnYnr`e+V&Ccl_+Q%hhD)CxzhA;`Z$8dd+6D*=$z7 zo6Tky4>`b0-SM*xedU{E=x-GO(Eh`&xa-VU-?5*Wg84e{aX3Pj<}3lA`BTA1zd!IY zvjr`v9Aktm%`*Z(&n0sIVvl`xX6nrJTQwjv`8FB)hkpeDfGEDb`6GLntrJnwR)E!$ zWav)}08Cy=KKtqldzs0nb)h~P%#xW;eoX*q?}g}AW_-*{wAar047SLm4Xt$|xFlc67O5kL@CA>Te@uWoP*+PH1d8nUpxBTGX79e$8}_WYa!b|&&e8@+Cw zT4!lqrwiU`2Eei^{_+6K$Z z$;5dd0>;@dw|8=Aw=MO>#F-J&C;rQhxo z06r!Xyi0BGs1ua!n~O1y$bW8S zjkAy&OSSVG?Z({0^h?VhiU5MBb+VZ)mZk1SxyLrnHh=?ZdJE?b0&DpEZ zEy**D(ZN!m*VI>bH#avor_F98#eUc$h>w8@_$>}jy*b= z&2VP)VP;qIYUo-ptogRF=h`T~5hMOwNQn!sjJBcud(aP5BlPeDjxX0Ys^4&9N2*2` z-DZY9Tr3ugd2k(Ss*w-o1J~i!)&>Z)74ziLjq}6T zn{(F;JIuCcJMK{*E86F>OMgLX>CcOWt1>+nl0b#76{RfIHPw|dG(&}+^{ih+?QRvV)xPK+eQ@mOdNvp>l zX(;EI31O=!v#^`wsv&^J=#JcSZ-fC;tLC-Eg%;*1hyYssoSufFR#PDbVtWs12+m|3O=y{gAixqlYle**V_5q3+T(j=}PN7pxVH}%mU z8pe>UTl!HUcq4R2lE5`$&@cvCqzAtj#guF5g14I$SCp1mJZadh1{=#si9bouNlksj>aV-i=7yXtTpOn)kMLYMQe2ckOM#}xtK z^k$(m?>eO}0$t{0gnDpJk+^ysU3V4<&{ZBu7y#X30JKb>VZBN+-|#`#J;ok1E zym}muZ*!@kU1-?3+_|V*x=;1Es}9FfQ>)g~7|T2^?TZ4SvU;38!}|1q2l}-2m?4sN zOV1eM>Tx{2m4Et%$350h-BZ$T5`ad?((F9X#mo+L`J}x9{lBtqk^=%@?j}P&UNR4X zcIqkOEDaH8j2Tu8f^IxtRMah9bd&H1Gpvtz2((+9z?Mi4E-#3P=y)>o%^&jt(AIM= z0b_(y%U2B%(d0%l^oPj+OWSoTz!wgF{tUZvkOc@uqdK4V(3WDhy z3nC&OVTScy-rLe>J+Kp`cAq}}XsySs_3D!q5z!b~nos)(9%stkgM~vI0zg~K_`0Ht zN|fwY7LRXDA7)m~va$92I;v}gvC80I>D`gHG68H}F|%@?vpu8^J4Ti!@39S;m9e(p zAZFREtbePfCHIZY-iW5g?^W*}p*!+@59UfeVB5DZGmp_7naQop%&cInXI2mBD?oa8 zd(bewQYwzziysB!}^C7`$m@W8rlE@pI^taTbVR19R+p{mvxvl;Q4i&KEt|w z@kqW0eJO>c*U*ERC+Rb+UrZ#YV5NARSMD*GnMZii*i@#^m6^GUrw8|JkCCN0 zcGM9+m-@WkgnnpwpE;*jS{^U+j`-P9={zr~RYGq(rza0Cn65oopM-hP(tY~*c`r3C z-45sQvXc{q@(gertc(;TvnA z%N=GHy8o<4T(0sw&&v}bXU?)b&yTV!%Z`qYj;g=K{W;5+i+?5yK&Q;7aBzN*NM36T z#Lups9q7T#!8uKm*XV=sbCxsboClysp9AVqf{nz_S;je60^Nijk-0HH*q7RkpMSF~ z=PUr7%*>JbLD98V&=>fKew4n=tMhnL;$Jp4s68F9_9jiOn**U zmeTpPu2{JmkJ*|88ukUUtPykMe&$^L9d;gQbn7^A7HQGhT{An-{r$Oo zew{6KJRnBOim)TIlZ+8&8#?{$9(WK|+EG#a