본문으로 건너뛰기
홈서버 대시보드 비교 가이드

# 홈서버 대시보드 완벽 가이드: Homarr vs Heimdall vs Homepage 비교

Table of Contents

“어… Jellyfin 주소가 뭐였더라? 8096? 8097?”

홈서버를 운영하다 보면 서비스가 하나둘 늘어납니다. 처음엔 Jellyfin 하나로 시작했는데, 어느새 Nextcloud, Pi-hole, Vaultwarden, Uptime Kuma, Portainer… 각 서비스마다 포트 번호가 다르고, 서브도메인을 붙여도 기억하기가 쉽지 않습니다.

브라우저 북마크에 저장해두지만, 폴더 안에 폴더가 생기고, 어느 순간 북마크를 찾는 데 시간이 더 걸립니다. 집에서는 그나마 괜찮은데, 회사에서 접속하려면 또 기억이 안 납니다.

이 문제를 깔끔하게 해결해주는 것이 바로 대시보드 앱입니다.

홈서버의 모든 서비스 링크를 한 페이지에 모아두고, 클릭 한 번으로 이동합니다. 더 나아가 각 서비스가 살아있는지 죽었는지 상태까지 보여주고, 시스템 리소스나 날씨 정보까지 표시해주는 앱들도 있습니다.

오늘은 홈서버 커뮤니티에서 가장 사랑받는 대시보드 앱 세 가지를 비교하고, 직접 설치하는 방법까지 안내하겠습니다.


1. 대시보드가 필요한 이유

“그냥 북마크 쓰면 안 되나요?”

물론 됩니다. 하지만 대시보드를 한번 써보면 북마크로 돌아가기 어렵습니다.

대시보드의 장점

1) 한눈에 모든 서비스 파악

┌─────────────────────────────────────────────────────────────┐
│                    My Homelab Dashboard                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  [Jellyfin]    [Nextcloud]    [Vaultwarden]    [Pi-hole]   │
│   Running       Running         Running        Running      │
│                                                             │
│  [Portainer]   [Uptime Kuma]  [Home Assistant]  [Grafana]  │
│   Running       Running         Running         Stopped     │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│  CPU: 12%  |  RAM: 4.2GB/16GB  |  Disk: 1.2TB/4TB         │
└─────────────────────────────────────────────────────────────┘

브라우저를 열면 내 서버의 모든 상황이 한 화면에 펼쳐집니다. 어떤 서비스가 돌아가고 있고, 어떤 게 멈춰있는지 한눈에 보입니다.

2) 가족/동거인도 사용 가능

“Jellyfin 어떻게 들어가?”라는 질문에 “대시보드 열어서 클릭해”라고 답할 수 있습니다. 기술적 지식이 없는 가족도 쉽게 서비스에 접근할 수 있습니다.

3) 새 탭 시작 페이지로 설정

브라우저의 새 탭 페이지를 대시보드로 설정하면, 브라우저를 열 때마다 자연스럽게 서버 상태를 확인하게 됩니다. 서비스가 다운되어 있으면 바로 눈에 띕니다.

4) 모바일에서도 편리

스마트폰 브라우저에서도 대시보드에 접속하면 모든 서비스에 쉽게 접근할 수 있습니다. 반응형 디자인을 지원하는 대시보드라면 모바일에서도 깔끔하게 보입니다.


2. 대시보드 앱 3종 비교

홈서버 커뮤니티에서 가장 많이 언급되는 세 가지 대시보드를 비교해보겠습니다.

한눈에 보는 비교표

특징HomarrHeimdallHomepage
설정 방식GUI (웹에서 드래그&드롭)GUI (웹 폼 입력)YAML 파일
Docker 통합매우 강력기본강력
서비스 상태 표시지원제한적지원
위젯 시스템풍부함기본매우 풍부함
커스터마이징높음중간매우 높음
리소스 사용량중간낮음낮음
학습 곡선낮음매우 낮음중간
업데이트 빈도활발느림매우 활발
추천 대상입문자, GUI 선호자단순함 추구자파워유저, 개발자

[A] Homarr: 초보자를 위한 최선의 선택

Homarr는 **“코드 한 줄 없이 멋진 대시보드 만들기”**를 표방합니다. 웹 브라우저에서 드래그 앤 드롭으로 모든 설정이 가능합니다.

