Dashy: 고급 커스터마이징이 가능한 셀프호스팅 대시보드




50개 이상의 위젯, 다양한 테마, UI 에디터를 갖춘 개인화 대시보드


개요

Dashy는 고도로 커스터마이징 가능한 셀프호스팅 대시보드입니다. YAML 설정과 UI 에디터를 모두 지원하며, 50개 이상의 내장 위젯, 다양한 테마, 상태 모니터링, 인증, 멀티 페이지, 워크스페이스 뷰 등 풍부한 기능을 제공합니다. 브라우저 시작 페이지로 사용하기에도 좋고, 홈랩 서비스 대시보드로도 훌륭합니다.

항목내용
공식 사이트https://dashy.to
GitHubhttps://github.com/Lissy93/dashy
라이선스MIT
GitHub Stars19k+
Docker 이미지lissy93/dashy:latest
기본 포트8080
최신 버전3.x

왜 Dashy인가?

1. 최고 수준의 커스터마이징

레이아웃, 색상, 아이콘, 폰트, 배경 이미지 등 거의 모든 요소를 커스터마이징할 수 있습니다. CSS 변수를 통해 세밀한 테마 조정이 가능합니다.

2. 50개 이상의 내장 위젯

날씨, 시계, 시스템 모니터링, GitHub, Pi-hole, AdGuard, Proxmox, Glances 등 다양한 위젯을 기본 제공합니다. 커스텀 API 위젯으로 확장도 가능합니다.

3. 다양한 뷰 모드

  • Default: 일반 대시보드 뷰
  • Minimal: 빠른 로딩을 위한 미니멀 뷰 (브라우저 시작 페이지용)
  • Workspace: 여러 앱을 동시에 작업하는 워크스페이스 뷰

4. 내장 인증

기본 인증, Keycloak, OIDC 연동을 지원합니다. 사용자별 권한 설정도 가능합니다.

5. 상태 모니터링

각 서비스의 온라인/오프라인 상태를 자동으로 확인하고 표시합니다.

6. PWA 지원

Progressive Web App으로 모바일에서도 네이티브 앱처럼 사용할 수 있습니다.


Dashy vs 다른 대시보드

항목DashyHomepageHomarr
설정 방식YAML + UIYAML드래그앤드롭 UI
내장 위젯50개+100개+30개+
테마20개+ 내장 + 커스텀 CSS제한적제한적
내장 인증
상태 모니터링
멀티 페이지✅ (보드)
워크스페이스 뷰
PWA
학습 곡선중간중간낮음
추천 대상고급 커스터마이징개발자입문자

Dashy 선택이 좋은 경우:

  • 테마와 디자인을 세밀하게 커스터마이징하고 싶을 때
  • 브라우저 시작 페이지로 사용하고 싶을 때
  • 위젯과 상태 모니터링이 모두 필요할 때
  • 워크스페이스 뷰로 멀티태스킹이 필요할 때

Docker Compose로 설치하기

기본 설치 (Dashy 3.x)

services:
  dashy:
    image: lissy93/dashy:latest
    container_name: dashy
    restart: unless-stopped
    ports:
      - "4000:8080"
    volumes:
      - ./conf.yml:/app/user-data/conf.yml
    environment:
      - NODE_ENV=production
    healthcheck:
      test: ['CMD', 'node', '/app/services/healthcheck']
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s

아이콘 팩 포함 설치

services:
  dashy:
    image: lissy93/dashy:latest
    container_name: dashy
    restart: unless-stopped
    ports:
      - "4000:8080"
    volumes:
      - ./conf.yml:/app/user-data/conf.yml
      - ./icons:/app/public/item-icons/icons
    environment:
      - NODE_ENV=production

설치 및 실행

# 디렉토리 생성
mkdir -p ~/dashy && cd ~/dashy

# 기본 설정 파일 생성
cat > conf.yml << 'EOF'
pageInfo:
  title: My Dashboard
  description: Welcome to Dashy
  navLinks:
    - title: GitHub
      path: https://github.com/Lissy93/dashy

appConfig:
  theme: colorful
  statusCheck: true
  statusCheckInterval: 300

