diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/.env.sample b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/.env.sample new file mode 100644 index 000000000..67b377a18 --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/.env.sample @@ -0,0 +1,5 @@ +PANEL_APP_PORT_HTTPS=41004 +HTTP_PWD=replace-with-a-random-value +SHM_SIZE=1024m +APP_DATA_DIR=./data +CONTAINER_NAME= diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/data.yml b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/data.yml new file mode 100644 index 000000000..fabe03407 --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/data.yml @@ -0,0 +1,69 @@ +additionalProperties: + formFields: + - default: 41004 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + label: + en: HTTPS Port + zh: HTTPS 端口 + zh-Hant: HTTPS 連接埠 + ja: HTTPS ポート + ko: HTTPS 포트 + ru: Порт HTTPS + ms: Port HTTPS + pt-br: Porta HTTPS + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: HTTP_PWD + labelEn: Access Password + labelZh: 访问密码 + label: + en: Access Password + zh: 访问密码 + zh-Hant: 存取密碼 + ja: アクセスパスワード + ko: 접속 비밀번호 + ru: Пароль доступа + ms: Kata Laluan Akses + pt-br: Senha de Acesso + random: true + required: true + rule: paramComplexity + type: password + - default: 1024m + edit: true + envKey: SHM_SIZE + labelEn: Shared Memory Size + labelZh: 共享内存大小 + label: + en: Shared Memory Size + zh: 共享内存大小 + zh-Hant: 共享記憶體大小 + ja: 共有メモリサイズ + ko: 공유 메모리 크기 + ru: Размер общей памяти + ms: Saiz Memori Dikongsi + pt-br: Tamanho da Memória Compartilhada + required: true + type: text + - 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 diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/docker-compose.yml b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/docker-compose.yml new file mode 100644 index 000000000..2460b2272 --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/docker-compose.yml @@ -0,0 +1,35 @@ +services: + chromium-kasm: + image: "kasmweb/chromium:1.19.0-rolling-weekly@sha256:3afc8235f6a6231cc7c7cc5d4b37865e152ff2bd255d9aa7d0aa0525a43bed43" + container_name: ${CONTAINER_NAME} + restart: unless-stopped + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTPS}:6901" + environment: + - VNC_PW=${HTTP_PWD} + shm_size: ${SHM_SIZE} + cap_drop: + - ALL + security_opt: + - no-new-privileges:true + healthcheck: + test: + - CMD-SHELL + - >- + curl --insecure --fail --silent --show-error + --user "kasm_user:$$VNC_PW" + https://127.0.0.1:6901/ + interval: 30s + timeout: 10s + start_period: 90s + retries: 5 + volumes: + - "${APP_DATA_DIR}:/home/kasm-user" + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/init.sh b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/init.sh new file mode 100755 index 000000000..338044ef8 --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/init.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +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" +} + +data_raw="${APP_DATA_DIR:-}" +if [[ -z "$data_raw" ]]; then + data_raw="$(read_env_value APP_DATA_DIR)" +fi +data_raw="${data_raw:-./data}" + +[[ "$data_raw" != /* ]] || { + printf '%s\n' 'APP_DATA_DIR must be a relative path' >&2 + exit 1 +} + +data_dir="$(realpath -m -- "$ROOT_DIR/${data_raw#./}")" +case "$data_dir" in + "$ROOT_DIR"/*) ;; + *) + printf '%s\n' 'APP_DATA_DIR must remain inside the application version directory' >&2 + exit 1 + ;; +esac + +mkdir -p -- "$data_dir" +resolved_data_dir="$(realpath -e -- "$data_dir")" +case "$resolved_data_dir" in + "$ROOT_DIR"/*) ;; + *) + printf '%s\n' 'APP_DATA_DIR resolves outside the application version directory' >&2 + exit 1 + ;; +esac + +chown 1000:1000 -- "$resolved_data_dir" +chmod 0700 -- "$resolved_data_dir" diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/uninstall.sh b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/uninstall.sh new file mode 100755 index 000000000..e043feffb --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/uninstall.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Preserve APP_DATA_DIR so uninstall does not destroy user files. diff --git a/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/upgrade.sh b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/upgrade.sh new file mode 100755 index 000000000..692e341e2 --- /dev/null +++ b/apps/chromium-kasm/1.19.0-rolling-weekly-digest-3afc823/scripts/upgrade.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail + +"$(dirname "$0")/init.sh"