diff --git a/apps/docker-copilot/README.md b/apps/docker-copilot/README.md
new file mode 100644
index 000000000..38963e600
--- /dev/null
+++ b/apps/docker-copilot/README.md
@@ -0,0 +1,18 @@
+# DockerCopilot
+
+## 介绍
+
+一个主打便捷的docker容器管理工具,现在已经支持所有平台。
+已经实现:
+1. 一键更新容器
+2. 指定镜像和tag更新
+3. 启动、停止、重启容器
+4. 重命名容器
+5. 删除无TAG镜像
+6. 删除未使用镜像
+7. 更新进度查看
+8. 备份容器设置
+9. 恢复容器设置
+
+## 开发环境
+go版本:1.21+
\ No newline at end of file
diff --git a/apps/docker-copilot/data.yml b/apps/docker-copilot/data.yml
new file mode 100644
index 000000000..56daa4cb9
--- /dev/null
+++ b/apps/docker-copilot/data.yml
@@ -0,0 +1,22 @@
+name: Docker-Copilot
+tags:
+ - 实用工具
+title: DockerCopilot
+description: docker容器管理工具
+additionalProperties:
+ key: docker-copilot
+ name: Docker-Copilot
+ tags:
+ - Tools
+ shortDescZh: 一键更新容器
+ shortDescEn: DockerCopilot Application
+ description:
+ zh: 便捷的docker容器管理工具。
+ en: DockerCopilot is a convenient docker container management tool.
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/onlyLTY/dockerCopilot
+ github: https://github.com/onlyLTY/dockerCopilot
+ document: https://github.com/onlyLTY/dockerCopilot
diff --git a/apps/docker-copilot/latest/data.yml b/apps/docker-copilot/latest/data.yml
new file mode 100644
index 000000000..c39e1494d
--- /dev/null
+++ b/apps/docker-copilot/latest/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: "12712"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 12712
+ labelZh: 服务端口 12712
+ required: true
+ rule: paramPort
+ type: number
+ - default: "copilot"
+ edit: true
+ envKey: SECRET_KEY
+ labelEn: secretKey
+ labelZh: 密码,不少于八位且非纯数字
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
\ No newline at end of file
diff --git a/apps/docker-copilot/latest/docker-compose.yml b/apps/docker-copilot/latest/docker-compose.yml
new file mode 100644
index 000000000..f34024a02
--- /dev/null
+++ b/apps/docker-copilot/latest/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ dockercopilot:
+ image: 0nlylty/dockercopilot:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:12712
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ - ./data:/data
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ - DOCKER_HOST=unix:///var/run/docker.sock
+ - secretKey=${SECRET_KEY}
+ labels:
+ createdBy: Apps
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/docker-copilot/logo.png b/apps/docker-copilot/logo.png
new file mode 100644
index 000000000..fc09bd9b7
Binary files /dev/null and b/apps/docker-copilot/logo.png differ
diff --git a/apps/glance-agent/README.md b/apps/glance-agent/README.md
new file mode 100644
index 000000000..cd1f1da26
--- /dev/null
+++ b/apps/glance-agent/README.md
@@ -0,0 +1,216 @@
+# Glance Python 远程服务器监控 Agent
+
+## 项目简介
+本项目为 Glance Dashboard 提供远程服务器监控数据采集,使用 Python3 + FastAPI 实现,兼容 Glance `server-stats` 组件前端展示。支持 Docker 部署,适合多服务器统一监控。
+
+## 功能特性
+- 采集主机名、平台、启动时间、CPU 负载/温度、内存、磁盘等信息
+- 提供 `/api/sysinfo/all` HTTP API,返回 Glance 兼容 JSON
+- 支持 Docker 镜像和 docker-compose 一键部署
+- 可多实例部署,适配多服务器场景
+- **主机名自动识别**:容器内自动优先读取宿主机 `/etc/hostname`,无需手动配置
+
+## API 说明
+- 路径:`/api/sysinfo/all`
+- 方法:GET
+- 返回:
+```json
+{
+ "Hostname": "server1",
+ "Platform": "Linux-5.15.0-1051-azure-x86_64-with-glibc2.29",
+ "BootTime": 1710000000,
+ "HostInfoIsAvailable": true,
+ "CPU": {
+ "Load1Percent": 12.5,
+ "Load15Percent": 8.2,
+ "TemperatureC": 45.0,
+ "LoadIsAvailable": true,
+ "TemperatureIsAvailable": true
+ },
+ "Memory": {
+ "IsAvailable": true,
+ "UsedPercent": 55.3,
+ "UsedMB": 2048,
+ "TotalMB": 4096,
+ "SwapIsAvailable": true,
+ "SwapUsedMB": 256,
+ "SwapTotalMB": 1024,
+ "SwapUsedPercent": 25.0
+ },
+ "Mountpoints": [
+ {
+ "Name": "/dev/sda1",
+ "Path": "/",
+ "UsedMB": 10240,
+ "TotalMB": 20480,
+ "UsedPercent": 50.0
+ }
+ ]
+}
+```
+
+## Glance 集成方法
+
+1. 将 `agent/custom-api-example.yaml` 内容合并到 Glance 的主配置文件(如 `glance.yml`)对应 widgets 区域。
+2. 每台服务器部署一个 agent,配置对应的 API 地址。
+3. 前端展示效果与本地 server-stats 一致。
+
+### custom-api 配置示例
+```yaml
+- type: custom-api
+ title: 远程服务器A
+ url: http://192.168.1.200:8000/api/sysinfo/all ## 请修改为实际的IP地址
+ cache: 15s
+ template: |
+
+
+
+
+ {{ .JSON.String "Hostname" }}
+
+
+ {{ if .JSON.Bool "HostInfoIsAvailable" }}
+ uptime
+ {{ else }}unknown uptime{{ end }}
+
+
+
+
+
PLATFORM
+
+ {{ if .JSON.Bool "HostInfoIsAvailable" }}
+ {{ .JSON.String "Platform" }}
+ {{ else }}Unknown{{ end }}
+
+
+
+
+
+
+
+
+
+
+
CPU
+ {{ if and (.JSON.Bool "CPU.TemperatureIsAvailable") (ge (.JSON.Float "CPU.TemperatureC") 80.0) }}
+
+ {{ end }}
+
+ {{ if .JSON.Bool "CPU.LoadIsAvailable" }}
+ {{ .JSON.Float "CPU.Load1Percent" }} %
+ {{ else }}n/a{{ end }}
+
+
+
+
+
+
1M AVG
+
+
{{ .JSON.Float "CPU.Load1Percent" }} %
+
+
+
15M AVG
+
+
{{ .JSON.Float "CPU.Load15Percent" }} %
+
+ {{ if .JSON.Bool "CPU.TemperatureIsAvailable" }}
+
+
TEMP C
+
+
{{ .JSON.Float "CPU.TemperatureC" }} °
+
+ {{ end }}
+
+
+ {{ if .JSON.Bool "CPU.LoadIsAvailable" }}
+
+
+ {{ end }}
+
+
+
+
+
+
+
RAM
+
+ {{ if .JSON.Bool "Memory.IsAvailable" }}
+ {{ .JSON.Float "Memory.UsedPercent" }} %
+ {{ else }}n/a{{ end }}
+
+
+
+
+
+
RAM
+
+
+ {{ .JSON.Float "Memory.UsedGB" }}GB / {{ .JSON.Float "Memory.TotalGB" }}GB
+
+
+ {{ if .JSON.Bool "Memory.SwapIsAvailable" }}
+
+
SWAP
+
+
+ {{ .JSON.Float "Memory.SwapUsedGB" }}GB / {{ .JSON.Float "Memory.SwapTotalGB" }}GB
+
+
+ {{ end }}
+
+
+ {{ if .JSON.Bool "Memory.IsAvailable" }}
+
+ {{ if .JSON.Bool "Memory.SwapIsAvailable" }}
+
+ {{ end }}
+ {{ end }}
+
+
+
+
+
+
+
DISK
+
+ {{ if gt (.JSON.Array "Mountpoints" | len) 0 }}
+ {{ (index (.JSON.Array "Mountpoints") 0).Float "UsedPercent" }} %
+ {{ else }}n/a{{ end }}
+
+
+
+
+
+ {{ if gt (.JSON.Array "Mountpoints" | len) 0 }}
+
+ {{ if gt (.JSON.Array "Mountpoints" | len) 1 }}
+
+ {{ end }}
+ {{ end }}
+
+
+
+
+
+
+```
+
+## 参考
+- [Glance-Monitor](https://github.com/arch3rPro/Glance-Monitor)
+- [Document文档](https://github.com/arch3rPro/Glance-Monitor/blob/main/server-status-agent/README.md)
diff --git a/apps/glance-agent/data.yml b/apps/glance-agent/data.yml
new file mode 100644
index 000000000..2bc82b2a7
--- /dev/null
+++ b/apps/glance-agent/data.yml
@@ -0,0 +1,24 @@
+name: Glance-Agent
+tags:
+ - 实用工具
+ - 监控
+ - Dashboard
+ - Other
+title: glance-agent
+description: 为Glance Dashboard提供远程服务器监控数据采集API接口
+additionalProperties:
+ key: glance-agent
+ name: Glance-Agent
+ tags:
+ - 实用工具
+ - 监控
+ - Dashboard
+ - Other
+ shortDescZh: 远程服务器监控数据采集agent
+ shortDescEn: Remote server monitoring data collection agent
+ type: tools
+ crossVersionUpdate: true
+ website: https://github.com/arch3rPro/Glance-Monitor
+ github: https://github.com/arch3rPro/Glance-Monitor
+ document: https://github.com/arch3rPro/Glance-Monitor/blob/main/server-status-agent/README.md
+
diff --git a/apps/glance-agent/latest/data.yml b/apps/glance-agent/latest/data.yml
new file mode 100644
index 000000000..e4858c95b
--- /dev/null
+++ b/apps/glance-agent/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "12080"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 8000
+ labelZh: 服务端口 8000
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/glance-agent/latest/docker-compose.yml b/apps/glance-agent/latest/docker-compose.yml
new file mode 100644
index 000000000..1acffa25b
--- /dev/null
+++ b/apps/glance-agent/latest/docker-compose.yml
@@ -0,0 +1,18 @@
+services:
+ agent-image:
+ image: vuldocker/glance-agent:latest
+ container_name: ${CONTAINER_NAME}
+ restart: unless-stopped
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ volumes:
+ - /etc/hostname:/host/etc/hostname:ro
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ labels:
+ createdBy: Apps
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/glance-agent/logo.png b/apps/glance-agent/logo.png
new file mode 100644
index 000000000..950a5c7cc
Binary files /dev/null and b/apps/glance-agent/logo.png differ
diff --git a/apps/linkwarden/README.md b/apps/linkwarden/README.md
new file mode 100644
index 000000000..6e80e170e
--- /dev/null
+++ b/apps/linkwarden/README.md
@@ -0,0 +1,46 @@
+# Linkwarden
+
+Linkwarden 是一个自托管、开源的协作书签管理工具,支持网页归档、团队协作、全文搜索等功能。
+
+## 主要特性
+
+- 📸 自动捕获每个网页的屏幕截图、PDF、单个 html 文件和可读视图。
+- 🏛️ 将你的网页发送到 Wayback Machine ( archive.org ) 获取快照。(可选)
+- ✨ 本地 AI 标记可根据链接内容自动标记链接(可选)。
+- 📂 按集合、子集合、名称、描述和多个标签组织链接。
+- 👥 协作收集集合中的链接。
+- 🎛️自定义每个成员的权限。
+- 🌐 与世界分享您收集的链接和保存的格式。
+- 📌 将您最喜欢的链接固定到仪表板。
+- 🔍 全文搜索、过滤和排序,方便检索。
+- 📱 响应式设计并支持大多数现代浏览器。
+- 🌓 支持暗/亮模式。
+- 🧩 浏览器扩展程序。在此加星标!
+- 🔄 浏览器同步(使用Floccus!)
+- ⬇️ 导入和导出您的书签。
+- 🔐 SSO 集成。(仅限企业用户和自托管用户)
+- 📦可安装的渐进式 Web 应用程序 (PWA)。
+- 🍎 iOS 快捷方式将链接保存到 Linkwarden。
+- 🔑 API 密钥。
+- ✅ 批量操作。
+- 👥 用户管理。
+- 🌐 支持其他语言(i18n)。
+- 📁 图像和 PDF 上传。
+- 🎨 链接和收藏的自定义图标。
+- 🔔 RSS 订阅。
+
+## 官网与文档
+
+- 官网:https://linkwarden.app
+- 文档:https://docs.linkwarden.app
+- 源码:https://github.com/linkwarden/linkwarden
+
+## 1Panel 部署说明
+
+1. 在 1Panel 应用商店搜索 Linkwarden 并安装
+2. 安装完成后,访问 `http://服务器IP:端口` 进行初始化设置
+3. 数据默认持久化在 `data` 目录下
+
+## 相关截图
+
+
\ No newline at end of file
diff --git a/apps/linkwarden/data.yml b/apps/linkwarden/data.yml
new file mode 100644
index 000000000..140bee237
--- /dev/null
+++ b/apps/linkwarden/data.yml
@@ -0,0 +1,24 @@
+name: linkwarden
+tags:
+ - 工具
+ - 书签
+ - 协作
+ - 开源
+title: Linkwarden
+description: Linkwarden 是一个自托管、开源的协作书签管理工具,支持网页归档、团队协作、全文搜索等功能。
+additionalProperties:
+ key: linkwarden
+ name: Linkwarden
+ tags:
+ - 工具
+ - 书签
+ - 协作
+ - 开源
+ shortDescZh: Linkwarden 书签归档与协作工具
+ shortDescEn: Linkwarden - Collaborative Bookmark Manager
+ type: website
+ crossVersionUpdate: true
+ website: https://linkwarden.app
+ github: https://github.com/linkwarden/linkwarden
+ document: https://docs.linkwarden.app
+
diff --git a/apps/linkwarden/latest/.env.sample b/apps/linkwarden/latest/.env.sample
new file mode 100644
index 000000000..dbcd3ab90
--- /dev/null
+++ b/apps/linkwarden/latest/.env.sample
@@ -0,0 +1,4 @@
+NEXTAUTH_URL=http://localhost:3000/api/v1/auth
+NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
+MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
\ No newline at end of file
diff --git a/apps/linkwarden/latest/data.yml b/apps/linkwarden/latest/data.yml
new file mode 100644
index 000000000..b31f5a528
--- /dev/null
+++ b/apps/linkwarden/latest/data.yml
@@ -0,0 +1,34 @@
+additionalProperties:
+ formFields:
+ - default: "3000"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 3000
+ labelZh: 服务端口 3000
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: NEXTAUTH_SECRET
+ labelEn: NEXTAuth Secret
+ labelZh: NEXTAuth 密钥
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Postgres Password
+ labelZh: Postgres 数据库密码
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ edit: true
+ envKey: MEILI_MASTER_KEY
+ labelEn: Meilisearch Master Key
+ labelZh: Meilisearch 主密钥
+ required: true
+ rule: paramComplexity
+ type: password
diff --git a/apps/linkwarden/latest/docker-compose.yml b/apps/linkwarden/latest/docker-compose.yml
new file mode 100644
index 000000000..9e943afb3
--- /dev/null
+++ b/apps/linkwarden/latest/docker-compose.yml
@@ -0,0 +1,47 @@
+services:
+ linkwarden:
+ image: ghcr.io/linkwarden/linkwarden:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:3000
+ volumes:
+ - ./data:/data/data
+ networks:
+ - 1panel-network
+ environment:
+ - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
+ - NEXTAUTH_URL=http://localhost:3000/api/v1/auth
+ - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
+ depends_on:
+ - postgres
+ - meilisearch
+ labels:
+ createdBy: Apps
+ meilisearch:
+ image: getmeili/meilisearch:v1.12.8
+ container_name: ${CONTAINER_NAME}-Meilisearch
+ restart: always
+ volumes:
+ - ./meili_data:/meili_data
+ networks:
+ - 1panel-network
+ environment:
+ - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+ labels:
+ createdBy: Apps
+ postgres:
+ image: postgres:16-alpine
+ container_name: ${CONTAINER_NAME}-Postgres
+ restart: always
+ volumes:
+ - ./pgdata:/var/lib/postgresql/data
+ networks:
+ - 1panel-network
+ environment:
+ - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+ labels:
+ createdBy: Apps
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/linkwarden/logo.png b/apps/linkwarden/logo.png
new file mode 100644
index 000000000..843f681eb
Binary files /dev/null and b/apps/linkwarden/logo.png differ