Pi-hole 설치 가이드 – Docker로 집 전체 광고 차단하는 법
유튜브를 보다가 30초 광고에 짜증이 난 적, 뉴스 기사를 읽는데 팝업 광고가 화면을 덮은 적, 한두 번이 아닐 겁니다. 브라우저에 광고 차단 확장 프로그램을 설치하면 어느 정도 해결되지만, 스마트폰 앱이나 스마트TV에는 그런 확장 프로그램을 쓸 수가 없습니다. 그래서 등장한 것이 네트워크 레벨 광고 차단, 바로 Pi-hole입니다. 이 글에서는 Docker를 활용한 Pi-hole 설치 방법을 단계별로 안내하여, 집 안의 모든 기기에서 광고를 한 번에 차단하는 환경을 만들어 보겠습니다.
Pi-hole은 집 안의 모든 기기가 인터넷에 접속할 때 거치는 DNS 서버 역할을 하면서, 광고 서버와 트래커 도메인으로 향하는 요청을 아예 차단해 버립니다. PC, 스마트폰, 태블릿, 스마트TV, IoT 기기까지 — 공유기에 연결된 모든 장비에 광고 차단이 적용되는 셈이죠. 오늘은 라즈베리파이 없이도 Docker 하나로 Pi-hole을 설치하고 운영하는 방법을 처음부터 끝까지 안내해 드리겠습니다.

Pi-hole이 뭔가요? DNS 기반 광고 차단의 원리
DNS가 하는 일부터 이해하기
인터넷에서 어떤 사이트에 접속할 때, 브라우저는 먼저 그 도메인 이름(예: www.example.com)을 실제 서버의 IP 주소로 변환해야 합니다. 이 변환 작업을 해주는 것이 DNS(Domain Name System) 서버입니다. 보통은 통신사(KT, SK, LG U+)가 제공하는 DNS 서버를 자동으로 사용하게 되는데, 이걸 Pi-hole로 바꾸면 마법이 시작됩니다.
Pi-hole의 동작 방식
Pi-hole은 내 집 네트워크 안에서 DNS 서버 역할을 합니다. 기기가 “이 도메인의 IP 주소를 알려줘”라고 요청하면, Pi-hole은 먼저 자신의 블랙리스트를 확인합니다. 만약 요청된 도메인이 광고 서버나 트래킹 서버(예: ads.google.com, tracker.facebook.com)라면 “그런 주소 없어”라고 답변하고, 정상적인 도메인이라면 상위 DNS 서버(구글 8.8.8.8이나 Cloudflare 1.1.1.1)에 물어봐서 정상 응답을 돌려줍니다.
이 방식의 장점은 명확합니다. 광고 콘텐츠 자체가 아예 다운로드되지 않으니 페이지 로딩이 빨라지고, 데이터 사용량도 줄어들며, 개인정보 추적도 상당 부분 차단됩니다. 브라우저 확장 프로그램과 달리 앱 내부 광고까지 잡아내는 것도 큰 매력이죠.
브라우저 광고 차단과 Pi-hole의 차이
AdBlock이나 uBlock Origin 같은 브라우저 확장 프로그램은 웹페이지의 HTML·CSS·JavaScript를 분석해서 광고 요소를 숨기거나 제거합니다. 반면 Pi-hole은 그보다 한 단계 앞선 DNS 레벨에서 차단하기 때문에 광고 데이터 자체가 기기까지 전달되지 않습니다. 다만 유튜브 동영상 내 광고처럼 콘텐츠와 같은 도메인에서 제공되는 광고는 Pi-hole만으로는 완벽하게 차단하기 어렵습니다. 그래서 많은 분이 Pi-hole과 브라우저 확장 프로그램을 함께 사용합니다.
설치 전 준비 사항
어떤 하드웨어가 필요한가
Pi-hole이라는 이름 때문에 라즈베리파이가 반드시 필요하다고 생각하시는 분이 많은데, 전혀 그렇지 않습니다. Docker를 돌릴 수 있는 장비라면 무엇이든 됩니다. 가장 흔한 선택지를 정리하면 이렇습니다.
- 시놀로지 NAS — 이미 24시간 켜 놓고 쓰는 NAS가 있다면 가장 이상적입니다. Docker(Container Manager)가 기본 제공되므로 추가 장비 없이 바로 설치할 수 있습니다.
- 구형 노트북이나 미니PC — 서랍 속에 잠들어 있는 오래된 노트북도 충분합니다. Pi-hole은 CPU나 메모리를 거의 사용하지 않아서 10년 된 장비에서도 문제없이 돌아갑니다.
- 라즈베리파이 — 물론 원래 이름답게 라즈베리파이에서도 훌륭하게 작동합니다. 소비전력이 3~5W 수준이라 전기세 걱정도 없습니다.
- 클라우드 VPS — Oracle Cloud 무료 티어나 AWS Lightsail 같은 곳에 설치할 수도 있지만, 집 내부 네트워크용으로는 적합하지 않습니다.
필요한 소프트웨어
Docker와 Docker Compose만 설치되어 있으면 됩니다. 시놀로지 NAS를 사용한다면 DSM의 패키지 센터에서 Container Manager를 설치하면 Docker와 Compose가 함께 설치됩니다. 일반 리눅스 PC라면 터미널에서 몇 줄의 명령어로 Docker를 설치할 수 있고, 이전에 블로그에서 다룬 Docker 입문 가이드를 참고하셔도 좋습니다.
네트워크 정보 확인하기
설치 전에 두 가지 정보를 미리 확인해 두세요.
- Pi-hole을 설치할 장비의 내부 IP 주소 — 예를 들어 192.168.1.100 같은 형태입니다. 이 IP는 고정(static)으로 설정해야 합니다. DHCP가 IP를 바꿔 버리면 집 전체 인터넷이 먹통이 되니까요.
- 공유기 관리자 페이지 접속 방법 — 보통 192.168.1.1이나 192.168.0.1로 접속할 수 있습니다. 나중에 공유기의 DNS 설정을 Pi-hole로 바꿔야 하기 때문에 관리자 비밀번호를 미리 확인해 두세요.

