# 홈서버 대시보드 완벽 가이드: 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종 비교
홈서버 커뮤니티에서 가장 많이 언급되는 세 가지 대시보드를 비교해보겠습니다.
한눈에 보는 비교표
| 특징 | Homarr | Heimdall | Homepage |
|---|---|---|---|
| 설정 방식 | 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로 접속하면 초기 설정 화면이 나타납니다.
초기 설정
- 계정 생성: 관리자 계정 이메일과 비밀번호를 설정합니다.
- 보드 생성: “Create new board” 버튼을 클릭합니다.
- 서비스 추가: 우측 하단의 ”+” 버튼을 누르고 “App”을 선택합니다.
서비스 추가하기
- App 추가 버튼 클릭
- 내부 주소 입력:
http://서버내부IP:포트(예:http://192.168.0.10:8096) - 외부 주소 입력: 외부에서 접속할 URL (예:
https://jellyfin.mydomain.com) - 아이콘 선택: 검색창에 서비스 이름을 입력하면 아이콘이 자동으로 나타납니다.
- 저장
Docker 통합 설정
Docker 소켓을 마운트했다면 자동으로 컨테이너 목록이 표시됩니다.
- 설정(Settings) -> Integrations -> Docker로 이동
- “Enable Docker integration” 활성화
- 컨테이너 상태가 대시보드에 표시됩니다.
위젯 추가
- 편집 모드에서 ”+” 버튼 클릭
- “Widget” 선택
- 원하는 위젯 선택 (날씨, 시계, 시스템 모니터링 등)
- 위젯별 설정 입력 (날씨 위젯의 경우 위치 설정)
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으로 접속합니다.
앱 추가하기
- 우측 하단의 앱 목록 아이콘 클릭
- “Add” 버튼 클릭
- Application Type: 드롭다운에서 서비스 선택 (Jellyfin, Nextcloud 등)
- 선택하면 아이콘과 색상이 자동 적용됩니다.
- 목록에 없으면 “None”을 선택하고 수동 입력
- Application Name: 표시할 이름
- URL: 서비스 주소 입력
- “Save” 클릭
태그로 분류하기
- 앱 편집 화면에서 “Tags” 입력
- 같은 태그를 가진 앱끼리 그룹화됩니다.
- 예: “미디어”, “생산성”, “모니터링” 등
배경 이미지 설정
- Settings -> Background Type 선택
- “Image”를 선택하고 이미지 URL 입력
- 또는 “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 키:
- Jellyfin 관리자 대시보드 -> API Keys
- ”+” 버튼으로 새 키 생성
- 생성된 키를 services.yaml에 입력
Portainer API 키:
- Portainer -> My account -> Access tokens
- “Add access token” 클릭
- 생성된 토큰을 services.yaml에 입력
Pi-hole API 키:
- Pi-hole 관리자 -> Settings -> API
- “Show API token” 클릭
- 표시된 토큰을 services.yaml에 입력
6. 실전 팁
팁 1: 브라우저 시작 페이지로 설정
Chrome/Edge:
- 설정 -> 시작 시 -> 특정 페이지 열기
- 대시보드 URL 입력 (예:
http://192.168.0.10:3000)
Firefox:
- 설정 -> 홈 -> 새 창 및 탭 -> 홈페이지
- 사용자 지정 URL에 대시보드 주소 입력
팁 2: 모바일 홈 화면에 추가
iOS Safari:
- 대시보드 페이지 접속
- 공유 버튼 -> “홈 화면에 추가”
- 앱처럼 아이콘 생성됨
Android Chrome:
- 대시보드 페이지 접속
- 점 3개 메뉴 -> “홈 화면에 추가”
팁 3: 내부 주소 vs 외부 주소
대시보드를 설정할 때 주소를 어떻게 넣을지 고민이 됩니다.
- 내부 IP 사용 (예:
http://192.168.0.10:8096): 집에서만 접속할 때 빠름 - 외부 도메인 사용 (예:
https://jellyfin.mydomain.com): 어디서든 동일하게 작동
권장: Tailscale이나 Cloudflare Tunnel을 사용한다면, 외부 도메인으로 통일하는 것이 관리하기 편합니다. 집이든 밖이든 같은 주소로 접속되기 때문입니다.
팁 4: 상태 확인 우회
일부 서비스는 CORS 문제나 인증 때문에 상태 확인이 안 될 수 있습니다. 이 경우:
- Uptime Kuma를 먼저 설치하여 모든 서비스를 모니터링합니다.
- 대시보드에서는 Uptime Kuma 위젯만 사용합니다.
- Uptime Kuma가 프록시 역할을 해주어 모든 서비스 상태를 한 번에 확인할 수 있습니다.
7. 선택 가이드: 나에게 맞는 대시보드는?
대시보드 선택 플로우차트
시작
│
┌────────────┴────────────┐
│ YAML 편집이 편한가? │
└────────────┬────────────┘
│ │
예 │ │ 아니오
│ │
▼ │
┌──────────┐ │
│ Homepage │ │
└──────────┘ │
│
┌──────────────────┴──────────────────┐
│ 위젯과 Docker 통합이 필요한가? │
└──────────────────┬──────────────────┘
│ │
예 │ │ 아니오
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Homarr │ │ Heimdall │
└──────────┘ └──────────┘
결론
- Homarr: 입문자에게 가장 추천. GUI로 빠르게 구축 가능, Docker 통합 우수
- Heimdall: 단순함을 원한다면. 링크 모음이 전부라면 이것으로 충분
- Homepage: 파워유저의 선택. YAML만 익숙하다면 최고의 커스터마이징
솔직히 어떤 것을 선택해도 크게 후회하지 않습니다. 중요한 것은 일단 하나를 설치하고 써보는 것입니다. 마음에 안 들면 다른 것으로 바꾸면 됩니다. Docker니까요.
8. 다음 단계
대시보드가 완성되었다면, 이제 어디서든 접속할 수 있게 만들어야 합니다.
다음 포스팅 **“외부 접속의 정석: DDNS와 포트포워딩”**에서는 집 밖에서도 대시보드와 서비스들에 안전하게 접속하는 방법을 다루겠습니다.
:::tip[어떤 것을 선택할지 고민된다면?] Homarr로 시작하세요. GUI로 빠르게 구축할 수 있고, 나중에 더 세밀한 제어가 필요해지면 Homepage로 마이그레이션하면 됩니다. 대시보드는 서비스 링크 모음이 전부라서, 이전 비용이 거의 없습니다. :::