주요 특징

  • 직관적인 GUI 편집기: 타일을 끌어서 배치하고, 클릭해서 설정
  • Docker 소켓 연동: 실행 중인 컨테이너 자동 감지 및 상태 표시
  • 풍부한 위젯: 날씨, 시계, 달력, 시스템 모니터링, RSS 피드 등
  • 서비스 통합: Jellyfin, Plex, Sonarr, Radarr 등과 API 연동 가능
  • 다중 보드: 용도별로 여러 대시보드 생성 가능

장점

  • YAML이나 JSON을 몰라도 됩니다.
  • 실시간으로 변경사항이 반영되어 즉각적인 피드백이 가능합니다.
  • Docker 컨테이너를 자동으로 인식해서 추가가 쉽습니다.
  • 아이콘 라이브러리가 내장되어 있어 서비스 아이콘을 찾아 헤매지 않아도 됩니다.

단점

  • Homepage에 비해 위젯 종류가 적습니다.
  • 설정을 Git으로 버전 관리하기 어렵습니다 (DB 기반 저장).
  • 메모리를 상대적으로 많이 사용합니다 (약 200~300MB).

추천 대상: Docker를 막 시작한 입문자, GUI를 선호하는 사용자, 빠르게 대시보드를 구축하고 싶은 분


[B] Heimdall: 단순함의 미학

Heimdall은 **“할 일 하나만 제대로”**라는 철학을 따릅니다. 서비스 바로가기를 모아두는 것. 딱 그것만 합니다.

주요 특징

  • 극도로 단순한 인터페이스: 앱 아이콘과 이름만 표시
  • 가벼운 리소스 사용: 메모리 50MB 이하
  • 내장 앱 데이터베이스: 수백 개의 앱 아이콘과 색상 프리셋 제공
  • 태그 기반 분류: 서비스를 태그로 그룹화

장점

  • 설정이 정말 쉽습니다. 웹 UI에서 앱 이름과 URL만 입력하면 끝.
  • 아이콘과 색상이 자동으로 매칭되는 앱이 많습니다.
  • 리소스 사용량이 매우 적어 라즈베리파이에서도 가볍게 돌아갑니다.
  • 깔끔하고 일관된 디자인.

단점

  • Docker 통합 기능이 제한적입니다.
  • 서비스 상태(온라인/오프라인) 표시가 불완전합니다.
  • 위젯이 거의 없습니다 (날씨, 시스템 모니터링 등 불가).
  • 개발이 느려져서 새로운 기능 추가가 거의 없습니다.

추천 대상: “그냥 링크만 모아두면 돼”라는 분, 복잡한 기능이 싫은 분, 저사양 서버 운영자


[C] Homepage: 파워유저의 선택

Homepage는 **“최대한의 커스터마이징”**을 추구합니다. YAML 파일로 모든 것을 정의하기 때문에 초기 설정이 다소 복잡하지만, 그만큼 원하는 대로 만들 수 있습니다.

주요 특징

  • YAML 기반 설정: 모든 설정이 파일로 관리되어 Git 버전 관리 가능
  • 100개 이상의 서비스 위젯: Jellyfin, Plex, Sonarr, Radarr, qBittorrent, Home Assistant 등
  • API 통합: 각 서비스의 API를 연동하여 실시간 데이터 표시 (재생 중인 미디어, 다운로드 진행률 등)
  • 시스템 정보 위젯: CPU, RAM, 디스크, 네트워크 실시간 모니터링
  • 검색 위젯: Google, DuckDuckGo 등 검색 엔진 통합
  • 다양한 외부 서비스: 주식, 날씨, 암호화폐 등

장점

  • 위젯 종류와 커스터마이징 옵션이 압도적입니다.
  • 설정 파일을 Git으로 관리하면 서버 이전이 쉽습니다.
  • 매우 활발하게 개발되고 있어서 새 기능이 계속 추가됩니다.
  • Docker 라벨을 이용한 자동 서비스 감지 지원.
  • 메모리 사용량이 적습니다 (약 50~100MB).

단점

  • YAML 문법을 알아야 합니다.
  • 초기 설정에 시간이 걸립니다.
  • GUI 편집기가 없어서 파일을 직접 수정해야 합니다.
  • 들여쓰기 실수 하나로 전체가 깨질 수 있습니다.