Docker Compose로 Pi-hole 설치하기 — 단계별 완전 가이드
1단계: 프로젝트 폴더 만들기
터미널을 열고 Pi-hole 설정 파일을 저장할 폴더를 만듭니다.
mkdir ~/pihole && cd ~/pihole
2단계: docker-compose.yml 작성
이 폴더 안에 docker-compose.yml 파일을 만듭니다. 아래는 2026년 최신 Pi-hole v6 기준의 설정입니다.
version: "3"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: 'Asia/Seoul'
FTLCONF_webserver_api_password: 'my-secret-password'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
restart: unless-stopped
각 설정의 의미를 하나씩 짚어 보겠습니다.
- ports 53:53 — DNS 요청을 받는 포트입니다. TCP와 UDP 모두 열어야 합니다.
- ports 80:80 — Pi-hole 관리 웹 대시보드에 접속하는 포트입니다. 만약 이미 80번 포트를 다른 서비스가 사용 중이라면 “8080:80″처럼 변경하면 됩니다.
- TZ: ‘Asia/Seoul’ — 시간대 설정입니다. 로그와 통계가 한국 시간 기준으로 표시됩니다.
- FTLCONF_webserver_api_password — 관리자 대시보드 비밀번호입니다. 반드시 안전한 비밀번호로 변경하세요.
- volumes — Pi-hole의 설정 파일과 데이터를 호스트에 저장해서 컨테이너를 재시작해도 설정이 유지되도록 합니다.
- restart: unless-stopped — 시스템이 재부팅되어도 Pi-hole이 자동으로 다시 실행됩니다.
3단계: Pi-hole 실행
설정 파일을 저장한 뒤 아래 명령어로 Pi-hole을 실행합니다.
docker compose up -d
처음 실행할 때는 Pi-hole 이미지를 다운로드하느라 1~2분 정도 걸립니다. 완료되면 아래 명령어로 정상 실행을 확인합니다.
docker compose logs -f pihole
로그에 “FTL started!” 메시지가 보이면 성공입니다. 이제 브라우저에서 http://[설치한_장비_IP]/admin 으로 접속하면 Pi-hole 관리 대시보드가 나타납니다.
시놀로지 NAS에서 설치할 때 주의사항
시놀로지 NAS에서는 53번 포트를 기본 DNS 서비스가 이미 점유하고 있을 수 있습니다. 이 경우 DSM 제어판에서 DNS Server 패키지를 중지하거나, 아래처럼 특정 네트워크 인터페이스에만 바인딩하는 방법을 사용합니다.
ports:
- "192.168.1.100:53:53/tcp"
- "192.168.1.100:53:53/udp"
또한 시놀로지 DSM 7에서는 80번 포트도 DSM 웹 인터페이스가 사용하므로, Pi-hole 웹 대시보드는 8080이나 다른 포트로 매핑하는 것이 좋습니다.
공유기 DNS 설정 변경 — 집 전체에 적용하기
방법 1: 공유기 DNS 서버 직접 변경 (추천)
이 방법이 가장 깔끔합니다. 공유기 관리 페이지에 접속해서 DNS 서버 주소를 Pi-hole이 설치된 장비의 IP로 변경합니다.
국내에서 많이 사용하는 공유기별 설정 경로를 정리하면 다음과 같습니다.
- ipTIME — 관리도구 → 고급 설정 → 네트워크 관리 → 인터넷 설정 → 기본 DNS를 Pi-hole IP로 변경
- ASUS — 관리 페이지 → WAN → 인터넷 연결 → DNS 서버 1을 Pi-hole IP로 변경
- TP-Link — 관리 페이지 → Network → DHCP Server → Primary DNS를 Pi-hole IP로 변경
- 통신사 제공 공유기 — 대부분 DHCP 설정에서 DNS 서버를 수동 지정할 수 있습니다. 메뉴 구조는 제조사마다 다르지만, “DHCP” 또는 “DNS” 키워드로 찾으면 됩니다.
DNS를 변경한 뒤에는 연결된 기기들의 DHCP 임대를 갱신해야 새 DNS 설정이 적용됩니다. 가장 간단한 방법은 기기의 Wi-Fi를 껐다가 다시 켜는 것입니다.
방법 2: 개별 기기에서 DNS 수동 설정
공유기 설정을 변경하기 어려운 환경(회사 네트워크, 공유 오피스 등)이라면 개별 기기에서 DNS를 수동으로 Pi-hole IP로 지정할 수 있습니다. 다만 이 경우 설정한 기기에만 광고 차단이 적용됩니다.
- Windows — 설정 → 네트워크 및 인터넷 → Wi-Fi 속성 → DNS 서버 할당을 수동으로 변경
- macOS — 시스템 설정 → 네트워크 → Wi-Fi → 세부사항 → DNS 탭에서 서버 추가
- iOS — 설정 → Wi-Fi → 연결된 네트워크의 (i) → DNS 구성을 수동으로 변경
- Android — 설정 → 네트워크 → Wi-Fi → 연결된 네트워크 수정 → 고급 옵션에서 DNS 변경
방법 3: 공유기 DHCP에서 DNS 서버 배포
공유기의 DHCP 설정에서 기기에게 배포하는 DNS 서버 주소를 Pi-hole로 지정하는 방법도 있습니다. 방법 1과 비슷하지만, 이 경우 공유기 자체가 아닌 각 기기가 직접 Pi-hole에 DNS를 질의하게 됩니다. Pi-hole 대시보드에서 어떤 기기가 어떤 요청을 했는지 개별적으로 확인할 수 있다는 장점이 있습니다.
Pi-hole 대시보드 활용과 필수 설정
대시보드 둘러보기
브라우저에서 http://[Pi-hole_IP]/admin에 접속하면 직관적인 대시보드가 나타납니다. Pi-hole v6 기준으로 주요 화면 구성은 이렇습니다.
- Dashboard — 전체 DNS 쿼리 수, 차단된 쿼리 수, 차단율(%), 그리고 시간대별 쿼리 그래프를 한눈에 보여줍니다. 처음 설정 후 하루만 지나면 보통 15~30%의 요청이 광고·트래커였다는 사실에 놀라게 됩니다.
- Query Log — 실시간으로 어떤 기기가 어떤 도메인을 요청했고, 허용됐는지 차단됐는지를 보여줍니다. 특정 앱이 몰래 보내는 데이터 수집 요청을 발견하면 꽤 충격적입니다.
- Domains — 특정 도메인을 수동으로 허용 목록(Whitelist)이나 차단 목록(Blacklist)에 추가할 수 있습니다.
- Adlists — 광고·트래커 도메인 목록(블랙리스트)을 관리합니다. 기본 목록만으로도 10만 개 이상의 광고 도메인이 차단되지만, 추가 목록을 넣으면 더 강력해집니다.
추천 블랙리스트 추가하기
Pi-hole 기본 설치 시 포함된 광고 목록은 Steven Black의 통합 호스트 목록 하나입니다. 여기에 아래 목록을 추가하면 차단 범위가 크게 넓어집니다.
- Firebog Ticked Lists — firebog.net에서 검증된 목록만 모아 놓은 컬렉션입니다. Pi-hole 커뮤니티에서 가장 널리 추천되는 목록이며, 오탐(정상 사이트를 잘못 차단하는 것)이 적습니다.
- OISD (oisd.nl) — 광고, 트래커, 멀웨어 도메인을 통합한 대형 목록입니다. “full” 버전은 100만 개 이상의 도메인을 포함합니다.
- Hagezi DNS Blocklists — 2025~2026년에 급부상한 목록으로, 특히 모바일 앱 광고와 텔레메트리 차단에 강점이 있습니다.
목록 추가는 Pi-hole 대시보드의 Adlists 메뉴에서 URL을 붙여넣고 Add 버튼을 누르면 끝입니다. 추가 후 Tools → Update Gravity를 클릭해서 목록을 갱신하세요.
다만 너무 공격적인 목록을 추가하면 정상적인 서비스가 차단될 수 있으니, 처음에는 Firebog의 Ticked 목록 + OISD basic 정도로 시작하고 필요에 따라 늘려 가는 것을 추천합니다.

