Update yaak-linuxserver app

Rebuilt-from-PR: #6975
Source-PR: https://github.com/okxlin/appstore/pull/6975
Maintainer-workflow: appstore-pr-maintainer
This commit is contained in:
okxlin
2026-09-18 09:59:10 +08:00
parent 9bca7abb81
commit a35689cb7f
17 changed files with 84 additions and 377 deletions
@@ -1,27 +0,0 @@
networks:
1panel-network:
external: true
services:
yaak:
image: "linuxserver/yaak:2026.7.0"
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
- "${PANEL_APP_PORT_HTTPS}:3001"
volumes:
- "${CONFIG_PATH}:/config"
environment:
- PUID=1000
- PGID=1000
- TZ=${TIME_ZONE}
- CUSTOM_USER=${CUSTOM_USER}
- PASSWORD=${PASSWORD}
- TITLE=${TITLE:-Yaak}
- SELKIES_UI_TITLE=${SELKIES_UI_TITLE:-Selkies}
- DASHBOARD=${DASHBOARD:-selkies-dashboard}
- LC_ALL=${LC_ALL}
labels:
createdBy: "Apps"
@@ -1,11 +0,0 @@
CONTAINER_NAME=yaak-linuxserver-compose-check
PANEL_APP_PORT_HTTP=3000
PANEL_APP_PORT_HTTPS=3001
CONFIG_PATH=./data/config
TIME_ZONE=Asia/Shanghai
CUSTOM_USER=admin
PASSWORD=linuxserver-change-me
TITLE=Yaak
SELKIES_UI_TITLE=Selkies
DASHBOARD=selkies-dashboard
LC_ALL=zh_CN.UTF-8
-189
View File
@@ -1,189 +0,0 @@
additionalProperties:
formFields:
- default: 3000
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: HTTP Port
labelZh: HTTP 端口
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 連接埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
required: true
type: number
rule: paramPort
- default: 3001
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
type: number
rule: paramPort
- default: ./data/config
edit: true
envKey: CONFIG_PATH
labelEn: Config folder path
labelZh: 配置文件路径
label:
en: Config folder path
zh: 配置文件路径
zh-Hant: 設定檔資料夾路徑
ja: 設定フォルダーのパス
ko: 설정 폴더 경로
ru: Путь к папке конфигурации
ms: Laluan folder konfigurasi
pt-br: Caminho da pasta de configuração
required: true
type: text
- default: Asia/Shanghai
edit: true
envKey: TIME_ZONE
labelEn: Time zone
labelZh: 时区
label:
en: Time zone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
required: true
type: text
- default: admin
edit: true
envKey: CUSTOM_USER
labelEn: Basic Auth Username
labelZh: 访问用户名(Basic Auth
label:
en: Basic Auth Username
zh: 访问用户名(Basic Auth
zh-Hant: 存取使用者名稱(Basic Auth
ja: ベーシック認証ユーザー名
ko: 기본 인증 사용자명
ru: Имя пользователя (Basic Auth)
ms: Nama pengguna (Basic Auth)
pt-br: Usuario Basic Auth
required: true
type: text
- default: linuxserver-change-me
edit: true
envKey: PASSWORD
labelEn: Basic Auth Password
labelZh: 访问密码(Basic Auth
label:
en: Basic Auth Password
zh: 访问密码(Basic Auth
zh-Hant: 存取密碼(Basic Auth
ja: ベーシック認証パスワード
ko: 기본 인증 비밀번호
ru: Пароль (Basic Auth)
ms: Kata laluan Basic Auth
pt-br: Senha Basic Auth
random: true
required: true
rule: paramComplexity
type: password
- default: Yaak
edit: true
envKey: TITLE
labelEn: Browser page title
labelZh: 浏览器页面标题
label:
en: Browser page title
zh: 浏览器页面标题
zh-Hant: 瀏覽器頁面標題
ja: ブラウザーのページタイトル
ko: 브라우저 페이지 제목
ru: Заголовок страницы браузера
ms: Tajuk halaman pelayar
pt-br: Titulo da pagina do navegador
required: false
type: text
- default: Selkies
edit: true
envKey: SELKIES_UI_TITLE
labelEn: Sidebar title
labelZh: 侧边栏标题
label:
en: Sidebar title
zh: 侧边栏标题
zh-Hant: 側邊欄標題
ja: サイドバータイトル
ko: 사이드바 제목
ru: Заголовок боковой панели
ms: Tajuk bar sisi
pt-br: Titulo da barra lateral
required: false
type: text
- default: selkies-dashboard
edit: true
envKey: DASHBOARD
labelEn: Dashboard UI
labelZh: 仪表盘界面
label:
en: Dashboard UI
zh: 仪表盘界面
zh-Hant: 儀表板介面
ja: ダッシュボード UI
ko: 대시보드 UI
ru: Интерфейс панели
ms: UI papan pemuka
pt-br: Interface do painel
required: false
type: select
values:
- label: selkies-dashboard
value: selkies-dashboard
- label: selkies-dashboard-zinc
value: selkies-dashboard-zinc
- label: selkies-dashboard-wish
value: selkies-dashboard-wish
- default: zh_CN.UTF-8
edit: true
envKey: LC_ALL
labelEn: Desktop language locale
labelZh: 桌面语言区域
label:
en: Desktop language locale
zh: 桌面语言区域
zh-Hant: 桌面語言區域
ja: デスクトップ言語ロケール
ko: 데스크톱 언어 로케일
ru: Локаль языка рабочего стола
ms: Lokal bahasa desktop
pt-br: Localidade do idioma da area de trabalho
required: false
type: text
- default: Asia/Shanghai
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
@@ -1,78 +0,0 @@
#!/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}"
fail() {
printf '%s\n' "$1" >&2
exit 1
}
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"
}
CONFIG_PATH_RAW="$(configured_value CONFIG_PATH ./data/config)"
CONFIG_PATH="$(resolve_app_path CONFIG_PATH "$CONFIG_PATH_RAW")"
install -d -m 0750 -- "$CONFIG_PATH"
if [[ "$(id -u)" -eq 0 ]]; then
chown 1000:1000 -- "$CONFIG_PATH"
fi
[[ "$(stat -c '%u:%g' "$CONFIG_PATH")" == "1000:1000" ]] || fail "CONFIG_PATH must be owned by UID/GID 1000:1000"
@@ -1,2 +0,0 @@
#!/bin/bash
docker-compose down --volumes
@@ -1,57 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${ENV_FILE:-$ROOT_DIR/.env}"
generate_secret() {
if [[ -r /dev/urandom ]]; then
local secret=""
local chunk=""
while [[ ${#secret} -lt 24 ]]; do
chunk="$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c $((24 - ${#secret})) || true)"
secret="${secret}${chunk}"
done
printf '%s\n' "$secret"
else
printf '%s\n' 'linuxserver-change-me'
fi
}
ensure_env_default() {
local key="$1"
local value="$2"
local fill_empty="${3:-false}"
if [[ ! -f "$ENV_FILE" ]]; then
echo "$ENV_FILE not found; skipped $key migration"
return
fi
if grep -qE "^${key}=" "$ENV_FILE"; then
local current
current="$(sed -n -E "s/^${key}=//p" "$ENV_FILE" | tail -n 1)"
current="${current%\"}"
current="${current#\"}"
current="${current%\'}"
current="${current#\'}"
if [[ "$fill_empty" == "true" && -z "$current" ]]; then
sed -i -E "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
echo "Updated empty $key"
else
echo "$key already exists"
fi
return
fi
printf '%s=%s\n' "$key" "$value" >> "$ENV_FILE"
echo "Added $key"
}
if [[ -f "$ENV_FILE" ]]; then
ensure_env_default "CUSTOM_USER" "admin" true
ensure_env_default "PASSWORD" "$(generate_secret)" true
ensure_env_default "LC_ALL" "zh_CN.UTF-8" false
else
echo "$ENV_FILE not found; skipped LinuxServer environment migration"
fi
@@ -8,12 +8,16 @@ additionalProperties:
label:
en: HTTP Port
zh: HTTP 端口
zh-Hant: HTTP 連接埠
zh-hant: HTTP 連接埠
ja: HTTP ポート
ko: HTTP 포트
ru: HTTP-порт
ms: Port HTTP
pt-br: Porta HTTP
tr: HTTP bağlantı noktası
es-es: Puerto HTTP
fa: درگاه HTTP
lo: ພອດ HTTP
required: true
type: number
rule: paramPort
@@ -25,12 +29,16 @@ additionalProperties:
label:
en: Https Port
zh: Https 端口
zh-Hant: Https 連接埠
zh-hant: Https 連接埠
ja: Https ポート
ko: Https 포트
ru: Порт Https
ms: Port Https
pt-br: Porta Https
tr: HTTPS bağlantı noktası
es-es: Puerto HTTPS
fa: درگاه HTTPS
lo: ພອດ HTTPS
required: true
type: number
rule: paramPort
@@ -42,12 +50,16 @@ additionalProperties:
label:
en: Config folder path
zh: 配置文件路径
zh-Hant: 設定檔資料夾路徑
zh-hant: 設定檔資料夾路徑
ja: 設定フォルダーのパス
ko: 설정 폴더 경로
ru: Путь к папке конфигурации
ms: Laluan folder konfigurasi
pt-br: Caminho da pasta de configuração
tr: Yapılandırma klasörü yolu
es-es: Ruta de la carpeta de configuración
fa: مسیر پوشه پیکربندی
lo: ເສັ້ນທາງໂຟນເດີການຕັ້ງຄ່າ
required: true
type: text
- default: Asia/Shanghai
@@ -58,12 +70,16 @@ additionalProperties:
label:
en: Time zone
zh: 时区
zh-Hant: 時區
zh-hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
tr: Saat dilimi
es-es: Zona horaria
fa: منطقه زمانی
lo: ເຂດເວລາ
required: true
type: text
- default: admin
@@ -74,12 +90,16 @@ additionalProperties:
label:
en: Basic Auth Username
zh: 访问用户名(Basic Auth
zh-Hant: 存取使用者名稱(Basic Auth
zh-hant: 存取使用者名稱(Basic Auth
ja: ベーシック認証ユーザー名
ko: 기본 인증 사용자명
ru: Имя пользователя (Basic Auth)
ms: Nama pengguna (Basic Auth)
pt-br: Usuario Basic Auth
tr: Basic Auth kullanıcı adı
es-es: Nombre de usuario de Basic Auth
fa: نام کاربری احراز هویت پایه
lo: ຊື່ຜູ້ໃຊ້ Basic Auth
required: true
type: text
- default: linuxserver-change-me
@@ -90,12 +110,16 @@ additionalProperties:
label:
en: Basic Auth Password
zh: 访问密码(Basic Auth
zh-Hant: 存取密碼(Basic Auth
zh-hant: 存取密碼(Basic Auth
ja: ベーシック認証パスワード
ko: 기본 인증 비밀번호
ru: Пароль (Basic Auth)
ms: Kata laluan Basic Auth
pt-br: Senha Basic Auth
tr: Basic Auth parolası
es-es: Contraseña de Basic Auth
fa: گذرواژه احراز هویت پایه
lo: ລະຫັດຜ່ານ Basic Auth
random: true
required: true
rule: paramComplexity
@@ -108,12 +132,16 @@ additionalProperties:
label:
en: Browser page title
zh: 浏览器页面标题
zh-Hant: 瀏覽器頁面標題
zh-hant: 瀏覽器頁面標題
ja: ブラウザーのページタイトル
ko: 브라우저 페이지 제목
ru: Заголовок страницы браузера
ms: Tajuk halaman pelayar
pt-br: Titulo da pagina do navegador
tr: Tarayıcı sayfa başlığı
es-es: Título de la página del navegador
fa: عنوان صفحه مرورگر
lo: ຫົວຂໍ້ໜ້າເບຣາວເຊີ
required: false
type: text
- default: Selkies
@@ -124,12 +152,16 @@ additionalProperties:
label:
en: Sidebar title
zh: 侧边栏标题
zh-Hant: 側邊欄標題
zh-hant: 側邊欄標題
ja: サイドバータイトル
ko: 사이드바 제목
ru: Заголовок боковой панели
ms: Tajuk bar sisi
pt-br: Titulo da barra lateral
tr: Kenar çubuğu başlığı
es-es: Título de la barra lateral
fa: عنوان نوار کناری
lo: ຫົວຂໍ້ແຖບດ້ານຂ້າງ
required: false
type: text
- default: selkies-dashboard
@@ -140,12 +172,16 @@ additionalProperties:
label:
en: Dashboard UI
zh: 仪表盘界面
zh-Hant: 儀表板介面
zh-hant: 儀表板介面
ja: ダッシュボード UI
ko: 대시보드 UI
ru: Интерфейс панели
ms: UI papan pemuka
pt-br: Interface do painel
tr: Gösterge paneli arayüzü
es-es: Interfaz del panel
fa: رابط کاربری داشبورد
lo: ສ່ວນຕິດຕໍ່ Dashboard
required: false
type: select
values:
@@ -163,12 +199,16 @@ additionalProperties:
label:
en: Desktop language locale
zh: 桌面语言区域
zh-Hant: 桌面語言區域
zh-hant: 桌面語言區域
ja: デスクトップ言語ロケール
ko: 데스크톱 언어 로케일
ru: Локаль языка рабочего стола
ms: Lokal bahasa desktop
pt-br: Localidade do idioma da area de trabalho
tr: Masaüstü dil yerel ayarı
es-es: Configuración regional del idioma del escritorio
fa: منطقه زبانی دسکتاپ
lo: ພາສາທ້ອງຖິ່ນຂອງເດັສທັອບ
required: false
type: text
- default: Asia/Shanghai
@@ -179,11 +219,15 @@ additionalProperties:
label:
en: Timezone
zh: 时区
zh-Hant: 時區
zh-hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon waktu
pt-br: Fuso horário
tr: Saat dilimi
es-es: Zona horaria
fa: منطقه زمانی
lo: ເຂດເວລາ
required: true
type: text
@@ -3,7 +3,7 @@ networks:
external: true
services:
yaak:
image: "linuxserver/yaak:2026.7.1"
image: "linuxserver/yaak:2026.8.0"
container_name: ${CONTAINER_NAME}
restart: always
networks:
+1
View File
@@ -60,6 +60,7 @@ Yaak is a desktop API client distributed through a LinuxServer.io container imag
## 安全提示
- LinuxServer 桌面镜像包含图形桌面、基础系统和配套工具,镜像扫描器可能报告继承自这些组件的 High 或 Critical 漏洞;固定镜像版本不代表不存在已知漏洞。
- 请及时更新应用,仅向可信网络开放访问端口,使用随机生成的强 Basic Auth 密码,并优先通过 HTTPS 反向代理提供外部访问。
- 当前复核的 `linux-libc-dev` Critical 漏洞(CVE-2026-64535、CVE-2026-64564、CVE-2026-72287、CVE-2026-74394)来自 `linuxserver/yaak:2026.8.0` 的基础系统,当前 Trivy 报告未提供修复版本;本版本按已授权风险接受流程合并,不代表漏洞已修复。请在上游镜像提供修复版本后及时更新,并避免将管理入口暴露到不可信网络。
## 参考资料
- 官网: <https://yaak.app/>
+22
View File
@@ -0,0 +1,22 @@
# yaak-linuxserver
## Introduction
Yaak is a browser-accessible desktop API client distributed in a LinuxServer.io container image. It supports organizing and executing REST, GraphQL, and gRPC requests.
## Features
- REST, GraphQL, and gRPC request workflows
- Browser-accessible desktop interface
- Basic Auth protection for the web entry point
## Usage
- Open the HTTP port configured by `PANEL_APP_PORT_HTTP` after installation.
- Use `CUSTOM_USER` and `PASSWORD` for Basic Auth.
- Configuration is persisted under `CONFIG_PATH`; back up this directory before upgrades or migration.
- Keep the management port on a trusted network and use an HTTPS reverse proxy for external access.
## Security notice
The reviewed `linuxserver/yaak:2026.8.0` image contains four `linux-libc-dev` Critical findings (CVE-2026-64535, CVE-2026-64564, CVE-2026-72287, and CVE-2026-74394) for which the current Trivy report provides no fixed version. This package is delivered under an authorized risk-acceptance review; the findings are not claimed to be fixed. Update when the upstream image provides a remediation.
+5 -1
View File
@@ -22,9 +22,13 @@ additionalProperties:
description:
en: API client desktop maintained by LinuxServer.io
zh: Yaak API 客户端桌面
zh-Hant: Yaak API 用戶端桌面
zh-hant: Yaak API 用戶端桌面
ja: LinuxServer.io が保守する API クライアントデスクトップ
ko: LinuxServer.io에서 유지 관리하는 API 클라이언트 데스크톱
ru: Рабочий стол API-клиента, поддерживаемый LinuxServer.io
ms: Desktop klien API yang diselenggara oleh LinuxServer.io
pt-br: Desktop de cliente API mantido pela LinuxServer.io
tr: LinuxServer.io tarafından sunulan Yaak API istemcisi masaüstü
es-es: Cliente de API de escritorio mantenido por LinuxServer.io
fa: کلاینت دسکتاپ API یاک که توسط LinuxServer.io نگهداری می‌شود
lo: ໄຄລເອັນ API ແບບເດັສທັອບທີ່ດູແລໂດຍ LinuxServer.io