diff --git a/apps/obsidian-linuxserver/1.12.7/.env.sample b/apps/obsidian-linuxserver/1.12.7/.env.sample
new file mode 100644
index 000000000..80ec79f11
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/.env.sample
@@ -0,0 +1,10 @@
+CONTAINER_NAME=
+PANEL_APP_PORT_HTTP=3000
+PANEL_APP_PORT_HTTPS=3001
+CONFIG_PATH=./data/config
+CUSTOM_USER=admin
+PASSWORD=linuxserver-change-me
+LC_ALL=zh_CN.UTF-8
+SHM_SIZE=1gb
+TIME_ZONE=Asia/Shanghai
+
diff --git a/apps/obsidian-linuxserver/1.12.7/data.yml b/apps/obsidian-linuxserver/1.12.7/data.yml
new file mode 100644
index 000000000..9c99af1b7
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/data.yml
@@ -0,0 +1,135 @@
+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: 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: 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: 1gb
+ edit: true
+ envKey: SHM_SIZE
+ labelEn: Shared memory size
+ labelZh: 共享内存大小
+ label:
+ en: Shared memory size
+ zh: 共享内存大小
+ zh-Hant: 共享記憶體大小
+ ja: 共有メモリサイズ
+ ko: 공유 메모리 크기
+ ru: Размер общей памяти
+ ms: Saiz memori kongsi
+ pt-br: Tamanho da memoria compartilhada
+ 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
+
diff --git a/apps/obsidian-linuxserver/1.12.7/docker-compose.yml b/apps/obsidian-linuxserver/1.12.7/docker-compose.yml
new file mode 100644
index 000000000..94df00004
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+services:
+ obsidian:
+ image: "linuxserver/obsidian:1.12.7"
+ 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}
+ - LC_ALL=${LC_ALL:-zh_CN.UTF-8}
+ shm_size: ${SHM_SIZE}
+ labels:
+ createdBy: "Apps"
+
diff --git a/apps/obsidian-linuxserver/1.12.7/scripts/init.sh b/apps/obsidian-linuxserver/1.12.7/scripts/init.sh
new file mode 100755
index 000000000..8a929d096
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/scripts/init.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+paths=(
+ "${CONFIG_PATH:-./data/config}"
+)
+
+mkdir -p "${paths[@]}"
+for path in "${paths[@]}"; do
+ case "$path" in
+ ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;;
+ esac
+done
+
diff --git a/apps/obsidian-linuxserver/1.12.7/scripts/uninstall.sh b/apps/obsidian-linuxserver/1.12.7/scripts/uninstall.sh
new file mode 100755
index 000000000..accdccd70
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/scripts/uninstall.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+docker-compose down --volumes
+
diff --git a/apps/obsidian-linuxserver/1.12.7/scripts/upgrade.sh b/apps/obsidian-linuxserver/1.12.7/scripts/upgrade.sh
new file mode 100755
index 000000000..a6eb46bac
--- /dev/null
+++ b/apps/obsidian-linuxserver/1.12.7/scripts/upgrade.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+:
+
diff --git a/apps/obsidian-linuxserver/README.md b/apps/obsidian-linuxserver/README.md
new file mode 100644
index 000000000..526a82cc6
--- /dev/null
+++ b/apps/obsidian-linuxserver/README.md
@@ -0,0 +1,65 @@
+# Obsidian
+
+## 产品介绍
+Obsidian 是一个 Markdown 笔记桌面应用,本应用通过 LinuxServer.io 镜像提供浏览器访问的 Obsidian 桌面环境。
+
+## 主要功能
+- 通过浏览器访问 Obsidian 桌面界面。
+- 使用 `/config` 持久化用户目录、配置和笔记库。
+- 通过 Basic Auth 保护 Web 桌面入口。
+
+## 访问说明
+安装完成后,通过应用表单中的 HTTP 或 HTTPS 端口访问 Web 桌面,并使用安装时填写的 Basic Auth 用户名和密码登录。
+
+## Introduction
+Obsidian is a Markdown note-taking desktop app. This app packages the LinuxServer.io image as a browser-accessible Obsidian desktop environment.
+
+## Features
+- Access the Obsidian desktop from a browser.
+- Persist the user home, settings, and vaults under `/config`.
+- Protect the Web desktop entrypoint with Basic Auth.
+
+## 应用简介
+Obsidian 笔记桌面。
+
+英文说明:Obsidian desktop app maintained by LinuxServer.io.
+
+## 部署说明
+- 本应用使用 Docker Compose 在 1Panel 中部署。
+- 应用分类:工具。
+- 支持架构:amd64、arm64。
+- 可选版本:`latest`、`1.12.7`。
+- 安装后按应用表单中的端口访问 Web 桌面。
+
+## 端口
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| PANEL_APP_PORT_HTTP | HTTP 端口 | 3000 | 是 |
+| PANEL_APP_PORT_HTTPS | HTTPS 端口 | 3001 | 是 |
+
+## 数据持久化
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| CONFIG_PATH | 配置文件路径 | ./data/config | 是 |
+
+升级或迁移前,请在 1Panel 中备份上述数据目录。
+
+## 配置项
+| 变量 | 说明 | 默认值 | 必填 |
+| --- | --- | --- | --- |
+| TIME_ZONE | 时区 | Asia/Shanghai | 是 |
+| CUSTOM_USER | Basic Auth 用户名 | admin | 是 |
+| PASSWORD | Basic Auth 密码 | 随机生成 | 是 |
+| LC_ALL | 桌面语言区域,例如 zh_CN.UTF-8 | zh_CN.UTF-8 | 否 |
+| SHM_SIZE | 共享内存大小 | 1gb | 是 |
+
+## 使用说明
+- 浏览器/桌面类 LinuxServer 镜像默认无认证,本适配启用 Basic Auth,请使用 CUSTOM_USER 和 PASSWORD 登录。
+- 如需公网访问,请优先放在带强认证的反向代理之后。
+- 如需对外开放访问,请同步检查防火墙、安全组和反向代理配置。
+
+## 参考资料
+- 官网:
+- 文档:
+- 源码:
+
diff --git a/apps/obsidian-linuxserver/data.yml b/apps/obsidian-linuxserver/data.yml
new file mode 100644
index 000000000..95a6e3329
--- /dev/null
+++ b/apps/obsidian-linuxserver/data.yml
@@ -0,0 +1,31 @@
+name: Obsidian
+tags:
+- Tool
+title: Obsidian 笔记桌面
+description: Obsidian 笔记桌面
+additionalProperties:
+ key: obsidian-linuxserver
+ name: Obsidian
+ tags:
+ - Tool
+ shortDescZh: Obsidian 笔记桌面
+ shortDescEn: Obsidian desktop app maintained by LinuxServer.io
+ description:
+ en: Obsidian desktop app maintained by LinuxServer.io
+ zh: Obsidian 笔记桌面
+ zh-Hant: Obsidian 筆記桌面
+ ja: LinuxServer.io が保守する Obsidian デスクトップアプリ
+ ko: LinuxServer.io에서 유지 관리하는 Obsidian 데스크톱 앱
+ ru: Настольное приложение Obsidian, поддерживаемое LinuxServer.io
+ ms: Aplikasi desktop Obsidian yang diselenggara oleh LinuxServer.io
+ pt-br: Aplicativo desktop Obsidian mantido pela LinuxServer.io
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ website: https://obsidian.md/
+ github: https://github.com/linuxserver/docker-obsidian
+ document: https://docs.linuxserver.io/images/docker-obsidian/
+ architectures:
+ - amd64
+ - arm64
+
diff --git a/apps/obsidian-linuxserver/latest/.env.sample b/apps/obsidian-linuxserver/latest/.env.sample
new file mode 100644
index 000000000..80ec79f11
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/.env.sample
@@ -0,0 +1,10 @@
+CONTAINER_NAME=
+PANEL_APP_PORT_HTTP=3000
+PANEL_APP_PORT_HTTPS=3001
+CONFIG_PATH=./data/config
+CUSTOM_USER=admin
+PASSWORD=linuxserver-change-me
+LC_ALL=zh_CN.UTF-8
+SHM_SIZE=1gb
+TIME_ZONE=Asia/Shanghai
+
diff --git a/apps/obsidian-linuxserver/latest/data.yml b/apps/obsidian-linuxserver/latest/data.yml
new file mode 100644
index 000000000..9c99af1b7
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/data.yml
@@ -0,0 +1,135 @@
+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: 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: 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: 1gb
+ edit: true
+ envKey: SHM_SIZE
+ labelEn: Shared memory size
+ labelZh: 共享内存大小
+ label:
+ en: Shared memory size
+ zh: 共享内存大小
+ zh-Hant: 共享記憶體大小
+ ja: 共有メモリサイズ
+ ko: 공유 메모리 크기
+ ru: Размер общей памяти
+ ms: Saiz memori kongsi
+ pt-br: Tamanho da memoria compartilhada
+ 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
+
diff --git a/apps/obsidian-linuxserver/latest/docker-compose.yml b/apps/obsidian-linuxserver/latest/docker-compose.yml
new file mode 100644
index 000000000..7d7a5246f
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/docker-compose.yml
@@ -0,0 +1,26 @@
+networks:
+ 1panel-network:
+ external: true
+services:
+ obsidian:
+ image: "linuxserver/obsidian:latest"
+ 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}
+ - LC_ALL=${LC_ALL:-zh_CN.UTF-8}
+ shm_size: ${SHM_SIZE}
+ labels:
+ createdBy: "Apps"
+
diff --git a/apps/obsidian-linuxserver/latest/scripts/init.sh b/apps/obsidian-linuxserver/latest/scripts/init.sh
new file mode 100755
index 000000000..8a929d096
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/scripts/init.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+paths=(
+ "${CONFIG_PATH:-./data/config}"
+)
+
+mkdir -p "${paths[@]}"
+for path in "${paths[@]}"; do
+ case "$path" in
+ ./*|../*) chown -R 1000:1000 "$path" 2>/dev/null || true ;;
+ esac
+done
+
diff --git a/apps/obsidian-linuxserver/latest/scripts/uninstall.sh b/apps/obsidian-linuxserver/latest/scripts/uninstall.sh
new file mode 100755
index 000000000..accdccd70
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/scripts/uninstall.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+docker-compose down --volumes
+
diff --git a/apps/obsidian-linuxserver/latest/scripts/upgrade.sh b/apps/obsidian-linuxserver/latest/scripts/upgrade.sh
new file mode 100755
index 000000000..a6eb46bac
--- /dev/null
+++ b/apps/obsidian-linuxserver/latest/scripts/upgrade.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+:
+
diff --git a/apps/obsidian-linuxserver/logo.png b/apps/obsidian-linuxserver/logo.png
new file mode 100644
index 000000000..affa745c4
Binary files /dev/null and b/apps/obsidian-linuxserver/logo.png differ