화이트리스트 관리 — 오탐 해결하기
Pi-hole을 운영하다 보면 가끔 정상적인 서비스가 차단되는 경우가 생깁니다. 쇼핑몰 결제가 안 되거나, 특정 앱이 작동하지 않거나, 캡차 인증이 실패하는 등의 증상이 나타나면 Pi-hole의 Query Log를 확인해 보세요.
Query Log에서 빨간색으로 표시된(차단된) 도메인 중 의심되는 것을 클릭하면 바로 화이트리스트에 추가할 수 있습니다. 자주 화이트리스트에 추가해야 하는 도메인 유형을 정리하면 이렇습니다.
- CDN 도메인 — s3.amazonaws.com, cdn.jsdelivr.net 등 콘텐츠 전송 네트워크 도메인은 광고와 무관하게 정상 서비스에도 사용됩니다.
- 인증 관련 도메인 — 소셜 로그인이나 캡차 서비스 도메인이 차단되면 로그인 자체가 안 될 수 있습니다.
- IoT 기기 필수 도메인 — 로봇청소기, 스마트 스피커 등이 자체 클라우드에 접속하지 못하면 기기가 작동하지 않을 수 있습니다.
상위 DNS 서버 선택
Pi-hole이 차단하지 않은 정상적인 DNS 요청은 상위(upstream) DNS 서버로 전달됩니다. 기본값은 구글 DNS(8.8.8.8)이지만, 프라이버시를 중시한다면 아래 대안을 고려해 보세요.
- Cloudflare (1.1.1.1) — 속도가 빠르고 개인정보 보호 정책이 명확합니다. APNIC과 공동으로 운영하며, 로그를 24시간 내에 삭제합니다.
- Quad9 (9.9.9.9) — 멀웨어·피싱 도메인 차단 기능이 내장되어 있어 Pi-hole과 함께 쓰면 이중 보호 효과가 있습니다.
- Unbound (자체 DNS 리졸버) — 상위 DNS 서버에 의존하지 않고 직접 루트 서버부터 DNS를 재귀 조회하는 방식입니다. 프라이버시가 극대화되지만 설정이 다소 복잡합니다.
실전 운영 팁과 고급 활용법
Pi-hole + Unbound 조합으로 프라이버시 극대화
Pi-hole만 사용하면 차단되지 않은 DNS 요청은 결국 구글이나 Cloudflare에 전달됩니다. 여기에 Unbound를 함께 설치하면 외부 DNS 서버를 전혀 거치지 않고 직접 DNS를 해석할 수 있습니다.
docker-compose.yml에 Unbound 컨테이너를 추가하는 설정은 아래와 같습니다.
unbound:
container_name: unbound
image: mvance/unbound:latest
ports:
- "5335:53/tcp"
- "5335:53/udp"
restart: unless-stopped
Pi-hole 설정에서 상위 DNS 서버를 127.0.0.1#5335(또는 Docker 네트워크 내부 IP)로 지정하면 모든 DNS 쿼리가 Unbound를 통해 직접 해석됩니다. 이렇게 하면 어떤 제3자 DNS 서버에도 내 브라우징 기록이 전달되지 않습니다.
Pi-hole을 DHCP 서버로 활용하기
공유기의 DHCP 기능 대신 Pi-hole이 직접 DHCP 서버 역할을 할 수도 있습니다. 이 경우 Pi-hole 대시보드에서 각 기기의 호스트네임이 IP 주소 대신 표시되어 “누가 어떤 사이트에 접속했는지”를 더 직관적으로 파악할 수 있습니다. Settings → DHCP에서 활성화할 수 있으며, 활성화하기 전에 반드시 공유기의 DHCP를 먼저 비활성화해야 합니다. 같은 네트워크에 DHCP 서버가 두 개 있으면 IP 충돌이 발생합니다.
외출 시에도 광고 차단 — WireGuard VPN 연동
집 밖에서 모바일 데이터를 사용할 때도 Pi-hole의 보호를 받고 싶다면, WireGuard VPN이나 이전에 블로그에서 다뤘던 Tailscale을 활용하면 됩니다. 스마트폰에서 VPN으로 집 네트워크에 접속하면, 모든 DNS 요청이 Pi-hole을 경유하게 되어 외출 중에도 광고가 차단됩니다.
정기 업데이트와 모니터링
Pi-hole을 안정적으로 운영하려면 몇 가지 관리 작업을 주기적으로 해주면 좋습니다.
- Gravity 업데이트 — 광고 도메인 목록을 최신 상태로 유지합니다. Pi-hole은 기본적으로 일주일에 한 번 자동 업데이트하지만, 수동으로도 가능합니다.
docker exec pihole pihole -g - Docker 이미지 업데이트 — Pi-hole 자체도 보안 패치와 기능 개선이 꾸준히 이루어집니다.
docker compose pull && docker compose up -d명령어로 최신 버전을 적용할 수 있습니다. - 로그 확인 — 가끔 Query Log를 살펴보면 예상치 못한 도메인 요청을 발견할 수 있습니다. 설치한 적 없는 앱이 몰래 데이터를 보내는 경우도 있으니 한 달에 한 번 정도 점검하면 좋습니다.
Pi-hole 통계로 보는 우리 집 네트워크의 현실
Pi-hole을 일주일만 운영해 보면 놀라운 통계를 확인할 수 있습니다. 일반적인 가정에서 측정되는 수치를 공유하면 이렇습니다.
- 하루 평균 DNS 쿼리 수: 15,000~50,000건 (기기 수에 따라 다름)
- 광고·트래커 차단율: 전체 쿼리의 15~35%
- 가장 많이 차단되는 도메인: Facebook 트래커, Google 광고, Amazon 텔레메트리, 각종 앱 분석 SDK
- 스마트TV가 가장 많은 트래커 요청을 보내는 기기인 경우가 대부분
이 숫자들을 보면 “아, 내가 몰랐을 뿐 내 기기들이 이렇게 많은 데이터를 외부로 보내고 있었구나”라는 걸 실감하게 됩니다.

