轻量级自托管仪表盘Dashlet

简介

什么是 Dashlet ?

Dashlet 是一个轻量级的自托管仪表板,专为小型应用设计。它提供了一个现代、模块化的用户界面,允许用户快速访问和管理各种服务。Dashlet 使用原生 JavaScript 和 SCSS 开发,无需重型框架,注重代码简洁和性能。

主要特点

  1. 轻量级设计 :基于原生 JavaScript 和 SCSS,确保快速加载和运行。
  2. 玻璃磨砂风格 (Glassmorphism UI):现代化的界面设计,具有动态动画效果,增强用户体验。
  3. 配置驱动 :用户可以通过 public/config.json 文件加载设置和服务,方便管理。
  4. 主题定制 :
    • 提供多种主题选项,包括系统、暗色、亮色和自定义色彩。
    • 用户可以为背景设置自定义壁纸 URL。
  5. 动态排序:支持按名称、URL、描述或手动顺序进行排序,增强服务组织能力。
  6. 拖放功能:用户可以轻松通过拖放方式调整服务的顺序。
  7. 整洁的布局:固定的控制面板,使用户界面干净整洁。
  8. 自定义文件支持 :允许用户上传自定义 CSS 和 JavaScript,以满足特定需求。

应用场景

  • 小型个人项目:适合开发者为自己的小型应用设置简单、有效的仪表板。
  • 家庭实验室:技术爱好者可以将其用于管理家庭服务器、应用和服务。
  • 开发和测试:开发者可以快速创建用于展示项目和服务的临时仪表板。

Dashlet 非常适合为你的家庭服务器或个人云环境创建一个统一的导航入口。你可以将所有自托管服务(如NAS、路由器、下载器、媒体服务器等)的链接都集中到 Dashlet 中,形成一个美观、便捷的启动页。

安装

在群晖上以 Docker 方式安装。

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷。

bash 复制代码
# 新建文件夹 dashlet 和 子目录
mkdir -p /volume1/docker/dashlet/data

# 进入 dashlet 目录
cd /volume1/docker/dashlet

# 运行容器
docker run -d \
  --name dashlet \
  --restart unless-stopped \
  -p 8989:8989 \
  -v $(pwd)/data:/app/public \
  ghcr.io/jaberio/dashlet:latest

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件。

yaml 复制代码
services:
  dashlet:
    image: ghcr.io/jaberio/dashlet:latest
    container_name: dashlet
    restart: unless-stopped
    ports:
      - "8989:8989"
    volumes:
      - ./data:/app/public

然后通过 SSH 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 dashlet 和 子目录
mkdir -p /volume1/docker/dashlet/data

# 进入 dashlet 目录
cd /volume1/docker/dashlet

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8989 就能看到仪表盘界面

你可以通过界面右上角的设置按钮导出 config.json 文件

修改后再导入,或者上传到 docker/dashlet/data/ 目录

config.json

示例如下:

json 复制代码
{
  "settings": {
    "theme": "system",
    "appTitle": "Dashlet",
    "greeting": "Welcome",
    "accentColor": "#3b82f6",
    "blur": true,
    "animations": true,
    "openNewTab": true,
    "layout": "list",
    "wallpaper": "",
    "searchProvider": "https://duckduckgo.com/?q=",
    "customCSS": "",
    "disableDragDrop": false,
    "dragDelay": 0,
    "searchEnabled": true,
    "footerText": "Powered by",
    "footerColor": "",
    "sortBy": "manual"
    },
  "services": [
    {
      "id": "1",
      "name": "GitHub",
      "description": "Code hosting",
      "url": "https://github.com",
      "icon": "https://github.githubassets.com/favicons/favicon.png"
    },
    {
      "id": "2",
      "name": "YouTube",
      "description": "Watch videos",
      "url": "https://youtube.com",
      "icon": "https://www.youtube.com/s/desktop/10c3d9b4/img/favicon_144x144.png"
    }
  ]
}

下面是老苏整理的 config.json 的参数说明

参数 类型 示例值 说明
settings 包含应用程序的配置信息
theme 字符串 "system" 主题模式,可以选择 "system"、"dark"、"light" 或自定义主题。
appTitle 字符串 "Dashlet" 应用程序的标题,会显示在仪表板的顶部。
greeting 字符串 "Welcome" 用户在仪表板登录后看到的欢迎信息。
accentColor 字符串 "#3b82f6" 应用程序的主色调,影响按钮和链接等元素的颜色。
blur 布尔值 true 是否启用背景模糊效果。
animations 布尔值 true 是否启用动态动画效果。
openNewTab 布尔值 true 点击服务链接时是否在新标签页中打开。
layout 字符串 "list" 服务的布局方式,可以选择 "list" 或 "grid"。
wallpaper 字符串 "" 自定义壁纸的 URL,可以设置背景图像。
searchProvider 字符串 "https://duckduckgo.com/?q=" 搜索提供商的 URL,用户在搜索框中输入内容后将调用此链接。
customCSS 字符串 "" 自定义 CSS 文件的路径,允许用户添加额外样式。
disableDragDrop 布尔值 false 是否禁用拖放功能。
dragDelay 数字 0 拖动元素时的延迟,以毫秒为单位。
searchEnabled 布尔值 true 是否启用搜索功能。
footerText 字符串 "Powered by" 页脚文本。
footerColor 字符串 "" 页脚文本的颜色。
sortBy 字符串 "manual" 服务的排序方式,可以选择 "manual"、"name"、"url" 或 "description"。
services 包含服务的数组,每个服务都是一个对象。
id 字符串 "1" 服务的唯一标识符。
name 字符串 "GitHub" 服务的名称,显示在仪表板中。
description 字符串 "Code hosting" 服务的简短描述。
url 字符串 "https://github.com" 服务的访问链接。
icon 字符串 "https://github.githubassets.com/favicons/favicon.png" 服务图标的 URL,用于在仪表板上显示。
  1. 其中 settings 部分可以在设置界面修改,我们一般只要改 services 部分即可;
  2. 通过 Import Config 导入的设置,不会保存到服务器;
  3. 如果想保存到服务器,可以替换 /data 目录中的文件;

参考文档

jaberio/dashlet: Lightweight dashboard for small apps

地址:https://github.com/jaberio/dashlet
Dashlet

地址:https://jaberio.github.io/dashlet/

相关推荐
guo_wen_qiang12 小时前
docker的备份与迁移
运维·docker·容器
cpolar技术支持17 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
MrSYJ19 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
羑悻20 小时前
穿越Docker内核迷雾:揭秘镜像分层存储的叠加态与卷挂载的多维空间穿梭技术
后端·docker·容器
筑梦之路21 小时前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert1 天前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
天衍四九-1 天前
Docker 进阶实战系列(一):容器镜像安全,最小镜像与非 Root 运行
安全·docker·eureka
天衍四九-1 天前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka
sbjdhjd1 天前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全
溪语流沙1 天前
【Web全栈进阶】PostgreSQL上手:Docker跑库 + 把早报站从SQLite迁过去
前端·docker·postgresql