추천 대상: YAML에 익숙한 분, Git으로 설정을 관리하고 싶은 분, 위젯을 최대한 활용하고 싶은 분, 개발자


3. 설치 가이드: Homarr

가장 접근하기 쉬운 Homarr부터 설치해보겠습니다.

Docker Compose로 설치

# docker-compose.yml
services:
  homarr:
    container_name: homarr
    image: ghcr.io/homarr-labs/homarr:latest
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Docker 통합용
      - /srv/homarr/appdata:/appdata
    ports:
      - "7575:7575"
    environment:
      - TZ=Asia/Seoul
# 디렉토리 생성 및 실행
mkdir -p /srv/homarr/appdata
docker compose up -d

브라우저에서 http://서버IP:7575로 접속하면 초기 설정 화면이 나타납니다.

초기 설정

  1. 계정 생성: 관리자 계정 이메일과 비밀번호를 설정합니다.
  2. 보드 생성: “Create new board” 버튼을 클릭합니다.
  3. 서비스 추가: 우측 하단의 ”+” 버튼을 누르고 “App”을 선택합니다.

서비스 추가하기

  1. App 추가 버튼 클릭
  2. 내부 주소 입력: http://서버내부IP:포트 (예: http://192.168.0.10:8096)
  3. 외부 주소 입력: 외부에서 접속할 URL (예: https://jellyfin.mydomain.com)
  4. 아이콘 선택: 검색창에 서비스 이름을 입력하면 아이콘이 자동으로 나타납니다.
  5. 저장

Docker 통합 설정

Docker 소켓을 마운트했다면 자동으로 컨테이너 목록이 표시됩니다.

  1. 설정(Settings) -> Integrations -> Docker로 이동
  2. “Enable Docker integration” 활성화
  3. 컨테이너 상태가 대시보드에 표시됩니다.

위젯 추가

  1. 편집 모드에서 ”+” 버튼 클릭
  2. “Widget” 선택
  3. 원하는 위젯 선택 (날씨, 시계, 시스템 모니터링 등)
  4. 위젯별 설정 입력 (날씨 위젯의 경우 위치 설정)

4. 설치 가이드: Heimdall

가장 단순한 Heimdall을 설치해보겠습니다.

Docker Compose로 설치

# docker-compose.yml
services:
  heimdall:
    container_name: heimdall
    image: lscr.io/linuxserver/heimdall:latest
    restart: unless-stopped
    volumes:
      - /srv/heimdall/config:/config
    ports:
      - "8080:80"
      - "8443:443"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
mkdir -p /srv/heimdall/config
docker compose up -d

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

앱 추가하기

  1. 우측 하단의 앱 목록 아이콘 클릭
  2. “Add” 버튼 클릭
  3. Application Type: 드롭다운에서 서비스 선택 (Jellyfin, Nextcloud 등)
    • 선택하면 아이콘과 색상이 자동 적용됩니다.
    • 목록에 없으면 “None”을 선택하고 수동 입력
  4. Application Name: 표시할 이름
  5. URL: 서비스 주소 입력
  6. “Save” 클릭

태그로 분류하기

  1. 앱 편집 화면에서 “Tags” 입력
  2. 같은 태그를 가진 앱끼리 그룹화됩니다.
  3. 예: “미디어”, “생산성”, “모니터링” 등

배경 이미지 설정

  1. Settings -> Background Type 선택
  2. “Image”를 선택하고 이미지 URL 입력
  3. 또는 “Trianglify” 선택으로 기하학적 패턴 배경 사용

5. 설치 가이드: Homepage

YAML을 다뤄야 하지만 가장 강력한 Homepage를 설치해보겠습니다.

Docker Compose로 설치

# docker-compose.yml
services:
  homepage:
    container_name: homepage
    image: ghcr.io/gethomepage/homepage:latest
    restart: unless-stopped
    volumes:
      - /srv/homepage/config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Docker 통합용
    ports:
      - "3000:3000"
    environment:
      - TZ=Asia/Seoul
mkdir -p /srv/homepage/config
docker compose up -d

브라우저에서 http://서버IP:3000으로 접속하면 기본 페이지가 표시됩니다.

설정 파일 구조

Homepage는 /srv/homepage/config 디렉토리에 여러 YAML 파일로 설정을 관리합니다.

/srv/homepage/config/
├── settings.yaml      # 기본 설정 (제목, 테마, 레이아웃 등)
├── services.yaml      # 서비스 바로가기 정의
├── widgets.yaml       # 상단 위젯 정의
├── bookmarks.yaml     # 외부 링크 북마크
├── docker.yaml        # Docker 통합 설정
└── custom.css         # 커스텀 스타일 (선택)

settings.yaml 설정

# /srv/homepage/config/settings.yaml
title: My Homelab

background:
  image: https://images.unsplash.com/photo-1502790671504-542ad42d5189?auto=format&fit=crop&w=2560&q=80
  blur: sm
  saturate: 50
  brightness: 50
  opacity: 50

cardBlur: md
theme: dark
color: slate

headerStyle: boxed

layout:
  Media:
    style: row
    columns: 4
  Infrastructure:
    style: row
    columns: 3

services.yaml 설정

# /srv/homepage/config/services.yaml
- Media:
    - Jellyfin:
        icon: jellyfin.png
        href: http://192.168.0.10:8096
        description: Media Server
        widget:
          type: jellyfin
          url: http://192.168.0.10:8096
          key: YOUR_API_KEY_HERE
          enableBlocks: true

    - Plex:
        icon: plex.png
        href: http://192.168.0.10:32400/web
        description: Plex Media Server

- Infrastructure:
    - Portainer:
        icon: portainer.png
        href: http://192.168.0.10:9000
        description: Docker Management
        widget:
          type: portainer
          url: http://192.168.0.10:9000
          env: 1
          key: YOUR_API_KEY_HERE

    - Pi-hole:
        icon: pi-hole.png
        href: http://192.168.0.10:80/admin
        description: DNS Ad Blocker
        widget:
          type: pihole
          url: http://192.168.0.10
          key: YOUR_API_KEY_HERE

    - Uptime Kuma:
        icon: uptime-kuma.png
        href: http://192.168.0.10:3001
        description: Status Monitoring
        widget:
          type: uptimekuma
          url: http://192.168.0.10:3001
          slug: default

- Storage:
    - Nextcloud:
        icon: nextcloud.png
        href: http://192.168.0.10:8080
        description: Personal Cloud

    - Immich:
        icon: immich.png
        href: http://192.168.0.10:2283
        description: Photo Backup
        widget:
          type: immich
          url: http://192.168.0.10:2283
          key: YOUR_API_KEY_HERE

widgets.yaml 설정

# /srv/homepage/config/widgets.yaml
- resources:
    cpu: true
    memory: true
    disk: /
    cputemp: true
    uptime: true
    refresh: 3000

- search:
    provider: google
    target: _blank

- datetime:
    text_size: xl
    format:
      dateStyle: long
      timeStyle: short
      hour12: false

- openweathermap:
    label: Seoul
    latitude: 37.5665
    longitude: 126.9780
    units: metric
    apiKey: YOUR_OPENWEATHERMAP_API_KEY
    cache: 5

Docker 통합 설정

# /srv/homepage/config/docker.yaml
my-docker:
  socket: /var/run/docker.sock

Docker 라벨을 사용하면 컨테이너가 자동으로 대시보드에 표시됩니다.

# 다른 서비스의 docker-compose.yml 예시
services:
  jellyfin:
    image: jellyfin/jellyfin
    labels:
      - homepage.group=Media
      - homepage.name=Jellyfin
      - homepage.icon=jellyfin.png
      - homepage.href=http://192.168.0.10:8096
      - homepage.description=Media Server

API 키 발급 방법

각 서비스의 위젯을 사용하려면 API 키가 필요합니다.

Jellyfin API 키:

  1. Jellyfin 관리자 대시보드 -> API Keys
  2. ”+” 버튼으로 새 키 생성
  3. 생성된 키를 services.yaml에 입력

Portainer API 키:

  1. Portainer -> My account -> Access tokens
  2. “Add access token” 클릭
  3. 생성된 토큰을 services.yaml에 입력

Pi-hole API 키:

  1. Pi-hole 관리자 -> Settings -> API
  2. “Show API token” 클릭
  3. 표시된 토큰을 services.yaml에 입력

6. 실전 팁

팁 1: 브라우저 시작 페이지로 설정

Chrome/Edge:

  1. 설정 -> 시작 시 -> 특정 페이지 열기
  2. 대시보드 URL 입력 (예: http://192.168.0.10:3000)

Firefox:

  1. 설정 -> 홈 -> 새 창 및 탭 -> 홈페이지
  2. 사용자 지정 URL에 대시보드 주소 입력

팁 2: 모바일 홈 화면에 추가

iOS Safari:

  1. 대시보드 페이지 접속
  2. 공유 버튼 -> “홈 화면에 추가”
  3. 앱처럼 아이콘 생성됨

Android Chrome:

  1. 대시보드 페이지 접속
  2. 점 3개 메뉴 -> “홈 화면에 추가”

팁 3: 내부 주소 vs 외부 주소

대시보드를 설정할 때 주소를 어떻게 넣을지 고민이 됩니다.

  • 내부 IP 사용 (예: http://192.168.0.10:8096): 집에서만 접속할 때 빠름
  • 외부 도메인 사용 (예: https://jellyfin.mydomain.com): 어디서든 동일하게 작동

권장: Tailscale이나 Cloudflare Tunnel을 사용한다면, 외부 도메인으로 통일하는 것이 관리하기 편합니다. 집이든 밖이든 같은 주소로 접속되기 때문입니다.

팁 4: 상태 확인 우회

일부 서비스는 CORS 문제나 인증 때문에 상태 확인이 안 될 수 있습니다. 이 경우:

  1. Uptime Kuma를 먼저 설치하여 모든 서비스를 모니터링합니다.
  2. 대시보드에서는 Uptime Kuma 위젯만 사용합니다.
  3. Uptime Kuma가 프록시 역할을 해주어 모든 서비스 상태를 한 번에 확인할 수 있습니다.

7. 선택 가이드: 나에게 맞는 대시보드는?

                        대시보드 선택 플로우차트

                              시작

                   ┌────────────┴────────────┐
                   │    YAML 편집이 편한가?    │
                   └────────────┬────────────┘
                          │           │
                        예 │           │ 아니오
                          │           │
                          ▼           │
                    ┌──────────┐      │
                    │ Homepage │      │
                    └──────────┘      │

                   ┌──────────────────┴──────────────────┐
                   │    위젯과 Docker 통합이 필요한가?     │
                   └──────────────────┬──────────────────┘
                                │           │
                              예 │           │ 아니오
                                │           │
                                ▼           ▼
                          ┌──────────┐ ┌──────────┐
                          │  Homarr  │ │ Heimdall │
                          └──────────┘ └──────────┘

결론

  • Homarr: 입문자에게 가장 추천. GUI로 빠르게 구축 가능, Docker 통합 우수
  • Heimdall: 단순함을 원한다면. 링크 모음이 전부라면 이것으로 충분
  • Homepage: 파워유저의 선택. YAML만 익숙하다면 최고의 커스터마이징

솔직히 어떤 것을 선택해도 크게 후회하지 않습니다. 중요한 것은 일단 하나를 설치하고 써보는 것입니다. 마음에 안 들면 다른 것으로 바꾸면 됩니다. Docker니까요.


8. 다음 단계

대시보드가 완성되었다면, 이제 어디서든 접속할 수 있게 만들어야 합니다.

다음 포스팅 **“외부 접속의 정석: DDNS와 포트포워딩”**에서는 집 밖에서도 대시보드와 서비스들에 안전하게 접속하는 방법을 다루겠습니다.


:::tip[어떤 것을 선택할지 고민된다면?] Homarr로 시작하세요. GUI로 빠르게 구축할 수 있고, 나중에 더 세밀한 제어가 필요해지면 Homepage로 마이그레이션하면 됩니다. 대시보드는 서비스 링크 모음이 전부라서, 이전 비용이 거의 없습니다. :::

이 글 공유하기:
다음 글: HTTPS는 선택이 아닌 필수: Let's Encrypt로 평생 무...
My avatar

글을 마치며

이 글이 도움이 되었기를 바랍니다. 궁금한 점이나 의견이 있다면 댓글로 남겨주세요.

더 많은 기술 인사이트와 개발 경험을 공유하고 있으니, 다른 포스트도 확인해보세요.

유럽살며 여행하며 코딩하는 노마드의 여정을 함께 나누며, 함께 성장하는 개발자 커뮤니티를 만들어가요! 🚀


홈서버 마스터 클래스 시리즈