자주 묻는 질문과 문제 해결
Pi-hole 설치 후 인터넷이 안 됩니다
가장 흔한 원인은 Pi-hole 컨테이너가 정상 실행되지 않은 상태에서 DNS를 Pi-hole로 변경한 경우입니다. docker compose ps로 컨테이너 상태를 확인하고, 만약 Pi-hole이 꺼져 있다면 공유기 DNS를 원래 설정(자동 또는 8.8.8.8)으로 임시 복원한 뒤 문제를 해결하세요.
특정 사이트가 작동하지 않습니다
Pi-hole 대시보드의 Query Log에서 해당 시간대의 차단된 도메인을 확인하고, 의심되는 도메인을 화이트리스트에 추가합니다. 확실하지 않다면 Pi-hole을 일시적으로 비활성화(대시보드에서 Disable → 5분 등)한 뒤 해당 사이트가 정상 작동하는지 확인하는 방법도 있습니다.
Pi-hole 장비가 꺼지면 집 전체 인터넷이 먹통이 되나요?
네, DNS 서버가 응답하지 않으면 도메인 이름을 IP로 변환할 수 없어서 실질적으로 인터넷이 안 됩니다. 이를 방지하는 방법은 두 가지입니다. 첫째, 공유기 DNS 설정에 보조 DNS(예: 1.1.1.1)를 함께 입력해 두면 Pi-hole이 응답하지 않을 때 보조 DNS로 자동 전환됩니다. 다만 이 경우 보조 DNS를 사용하는 동안에는 광고 차단이 안 됩니다. 둘째, Pi-hole을 NAS처럼 항상 켜져 있는 장비에 설치하면 다운타임 걱정을 크게 줄일 수 있습니다.
유튜브 광고도 차단되나요?
아쉽게도 유튜브 동영상 내 광고는 Pi-hole만으로는 완벽히 차단하기 어렵습니다. 유튜브는 광고 영상과 일반 영상을 같은 도메인(googlevideo.com)에서 제공하기 때문에, 광고만 골라 차단하면 일반 영상까지 재생이 안 됩니다. 유튜브 광고까지 차단하려면 브라우저용 uBlock Origin 확장 프로그램을 함께 사용하거나, YouTube Premium을 구독하는 것이 현실적인 방법입니다.
Pi-hole이 인터넷 속도에 영향을 주나요?
오히려 빨라지는 경우가 많습니다. 광고 콘텐츠를 아예 다운로드하지 않으니 페이지 로딩 시 전송되는 데이터 양이 줄어들고, DNS 응답도 로컬 네트워크 내에서 처리되니 외부 DNS 서버보다 응답 시간이 빠릅니다. 특히 광고가 많은 뉴스 사이트나 커뮤니티 사이트에서 체감 속도 차이가 큽니다.
마무리 — 10분 투자로 바뀌는 인터넷 경험
Pi-hole 설치는 Docker 명령어 몇 줄과 공유기 DNS 설정 변경이 전부입니다. 이 10분의 투자로 집 안 모든 기기에서 광고 없는 깨끗한 인터넷을 경험할 수 있습니다. 개인적으로 Pi-hole을 설치하고 가장 만족스러웠던 점은 스마트폰 앱 내 배너 광고와 스마트TV의 추천 광고가 사라진 것이었습니다.
프라이버시 측면에서도 큰 의미가 있습니다. Pi-hole의 Query Log를 며칠만 관찰해 보면, 내 기기들이 나도 모르게 얼마나 많은 트래킹 데이터를 외부로 보내고 있었는지 직접 확인할 수 있습니다. 단순한 광고 차단을 넘어 내 디지털 생활의 투명성을 확보하는 첫걸음이 될 것입니다.
이미 Docker를 사용해 보신 분이라면 5분이면 충분하고, 처음이시라면 블로그의 Docker 입문 가이드를 먼저 읽어 보신 뒤 도전해 보세요. 한 번 설치하면 돌아갈 수 없는, 그런 종류의 변화입니다.
참고 자료
- Pi-hole 공식 문서 — Pi-hole 프로젝트의 공식 설치·설정·운영 가이드
- Wikipedia: Pi-hole — Pi-hole의 개요, 동작 원리, 역사를 정리한 위키백과 문서