sections:
  - name: Getting Started
    icon: fas fa-rocket
    items:
      - title: Dashy Docs
        description: Documentation for Dashy
        url: https://dashy.to/docs
        icon: fas fa-book
EOF

# 아이콘 팩 다운로드 (선택)
git clone https://github.com/walkxcode/dashboard-icons.git icons

# 실행
docker compose up -d

브라우저에서 http://<서버IP>:4000으로 접속합니다.


설정 파일 구조

Dashy는 단일 YAML 파일(conf.yml)로 모든 설정을 관리합니다.

# conf.yml 기본 구조
pageInfo:         # 페이지 메타 정보
  title: ...
  description: ...
  navLinks: []
  footerText: ...

appConfig:        # 앱 전역 설정
  theme: ...
  statusCheck: ...
  language: ...

sections:         # 섹션 (그룹) 목록
  - name: ...
    items: []     # 아이템 (링크) 목록
    widgets: []   # 위젯 목록

기본 설정 예시

완전한 conf.yml 예시

pageInfo:
  title: Homelab Dashboard
  description: My self-hosted services
  navLinks:
    - title: GitHub
      path: https://github.com
    - title: Cloud
      path: https://cloud.example.com
  footerText: '© 2025 My Homelab'

appConfig:
  theme: material-dark
  layout: auto
  iconSize: medium
  statusCheck: true
  statusCheckInterval: 300
  language: en

sections:
  - name: 미디어
    icon: fas fa-play-circle
    displayData:
      sortBy: alphabetical
      collapsed: false
      cols: 2
    items:
      - title: Plex
        description: 미디어 서버
        url: http://plex.local:32400
        icon: hl-plex
        
      - title: Jellyfin
        description: 오픈소스 미디어 서버
        url: http://jellyfin.local:8096
        icon: hl-jellyfin

  - name: 인프라
    icon: fas fa-server
    items:
      - title: Proxmox
        description: 가상화 플랫폼
        url: https://proxmox.local:8006
        icon: hl-proxmox
        statusCheckAllowInsecure: true
        
      - title: Portainer
        description: Docker 관리
        url: http://portainer.local:9000
        icon: hl-portainer

  - name: 네트워크
    icon: fas fa-network-wired
    items:
      - title: Pi-hole
        description: DNS 광고 차단
        url: http://pihole.local/admin
        icon: hl-pihole
        
      - title: Nginx Proxy Manager
        description: 리버스 프록시
        url: http://npm.local:81
        icon: hl-nginx-proxy-manager

아이콘 설정

Dashy는 다양한 아이콘 소스를 지원합니다.

아이콘 유형

접두사소스예시
fas / fabFont Awesomefas fa-home, fab fa-github
hl-Homelab Iconshl-plex, hl-jellyfin
si-Simple Iconssi-docker, si-kubernetes
mdi-Material Design Iconsmdi-home, mdi-server
emoji이모지emoji:🏠, emoji:🎬
favicon자동 파비콘(URL 기반 자동 감지)
URL직접 이미지 URLhttps://example.com/icon.png
로컬로컬 파일/item-icons/icons/plex.png

아이콘 예시

items:
  # Font Awesome
  - title: Home
    icon: fas fa-home
    
  # Homelab Icons (권장)
  - title: Plex
    icon: hl-plex
    
  # Simple Icons
  - title: Docker
    icon: si-docker
    
  # 이모지
  - title: Movies
    icon: emoji:🎬
    
  # 자동 파비콘
  - title: GitHub
    url: https://github.com
    icon: favicon
    
  # 직접 URL
  - title: Custom App
    icon: https://example.com/logo.png

아이콘 팩 설치

# dashboard-icons 저장소 클론
git clone https://github.com/walkxcode/dashboard-icons.git icons

# Docker 볼륨으로 마운트
volumes:
  - ./icons/png:/app/public/item-icons/icons

위젯

Dashy는 50개 이상의 내장 위젯을 제공합니다.

위젯 추가 방법

sections:
  - name: System Info
    widgets:
      - type: clock
        options:
          timeZone: Asia/Seoul
          format: ko-KR
          
      - type: weather
        options:
          apiKey: your-openweathermap-api-key
          city: Seoul
          units: metric

주요 위젯 카테고리

일반 / 유틸리티

위젯설명
clock시계 (타임존 지원)
weather날씨 (OpenWeatherMap)
crypto-watch-list암호화폐 시세
rss-feedRSS 피드
iframe외부 페이지 임베드
image이미지 표시
embedHTML/JS 임베드

시스템 모니터링 (Glances)

widgets:
  - type: gl-current-cpu
    options:
      hostname: http://192.168.1.100:61208
      
  - type: gl-current-mem
    options:
      hostname: http://192.168.1.100:61208
      
  - type: gl-disk-space
    options:
      hostname: http://192.168.1.100:61208
      
  - type: gl-system-load
    options:
      hostname: http://192.168.1.100:61208

네트워크 / DNS

# Pi-hole
widgets:
  - type: pi-hole-stats
    options:
      hostname: http://pihole.local
      apiKey: your-api-key

  - type: pi-hole-top-queries
    options:
      hostname: http://pihole.local
      apiKey: your-api-key
      count: 10

# AdGuard Home
widgets:
  - type: adguard-stats
    useProxy: true
    options:
      hostname: http://adguard.local
      username: admin
      password: your-password

  - type: adguard-filter-status
    options:
      hostname: http://adguard.local
      username: admin
      password: your-password

가상화 (Proxmox)

widgets:
  - type: proxmox
    options:
      cluster_url: https://proxmox.local:8006
      username: dashy@pve
      token_name: dashy-token
      token_value: your-token-uuid
      node: pve1
      type: qemu  # 또는 lxc

개발 / GitHub

widgets:
  - type: github-profile-stats
    options:
      username: your-github-username
      
  - type: github-trending-repos
    options:
      language: javascript
      since: daily
      limit: 5

  - type: code-stats
    options:
      username: your-codestats-username

미디어

# Nextcloud
widgets:
  - type: nextcloud-user
    useProxy: true
    options:
      hostname: https://nextcloud.example.com
      username: alice
      password: app-password

테마

내장 테마

Dashy는 20개 이상의 내장 테마를 제공합니다.

appConfig:
  theme: material-dark  # 테마 이름

주요 테마 목록:

  • default, colorful, material, material-dark
  • dracula, nord, nord-frost
  • minimal-dark, minimal-light
  • one-dark, cyberpunk, matrix
  • high-contrast-dark, high-contrast-light

커스텀 테마 만들기

appConfig:
  theme: my-custom-theme
  customColors:
    my-custom-theme:
      primary: '#ff6b6b'
      background: '#1a1a2e'
      background-darker: '#16213e'
      text-color: '#eaeaea'
      curve-factor: '10px'

CSS 변수로 세밀한 조정

appConfig:
  customCss: |
    :root {
      --primary: #7c3aed;
      --background: #0f172a;
      --card-background: #1e293b;
      --text-color: #e2e8f0;
      --item-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
      --curve-factor: 12px;
    }
    
    .item {
      transition: transform 0.2s ease;
    }
    
    .item:hover {
      transform: translateY(-4px);
    }

상태 모니터링

전역 활성화

appConfig:
  statusCheck: true
  statusCheckInterval: 300  # 5분마다 체크

아이템별 설정

items:
  - title: Proxmox
    url: https://proxmox.local:8006
    statusCheck: true
    statusCheckAllowInsecure: true  # 자체 서명 인증서 허용
    statusCheckAcceptCodes: '200,401,403'  # 허용할 상태 코드
    statusCheckMaxRedirects: 2

상태 표시 스타일

appConfig:
  statusCheckInterval: 0  # 페이지 로드 시에만 체크

상태 인디케이터:

  • 🟢 녹색: 온라인 (200 응답)
  • 🔴 빨간색: 오프라인
  • 🟡 노란색: 느린 응답
  • ⚪ 회색: 체크 안 함

인증 설정

기본 인증

appConfig:
  auth:
    enableGuestAccess: false
    users:
      - user: admin
        hash: '5e884898da28047d91...'  # SHA-256 해시
        type: admin
      - user: guest
        hash: '...'
        type: normal

비밀번호 해시 생성:

echo -n "your-password" | sha256sum

Keycloak 연동

appConfig:
  auth:
    enableKeycloak: true
    keycloak:
      serverUrl: https://keycloak.example.com
      realm: dashy
      clientId: dashy-client

멀티 페이지

여러 설정 파일로 멀티 페이지 대시보드를 만들 수 있습니다.

pages 설정

# conf.yml (메인)
pages:
  - name: Home
    path: /
  - name: Media
    path: media.yml
  - name: Infrastructure
    path: infra.yml

서브 페이지 파일

# media.yml
pageInfo:
  title: Media Dashboard

sections:
  - name: Streaming
    items:
      - title: Plex
        url: http://plex.local:32400
        icon: hl-plex

뷰 모드

Default 뷰

일반 대시보드 레이아웃입니다.

Minimal 뷰

브라우저 시작 페이지에 적합한 미니멀 뷰입니다.

appConfig:
  startingView: minimal

Workspace 뷰

여러 앱을 iframe으로 동시에 열어 작업할 수 있습니다.

appConfig:
  startingView: workspace
  workspaceLandingUrl: https://github.com  # 기본 앱
  enableMultiTasking: true  # 백그라운드 유지

레이아웃 설정

전역 레이아웃

appConfig:
  layout: auto  # auto, vertical, horizontal, sidebar
  iconSize: medium  # small, medium, large
  colCount: 4  # 열 개수

섹션별 레이아웃

sections:
  - name: Infrastructure
    displayData:
      sortBy: alphabetical  # alphabetical, reverse-alphabetical, most-used, last-used, random
      rows: 2
      cols: 3
      collapsed: false
      hideForGuests: false
      itemSize: medium

고급 기능

검색

검색 바에서 타이핑을 시작하면 즉시 필터링됩니다. 화살표 키로 이동, Enter로 실행합니다.

appConfig:
  webSearch:
    searchEngine: duckduckgo  # google, duckduckgo, bing 등
    openingMethod: newtab

키보드 단축키

단축키동작
/ 또는 Ctrl+K검색 포커스
Esc모달 닫기
Arrow Keys아이템 탐색
Enter선택 항목 실행

클라우드 백업

appConfig:
  enableBackup: true
  # 암호화된 백업을 Dashy 클라우드에 저장

UI 에디터 사용

Dashy는 브라우저에서 직접 설정을 편집할 수 있습니다.

  1. 우측 하단 설정 아이콘 클릭
  2. “Config” 탭 선택
  3. 비주얼 에디터 또는 YAML 에디터 사용
  4. “Save” 클릭

참고: UI에서 수정한 설정은 브라우저 로컬 스토리지에 저장됩니다. 영구 저장하려면 설정 파일로 내보내기하세요.


트러블슈팅

컨테이너 시작이 느림

Dashy는 첫 시작 시 빌드 과정이 있어 60초 정도 걸릴 수 있습니다.

# 로그 확인
docker logs -f dashy

설정 변경이 반영되지 않음

  1. 브라우저 캐시 삭제
  2. 컨테이너 재시작: docker restart dashy
  3. 로컬 스토리지 설정이 우선할 수 있음 → UI에서 “Reset Local Settings”

위젯이 작동하지 않음

  1. CORS 문제일 수 있음 → useProxy: true 추가
  2. API 키 확인
  3. 네트워크 연결 확인

Dashy 3.0 마이그레이션

버전 3.0에서 볼륨 경로가 변경되었습니다.

# 이전 (2.x)
volumes:
  - ./conf.yml:/app/public/conf.yml

# 현재 (3.x)
volumes:
  - ./conf.yml:/app/user-data/conf.yml

마무리

Dashy는 커스터마이징의 끝판왕입니다. 단순한 서비스 링크 모음부터 위젯이 가득한 모니터링 대시보드, 미니멀한 브라우저 시작 페이지까지 원하는 대로 만들 수 있습니다.

YAML 설정과 UI 에디터를 모두 지원해서, 설정 파일을 직접 편집하는 것이 편한 사람과 GUI를 선호하는 사람 모두 만족할 수 있습니다. 50개 이상의 내장 위젯, 다양한 테마, 상태 모니터링, 인증, 멀티 페이지 등 기능도 풍부합니다.

시간을 들여 커스터마이징할 의향이 있다면, Dashy는 가장 만족스러운 대시보드가 될 것입니다.




댓글 남기기