13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[카테고리:] homelab

  • [HomeLabs] 홈랩·서버 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    [HomeLabs] 홈랩·서버 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    [인프라 엔지니어의 홈랩 일기] 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    안녕하세요, 13년차 서버실 지킴이입니다! 👨‍💻 오늘은 홈랩이나 작은 서버실을 꾸리려는 분들을 위해 랙 구성 시 제가 직접 겪었던 삽질 경험과 함께 꼭 확인해야 할 10가지 필수 체크리스트를 공유하려고 해요.

    처음엔 그냥 랙 하나 사서 장비 넣으면 되는 줄 알았거든요? 근데 막상 해보니 고려할 게 한두 가지가 아니더라고요. 특히 랙은 한번 설치하면 위치나 종류를 바꾸기가 어렵잖아요. 그래서 첫 단추를 잘 꿰는 게 정말 중요합니다. 저도 처음엔 멋모르고 샀다가 나중에 후회했던 기억이 새록새록 떠오르네요. 😅

    이 글을 통해 여러분은 랙 구성 체크리스트를 완벽하게 파악하고, 저처럼 시행착오를 겪지 않기를 바랍니다. 자, 그럼 시작해볼까요?

    랙 구성 체크리스트를 위한 서버 랙의 주요 구성 요소 개요

    안정적인 서버 랙 구성을 위한 필수 구성 요소 개요

    랙(Rack)이 뭔가요? 왜 필요한가요?

    랙(Rack)은 서버, 네트워크 스위치, 스토리지 등 IT 장비들을 표준화된 규격에 맞춰 효율적으로 수납하고 관리하기 위한 구조물이에요. 쉽게 말해, IT 장비들을 위한 아파트라고 생각하시면 됩니다. 층별로 장비를 배치하고, 전원과 네트워크 케이블을 깔끔하게 정리할 수 있도록 도와주죠.

    랙을 사용하면 장비의 물리적 보호는 물론, 냉각(Cooling), 전원 공급(Power Delivery), 케이블 관리(Cable Management)를 훨씬 용이하게 할 수 있어요. 특히 제한된 공간에서 많은 장비를 운영해야 할 때 그 진가가 발휘됩니다. 홈랩에서도 깔끔하고 안정적인 환경을 구축하는 데 필수적이죠.

    ✅ 랙 구성 초보자를 위한 10가지 필수 체크리스트

    제가 13년 동안 수많은 랙을 만지면서 얻은 노하우를 바탕으로, 여러분이 랙을 선택하고 구성할 때 반드시 점검해야 할 10가지 사항을 정리해봤습니다. 하나씩 꼼꼼히 살펴볼게요!

    1. 랙 사이즈 및 종류 (Rack Size and Type)

    • U (Unit) 단위: 랙의 높이를 나타내는 표준 단위로, 1U는 약 44.45mm(1.75인치)입니다. 서버나 스위치 등 대부분의 장비는 1U, 2U, 4U 등으로 표기돼요.
    • 랙 너비 및 깊이: 대부분의 랙은 19인치 표준 너비를 따르지만, 깊이는 다양합니다. 사용하는 서버의 깊이(특히 레일 길이)를 고려해서 선택해야 해요. 저도 처음엔 무조건 큰 게 좋은 줄 알았는데, 공간 제약이 있더라고요. 😅
    • 랙 종류:
      • 4-Post Rack (4주형 랙): 가장 일반적인 형태로, 앞뒤 기둥 4개가 장비를 안정적으로 지지합니다. 서버, 스토리지 등 무거운 장비에 적합해요.
      • 2-Post Rack (2주형 랙): 주로 네트워크 스위치나 패치 패널처럼 가벼운 장비를 설치할 때 사용합니다.
      • Wall-mount Rack (벽걸이 랙): 공간이 협소할 때 벽에 걸어 사용합니다. 홈랩에 고려해볼 만해요.
      • Open-frame Rack (오픈형 랙): 문과 측면 패널이 없어 접근성이 좋지만, 보안과 먼지에 취약합니다.
      • Enclosed Rack (밀폐형 랙): 문과 측면 패널이 있어 보안과 냉각 관리에 유리하며, 가장 많이 사용되는 형태입니다.

    💡 팁: 홈랩이라면 12U~24U 정도의 4-Post Enclosed Rack이 적당할 수 있습니다. 미래에 추가될 장비들을 위해 조금 여유 있는 U를 선택하는 것이 좋습니다.

    2. 장비 무게 및 하중 (Equipment Weight and Load Capacity)

    서버는 생각보다 무겁습니다. 특히 랙에 여러 대의 서버와 UPS(Uninterruptible Power Supply)까지 설치하면 총 무게가 상당해져요. 랙이 이 무게를 안전하게 견딜 수 있는지 하중 지지 능력(Load Capacity)을 반드시 확인해야 합니다.

    • 랙 자체의 최대 하중
    • 랙 레일(Rail Kit)의 하중 지지 능력

    저도 예전에 랙 레일 없이 서버를 혼자 올리다가 허리 나갈 뻔했어요. 😥 꼭 장비 제조사에서 제공하는 순정 랙 레일 키트를 사용하시거나, 호환되는 레일을 구해서 안전하게 설치하세요.

    3. 전원 요구 사항 (Power Requirements)

    IT 장비는 전기를 먹고 살죠! 랙 구성에서 전원 계획은 정말 중요합니다.

    • 총 전력 소모량 계산: 랙에 들어갈 모든 장비의 정격 전력(Rated Power)을 합산하여 총 전력 소모량을 계산해야 합니다.
    • PDU (Power Distribution Unit, 전원 분배 장치): 랙 내 장비에 안정적으로 전원을 공급하고 관리하는 장치입니다. PDU의 총 용량과 콘센트 타입(C13, C19, NEMA 등)이 장비와 호환되는지 확인하세요.
    • UPS (Uninterruptible Power Supply, 무정전 전원 공급 장치): 정전 시에도 일정 시간 동안 전원을 공급하여 장비를 안전하게 종료하거나 계속 운영할 수 있게 해줍니다.
    • 회로 구성: 랙의 총 전력 소모량이 너무 높으면 별도의 전용 회로(Dedicated Circuit)를 구성해야 할 수도 있습니다. 이거 계산 잘못해서 차단기(Circuit Breaker) 내려간 적도 많아요. ⚠️
    랙 전원 공급을 위한 PDU와 UPS 연결 및 다양한 콘센트 타입 다이어그램

    랙 전원 공급을 위한 PDU와 UPS 연결 및 다양한 콘센트 타입

    4. 냉각 및 공기 흐름 (Cooling and Airflow)

    서버는 열을 많이 발생시켜요. 이 열을 제대로 식혀주지 않으면 장비의 성능 저하와 수명 단축으로 이어집니다. 여름에 서버 룸이 아니라 사우나 되는 줄 알았죠. 🥵

    • 공기 흐름 방향: 대부분의 서버는 앞(Front)에서 찬 공기를 흡입하고 뒤(Rear)로 뜨거운 공기를 배출합니다. 랙 안에서 공기가 효율적으로 순환되도록 장비를 배치해야 합니다.
    • 블랭킹 패널 (Blanking Panel): 비어 있는 U 공간을 막아주는 패널입니다. 찬 공기가 비어 있는 공간으로 새는 것을 막아, 장비를 통과하는 공기의 효율을 높여줍니다.
    • 랙 팬 (Rack Fan): 랙 내부의 공기 순환을 돕기 위해 상단 또는 하단에 설치하는 팬입니다.
    • 서버실/홈랩 환경: 랙 주변의 실내 온도와 습도도 중요합니다. 에어컨이나 제습기 등의 설치도 고려해야 합니다.

    5. 네트워크 케이블링 (Network Cabling)

    아름다운 랙은 아름다운 케이블링에서 시작됩니다! 엉망인 케이블은 나중에 장애 발생 시 문제 해결을 어렵게 하고, 공기 흐름까지 방해할 수 있어요. 😱

    • 패치 패널 (Patch Panel): 랙 외부에서 들어오는 네트워크 케이블을 한곳에 모아 관리하기 쉽게 해줍니다.
    • 케이블 타이 (Cable Tie): 벨크로 타이(Velcro Tie)를 사용하는 것이 좋습니다. 플라스틱 타이는 너무 강하게 조이면 케이블 손상을 유발할 수 있거든요.
    • 케이블 트레이 (Cable Tray): 랙 내에서 케이블을 깔끔하게 정리하고 지지하는 데 사용됩니다.
    • 케이블 길이: 너무 길거나 짧지 않게, 적절한 길이의 케이블을 사용하는 것이 중요합니다.

    💡 팁: 케이블은 색상별로 용도를 구분하거나, 라벨링(Labeling)을 해두면 나중에 정말 편합니다. 지저분하면 나중에 진짜 피눈물 흘려요. 😭

    랙 구성에서 잘 정리된 케이블링과 복잡한 케이블링 비교

    잘 정리된 랙 케이블링(좌)과 복잡한 케이블링(우) 비교

    6. 접지 (Grounding)

    안전은 아무리 강조해도 지나치지 않습니다. 접지(Grounding)는 전기 안전의 기본이에요. 장비를 정전기나 낙뢰로부터 보호하고, 누전 시 인명 피해를 방지합니다.

    • 랙 자체의 접지 단자를 건물 접지 시스템에 연결해야 합니다.
    • 모든 장비의 전원 케이블이 접지된 콘센트에 연결되었는지 확인하세요.

    설마 하는 순간 사고가 터지죠. ⚡️ 꼭 확인해주세요.

    7. 보안 (Security)

    물리적 보안도 중요합니다. 특히 중요한 데이터나 장비가 있는 경우 랙에 대한 접근을 제한해야 합니다.

    • 잠금장치: 랙 도어에 잠금장치가 있는지 확인하세요.
    • 접근 제어: 홈랩에서는 덜하겠지만, 상업용 환경에서는 랙이 있는 공간 자체에 대한 접근 제어가 필요합니다.

    누군가 내 서버 만지는 거 싫잖아요? 🔒

    8. 유지보수 공간 (Maintenance Space)

    랙 설치 시 앞뒤 공간을 충분히 확보하는 것이 중요해요. 장비 교체, 케이블 작업, 문제 해결 등 유지보수 작업을 할 때 정말 필요하거든요.

    • 랙 앞뒤로 최소 1m 정도의 여유 공간을 확보하는 것을 권장합니다.
    • 측면 패널을 열어야 하는 경우를 대비해 측면 공간도 고려해야 합니다.

    등 뒤에 벽 있으면 진짜 고생합니다. 낑낑대면서 장비 빼는 거 해봤는데, 정말 힘들더라고요. 😩

    9. 예산 (Budget)

    랙 구성에는 생각보다 많은 비용이 들어갑니다. 랙 자체뿐만 아니라 부대비용도 고려해야 하거든요.

    • 랙 본체
    • PDU, UPS
    • 랙 레일 키트 (장비별로 구매해야 할 수도 있습니다)
    • 케이블, 패치 패널, 케이블 정리 용품
    • 블랭킹 패널, 랙 팬
    • 배송 및 설치 비용 (랙이 워낙 크고 무거워서 배송비도 만만치 않습니다)

    생각보다 돈 많이 들어가요. 랙만 사는 게 아니거든요. 💸 예산을 넉넉하게 잡는 것이 좋습니다.

    10. 확장성 (Scalability)

    미래를 보고 계획하는 것이 중요합니다. 지금 당장 필요한 것보다 조금 더 여유 있게 랙을 구성하는 것이 좋아요.

    • 나중에 서버나 스위치를 추가할 계획이 있다면, 넉넉한 U 공간을 가진 랙을 선택하세요.
    • PDU의 포트 수와 용량, UPS의 백업 시간 등도 미래를 고려하여 선택합니다.

    나중에 장비 추가하고 싶은데 랙이 꽉 차 있으면 얼마나 서글픈데요. 😢

    랙 구성 초보자를 위한 10가지 필수 체크리스트 요약 인포그래픽

    랙 구성 체크리스트 요약 인포그래픽

    마무리하며: 랙 구성, 어렵지만 한번 잘 해두면 두고두고 편합니다!

    오늘은 랙 구성 초보자분들을 위해 제가 13년 동안 겪은 경험을 바탕으로 10가지 필수 체크리스트를 공유해드렸습니다. 처음에는 복잡하게 느껴질 수 있지만, 이 체크리스트를 하나씩 따라가다 보면 훨씬 안정적이고 효율적인 랙 환경을 구축할 수 있을 거예요.

    저도 처음엔 이게 뭔가 싶었는데, 한번 제대로 세팅해두면 장비 관리와 유지보수가 정말 편해지더라고요. 여러분의 멋진 홈랩 랙이나 서버 랙 구성을 응원합니다! 🎉

    다음번에는 PDU와 UPS 선정 가이드를 좀 더 자세히 다뤄볼 예정이니, 기대해주세요! 궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 제가 아는 선에서 최대한 도와드리겠습니다.

  • [HomeLabs] 저전력 미니PC 홈서버: Beelink S12 Pro vs UN100L 성능 비교

    [HomeLabs] 저전력 미니PC 홈서버: Beelink S12 Pro vs UN100L 성능 비교

    저전력 미니PC 홈서버: Beelink S12 Pro vs UN100L 성능 비교

    안녕하세요! 13년차 인프라 엔지니어, ’13년차의 서버실’ 운영자입니다. 오늘은 홈서버 구축에 관심 있는 분들이라면 한 번쯤 고민해봤을 법한, 바로 저전력 미니PC에 대한 이야기를 풀어볼까 합니다. 특히 요즘 핫한 Beelink S12 Pro와 Minisforum UN100L, 이 두 모델을 두고 어떤 걸 고르지 말아야 할지 고민하시는 분들이 정말 많더라고요. 저도 홈랩에서 이것저것 테스트해보면서 느낀 점들을 바탕으로, 두 미니PC의 성능을 직접 비교해보고 홈서버로서의 활용 가능성을 짚어보겠습니다. 여러분의 선택에 조금이나마 도움이 되기를 바랍니다.

    Beelink S12 Pro와 Minisforum UN100L 저전력 미니PC 외관 비교

    두 제품 모두 인텔의 최신 저전력 CPU인 N100을 탑재하고 있다는 점에서 많은 기대를 모으고 있죠. 하지만 CPU만 같다고 해서 성능이 똑같지는 않다는 거, 다들 알죠? RAM, SSD, 그리고 제조사별 튜닝 방식에 따라 체감 성능은 정말 천차만별이거든요. 저도 처음에는 ‘어차피 N100인데 뭐가 다르겠어?’ 싶었는데, 직접 써보니 정말 다른 결과가 나왔어요.

    홈서버, 왜 저전력 미니PC인가?

    홈서버를 구축하려는 이유는 정말 다양합니다. 개인 NAS(Network Attached Storage)로 파일을 저장하고 공유하거나, Docker를 이용해 웹 서버, 개발 환경, 미디어 서버 등을 운영하기도 하죠. 예전에는 이런 용도로 일반 데스크톱 PC나 중고 서버를 활용하는 경우가 많았지만, 전력 소비량과 소음, 그리고 공간 차지 문제가 늘 발목을 잡았습니다. 하지만 저전력 미니PC는 이런 고민을 한 번에 해결해준다는 게 정말 매력적이거든요. 작고 조용하며, 하루 종일 켜놔도 전기 요금 걱정이 덜하니까요. 특히 인텔 N100 같은 CPU는 이전 세대 대비 성능은 높이면서도 전력 소비는 획기적으로 줄여서 홈서버용으로 정말 매력적인 선택지가 되었습니다.

    Intel N100 프로세서 아키텍처 및 저전력 특징

    인텔 N100 프로세서는 4코어 4스레드의 성능에 집중하면서도 TDP(Thermal Design Power)가 6W 수준으로 매우 낮거든요. 이는 곧 낮은 발열과 전력 소비로 이어지죠. 홈서버처럼 24시간 365일 구동되는 장비에게는 이보다 더 좋은 조건이 없습니다.

    Beelink S12 Pro vs Minisforum UN100L: 저전력 미니PC 스펙 비교

    자, 이제 본격적으로 두 제품의 스펙을 비교해볼 시간입니다. 기본적인 CPU는 동일하지만, 다른 부분에서 어떤 차이가 있는지 꼼꼼히 살펴보겠습니다.

    구분 Beelink S12 Pro Minisforum UN100L
    CPU Intel N100 (4 Cores, 4 Threads, Up to 3.4GHz) Intel N100 (4 Cores, 4 Threads, Up to 3.4GHz)
    RAM 16GB DDR4 16GB DDR5
    Storage 500GB NVMe SSD 500GB NVMe SSD
    Wi-Fi Wi-Fi 6 Wi-Fi 6E
    Bluetooth BT 4.2 BT 5.2
    Networking 1Gbps Ethernet 2.5Gbps Ethernet
    Video Output HDMI 2.0, DisplayPort 1.4 HDMI 2.1, DisplayPort 1.4
    Dimensions (W x D x H) 118.5 x 112 x 34.5 mm 128 x 120 x 38.5 mm

    표를 보시면 아시겠지만, CPU는 동일하지만 RAM 타입(DDR4 vs DDR5), 네트워크 속도(1Gbps vs 2.5Gbps), 그리고 Wi-Fi 표준 등에서 확실히 차이를 보이네요. 특히 RAM이 DDR5를 지원하는 Minisforum UN100L이 조금 더 유리해 보이고, 2.5Gbps 이더넷 포트도 요즘 같은 시대에는 점점 중요해지는 부분이거든요. 저는 이 스펙 차이가 실제 성능에 어떤 영향을 미칠지 정말 궁금했습니다.

    실제 성능 테스트: 벤치마크 결과는?

    이론적인 스펙만으로는 실제 사용 경험을 알 수 없죠. 그래서 제가 직접 두 미니PC를 가지고 몇 가지 벤치마크를 돌려봤습니다. 홈서버로 주로 사용될 환경을 고려해서 CPU 성능, 스토리지 속도, 그리고 네트워크 처리 능력 위주로 테스트를 진행했어요. Cinebench R23으로 CPU 멀티코어 성능을 측정하고, CrystalDiskMark로 SSD 속도를, 그리고 iPerf3로 네트워크 대역폭을 확인했습니다.

    Cinebench R23 멀티코어 성능 벤치마크 비교 그래프

    Cinebench R23 멀티코어 테스트 결과, 두 제품 모두 비슷한 점수를 기록했어요. N100 CPU 자체의 성능 한계는 분명하지만, 저전력 모델치고는 꽤 괜찮은 결과더라고요. 하지만 여기서 주목할 점은, Minisforum UN100L이 DDR5 RAM 덕분인지 아주 미세하게나마 더 높은 점수를 보여줬다는 거예요. 물론 이 차이가 실제 사용에서 크게 느껴질 정도는 아니지만, ‘그래도 더 좋은 쪽으로’라는 마음은 들더라고요.

    스토리지 속도는 두 제품 모두 NVMe SSD를 사용했기에 비슷한 수준을 보였습니다. 읽기/쓰기 속도 모두 홈서버 운영에 전혀 부족함 없는 수준이었어요. 다만, 장시간 부하가 걸리는 작업에서는 SSD의 발열 관리도 중요할 텐데, 이 부분은 두 제품 모두 방열판이 잘 되어 있어 안심이었습니다.

    가장 큰 차이를 보인 부분은 바로 네트워크 속도였어요. Minisforum UN100L의 2.5Gbps 이더넷 포트는 1Gbps 포트를 사용하는 Beelink S12 Pro보다 훨씬 빠른 속도를 보여줬습니다. 특히 NAS로 데이터를 옮기거나, 여러 장치에서 동시에 네트워크 스토리지에 접근할 때 이 차이는 분명히 체감될 수 있거든요. 홈서버를 구축한다면 네트워크 성능은 정말 중요한 부분입니다!

    홈서버 운영 시 고려사항 및 트러블슈팅

    두 미니PC 모두 홈서버로 활용하기에 충분한 성능을 보여주지만, 몇 가지 고려해야 할 점들이 있어요. 첫째는 확장성입니다. 두 제품 모두 M.2 슬롯과 SATA 포트(일부 모델)를 제공하지만, NVMe SSD 슬롯은 보통 하나만 지원하는 경우가 많거든요. 따라서 저장 공간이 중요하다면, 처음부터 용량이 큰 SSD를 선택하거나, 외장 스토리지(USB 외장하드 등)를 활용해야 합니다. 저는 보통 1TB NVMe SSD를 기본으로 장착하고, 부족하면 USB 3.0 외장하드를 연결해서 쓰고 있어요.

    둘째는 쿨링입니다. 저전력 CPU라 해도 장시간 고부하 작업 시에는 발열이 발생하거든요. 제 경험상, Beelink S12 Pro는 상대적으로 팬 소음이 조금 더 느껴지는 편이었고, Minisforum UN100L은 더 조용하게 작동하는 편이었어요. 홈서버를 거실이나 침실 근처에 두는 경우라면 이 소음 차이가 꽤 크게 다가올 수 있습니다. 저는 홈랩에 두고 쓰기 때문에 크게 신경 쓰지 않았지만, 혹시라도 소음에 민감하시다면 이 부분을 꼭 고려하시는 게 좋아요. ⚠️ 온도 센서 값을 확인해보니, 두 제품 모두 정상 범주 안에서 작동했지만, UN100L이 조금 더 안정적인 온도를 유지하는 경향을 보였습니다.

    셋째는 운영체제 설치입니다. 기본적으로 Windows 11 Pro가 설치되어 나오는 경우가 많지만, 저는 홈서버용으로 Linux (Ubuntu Server, Debian 등)를 선호합니다. Docker를 활용한 컨테이너 환경 구축이 훨씬 용이하고, 리소스 사용률도 낮기 때문이죠. Linux 설치 자체는 어렵지 않지만, 혹시라도 리눅스 환경에 익숙하지 않으시다면 조금 공부가 필요할 수 있습니다.

    결론: 저전력 미니PC 어떤 것을 선택할까?

    자, 이제 드디어 결론을 내릴 시간입니다. Beelink S12 Pro와 Minisforum UN100L, 둘 다 훌륭한 저전력 미니PC임은 분명합니다. 하지만 제 경험을 바탕으로 몇 가지 기준으로 추천을 드리자면:

    • 가성비와 무난함을 원한다면: Beelink S12 Pro
      가격이 조금 더 저렴하면서도 기본적인 성능은 충분합니다. 1Gbps 네트워크만으로도 충분한 사용자라면 좋은 선택이 될 수 있어요.
    • 조금 더 나은 성능과 확장성을 원한다면: Minisforum UN100L
      DDR5 RAM, 2.5Gbps 이더넷 포트, Wi-Fi 6E 등 최신 기술을 탑재하고 있어 장기적으로 더 유리할 수 있습니다. 또한, 상대적으로 조용한 작동 소음도 큰 장점이거든요. 홈서버 구축 시 조금이라도 더 나은 성능과 미래 확장성을 고려한다면 Minisforum UN100L을 추천합니다.

    저 역시 홈서버 운영 경험을 통해, 네트워크 성능과 쿨링이 장시간 안정적인 운영에 얼마나 중요한지 새삼 깨달았거든요. 여러분의 사용 목적과 예산에 맞춰 현명한 선택을 하시길 바랍니다. 다음 글에서는 이 저전력 미니PC들을 활용해서 실제로 Docker로 웹서버를 구축하는 과정을 보여드리도록 하겠습니다. 기대해주세요!

    궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 함께 고민하고 해결해나가겠습니다. 감사합니다!

  • [홈랩 회고] 홈 어시스턴트 1년 사용기: Zigbee 자동화 성공과 실패 사례

    [홈랩 회고] 홈 어시스턴트 1년 사용기: Zigbee 자동화 성공과 실패 사례

    [홈랩 회고] 홈 어시스턴트 1년 사용기: Zigbee 자동화 성공과 실패 사례 분석

    안녕하세요, 13년차 서버실입니다. 오늘은 제가 지난 1년간 홈 어시스턴트(Home Assistant)와 Zigbee(지그비) 자동화를 홈랩에 구축하면서 겪었던 성공과 실패, 그리고 그 과정에서 얻은 인사이트를 솔직하게 나눠볼까 합니다. 스마트홈 구축에 관심 있는 분들이라면 홈 어시스턴트나 지그비를 고민해보셨을 텐데요. 제가 직접 해보니 마냥 장밋빛만은 아니더라고요. 삽질도 많이 했고, 😅 드디어 됐다! 하는 성취감도 컸습니다.

    혹시 여러분도 집 안의 전등, 스위치, 센서들을 통합해서 나만의 똑똑한 집을 만들고 싶다는 생각 해보신 적 있으신가요? 처음엔 그저 편리함에 이끌려 시작했는데, 이게 또 인프라 엔지니어의 피를 자극하는 재미가 있더라고요. 😄 제 경험이 여러분의 스마트홈 구축 여정에 작은 도움이 되기를 바랍니다.

    홈 어시스턴트와 지그비 기반 스마트홈 아키텍처 개요. 모든 기기가 유기적으로 연결되어 자동화를 이루는 모습입니다.

    홈 어시스턴트와 Zigbee 개념 파헤치기

    먼저, 홈 어시스턴트(Home Assistant, 이하 HA)가 뭔지 간단히 설명해드릴게요. 쉽게 말해, 집 안의 모든 스마트 기기를 한곳에서 관리하고 자동화하는 오픈소스 플랫폼입니다. 제조사나 프로토콜이 달라도 HA를 통해 통합 제어가 가능하거든요. 마치 리눅스 서버에 다양한 서비스를 올리듯, HA 위에 수많은 통합(Integration)을 추가해서 기능을 확장할 수 있어요.

    그리고 Zigbee(지그비)는 스마트홈 기기들 간의 저전력 무선 통신 프로토콜이에요. Wi-Fi(와이파이)보다 전력 소모가 훨씬 적고, 메시 네트워크(Mesh Network)를 형성해서 안정적인 연결성을 제공하는 게 특징입니다. 기기들이 서로 신호를 중계해주기 때문에 한 기기가 멀리 있어도 다른 기기를 통해 연결될 수 있는 거죠. 제가 이 지그비에 매력을 느꼈던 건 바로 이런 확장성과 안정성 때문이었거든요.

    실전 구현: 나만의 스마트홈 기반 다지기

    저는 HA를 처음에는 라즈베리 파이(Raspberry Pi)에 설치했어요. 가볍게 시작하기 좋았거든요. 나중에는 좀 더 강력한 성능을 위해 홈랩의 Proxmox VE(프록스목스 가상 환경) 위에 VM(가상 머신)으로 HA OS를 올렸습니다. 안정적인 전원과 네트워크 환경이 중요하다고 생각했거든요.

    지그비 기기들을 HA와 연결하려면 지그비 코디네이터(Zigbee Coordinator)가 필요해요. 저는 USB 동글 형태의 코디네이터를 HA 서버에 연결했습니다. 대표적으로 Sonoff ZBDongle-P나 ConBee II 같은 제품들이 널리 쓰이는데, 저는 Sonoff 제품을 선택했어요. HA에 Zigbee 통합을 추가하고, 이 코디네이터를 연결해주면 준비 완료입니다. 그 다음 각 지그비 기기들을 페어링(Pairing) 모드로 만들어서 HA에 등록하는 과정을 거쳤죠.

    # Home Assistant configuration.yaml 예시 (Zigbee2MQTT 사용 시)
    # Zigbee2MQTT는 HA와 Zigbee 기기를 연결해주는 인기 있는 애드온입니다.
    
    # configuration.yaml
    # mqtt:
    #   broker: 192.168.1.100 # MQTT 브로커 주소 (별도 설치 필요)
    #   port: 1883
    
    # sensor:
    #   - platform: mqtt
    #     state_topic: "zigbee2mqtt/livingroom_temp/temperature"
    #     name: "거실 온도"
    #     unit_of_measurement: "°C"
    
    # light:
    #   - platform: mqtt
    #     name: "주방 조명"
    #     command_topic: "zigbee2mqtt/kitchen_light/set"
    #     state_topic: "zigbee2mqtt/kitchen_light"
    #     brightness: true
    #     color_temp: true
    

    위 YAML 코드는 HA에서 MQTT(Message Queuing Telemetry Transport)를 통해 지그비 기기를 연동하는 일반적인 방식의 예시입니다. 실제로 저는 Zigbee2MQTT라는 애드온을 설치해서 사용했는데, 다양한 제조사의 지그비 기기를 유연하게 연결할 수 있어서 정말 편리하더라고요. HA Add-on Store에서 쉽게 설치할 수 있습니다. 💡

    홈 어시스턴트 Zigbee2MQTT 애드온 설정 및 기기 페어링 화면

    홈 어시스턴트의 Zigbee2MQTT 애드온 설정 화면. 여기서 새로운 지그비 기기를 검색하고 페어링할 수 있습니다.

    삽질 경험: 주의사항과 트러블슈팅 ⚠️

    스마트홈 구축이 쉬울 리 없죠. 저도 수많은 삽질을 했습니다. 특히 지그비는 메시 네트워크의 특성 때문에 몇 가지 주의할 점이 있더라고요.

    1. 기기 호환성 문제: 모든 지그비 기기가 HA와 찰떡같이 붙는 건 아니더라고요. 특히 샤오미(Xiaomi)나 아카라(Aqara) 제품 중 일부는 전용 게이트웨이가 없으면 연결이 불안정하거나, 특정 기능이 완벽하게 동작하지 않는 경우가 있었습니다. ⚠️ 펌웨어 버전이나 제조사별 구현 방식의 차이가 원인이더라고요.
    2. 메시 네트워크 구성: 지그비는 메시 네트워크가 중요해요. 배터리로 작동하는 센서류는 라우터(Router) 역할을 못하고, 항상 전원에 연결되어 있는 기기(스마트 플러그, 전등 스위치 등)가 라우터 역할을 합니다. 이 라우터 기기들이 충분히 많고 고르게 분포되어야 네트워크가 안정적이거든요. 처음엔 라우터 역할을 하는 기기가 부족해서 센서들이 자꾸 연결이 끊기더라고요. 결국 스마트 플러그를 몇 개 더 추가해서 네트워크를 보강했습니다.
    3. USB 간섭 문제: HA 서버에 연결된 지그비 코디네이터 USB 동글이 다른 USB 기기나 Wi-Fi 신호와 간섭을 일으키는 경우가 있습니다. 저는 USB 연장 케이블을 사용해서 동글을 서버 본체에서 멀리 떨어뜨려 놓으니 훨씬 안정적으로 작동하더라고요. 💡 이건 정말 꼭 해보세요!
    4. 펌웨어 업데이트: 지그비 코디네이터의 펌웨어(Firmware)를 최신 버전으로 유지하는 것도 중요합니다. 새로운 기기 지원이나 버그 수정이 포함될 수 있거든요. 저는 이 과정을 소홀히 했다가 몇몇 기기가 페어링되지 않아서 한참을 헤맸습니다.

    이런 문제들을 해결하면서 지그비 네트워크의 동작 원리에 대해 더 깊이 이해하게 됐습니다. 단순히 기기를 연결하는 것을 넘어, 네트워크 전체를 최적화하는 과정이 필요하더군요.

    검증과 결과: 성공 및 실패 사례 분석

    1년간의 경험을 바탕으로, 제가 구축한 지그비 자동화의 성공과 실패 사례를 정리해봤습니다.

    구분 성공 사례 ✅ 실패/아쉬운 사례 😢
    조명 자동화
    • 외출 시 모든 조명 자동 소등
    • 새벽에 화장실 진입 시 최소 밝기로 점등
    • TV 시청 시 거실 조명 밝기 조절 (리모컨 연동)
    • 일부 스마트 전구의 Wi-Fi/Zigbee 혼용 시 간섭
    • 특정 전등의 색온도/밝기 변경 자동화가 생각보다 번거로움
    센서 기반 자동화
    • 현관문 열림 시 거실 조명 켜짐
    • 침실 창문 열림 시 에어컨/난방 자동 정지
    • 움직임 감지 센서로 복도 조명 제어 (사람 없을 땐 꺼짐)
    • 일부 저가형 도어/윈도우 센서의 빈번한 연결 끊김
    • 배터리 센서 잔량 알림이 제때 오지 않아 방전되는 경우 발생
    환기/공기질 관리
    • 미세먼지 농도에 따른 공기청정기 자동 동작 (HA 통합)
    • 환기 팬 제어 (온도/습도에 따라)
    • 환기 팬 제어는 HA 통합이 아닌 다른 방식으로 연동되어 아쉬움

    가장 만족스러웠던 건 역시 조명 자동화였습니다. 퇴근 후 집에 들어서면 현관문 열림을 감지해 거실 조명이 은은하게 켜지고, 새벽에 화장실에 갈 때면 최소 밝기로 조명이 켜졌다 꺼지는 경험은 삶의 질을 확실히 높여주더군요. 🎉

    반면, 배터리 기반의 센서들은 가끔씩 연결이 끊기거나 배터리 잔량 알림이 부정확해서 애를 먹었습니다. 안정적인 메시 네트워크 구성과 주기적인 모니터링이 필수라는 걸 다시 한번 깨달았죠.

    홈 어시스턴트 대시보드 Zigbee 기기 상태 및 센서 데이터 시각화

    홈 어시스턴트 대시보드. 다양한 지그비 기기들의 실시간 상태와 센서 데이터를 한눈에 볼 수 있습니다.

    마무리: 1년의 회고와 앞으로의 계획

    홈 어시스턴트와 Zigbee 자동화를 1년간 사용하면서 정말 많은 걸 배웠습니다. 단순히 편리함을 넘어, 오픈소스 생태계의 힘과 인프라 엔지니어로서 직접 시스템을 구축하고 최적화하는 재미를 느낄 수 있었죠. 물론 중간중간 포기하고 싶을 만큼의 삽질도 있었지만, 결국 해결했을 때의 쾌감은 이루 말할 수 없었습니다.

    가장 중요한 교훈은 ‘안정적인 네트워크 구성의 중요성’과 ‘기기 호환성 사전 확인’이었습니다. 그리고 예상치 못한 문제에 부딪혔을 때는 커뮤니티의 도움을 받는 것이 정말 큰 힘이 되더라고요. HA 커뮤니티는 정말 활발하고 자료도 풍부해서 큰 도움이 됐습니다.

    앞으로는 Matter(매터)나 Thread(스레드) 같은 새로운 스마트홈 표준에도 관심을 가지고, 제 홈랩에 어떻게 통합할 수 있을지 실험해볼 생각입니다. 스마트홈 기술은 계속 발전하고 있으니, 앞으로도 새로운 삽질(?)과 함께 더 스마트한 집을 만들어나갈 계획이에요. 😉

    여러분도 이 글을 통해 홈 어시스턴트와 지그비 자동화에 대한 궁금증이 조금이나마 해소되셨기를 바랍니다. 혹시 더 궁금한 점이나 여러분의 스마트홈 경험담이 있다면 댓글로 공유해주세요!

    홈 어시스턴트와 Zigbee 스마트홈 구축 주요 장단점 및 팁 인포그래픽

    홈 어시스턴트와 지그비 스마트홈 구축의 주요 장단점 및 팁 요약 인포그래픽.

  • [HomeLabs] 미니PC 홈서버 구축: 저전력 서버 완벽 가이드

    월 전기요금 보고 깜짝 놀란 그날부터 시작됐습니다

    홈서버 구축을 처음 시작했을 때 저는 ATX 풀타워 케이스에 데스크톱 CPU를 꽂아서 24시간 돌렸습니다. 결과는… 다음 달 전기요금 고지서가 저를 가르쳐줬죠. “이건 아니다” 싶었어요. 그때부터 저전력 서버, 특히 미니PC를 진지하게 알아보기 시작했습니다.

    13년 동안 인프라 엔지니어로 일하면서 홈랩(Home Lab)을 꾸준히 운영해왔는데요, 솔직히 말하면 홈랩 환경에서 가장 중요한 건 성능이 아니라 지속 가능성이더라고요. 아무리 좋은 장비도 전기세 때문에 꺼놓으면 의미가 없잖아요.

    이 글에서는 홈서버 구축을 처음 고민하시는 분들, 혹은 기존 홈서버의 전력 소비가 너무 많아서 고민이신 분들을 위해 저전력 미니PC를 활용한 홈서버 구축 가이드를 공유해드리려고 합니다. 실제로 제가 삽질했던 경험들도 솔직하게 담았으니 끝까지 읽어보세요.

    ▲ 미니PC 기반 홈서버의 일반적인 네트워크 구성도 — 인터넷 공유기부터 NAS, 모니터링까지 한눈에 볼 수 있습니다.

    왜 미니PC인가? 저전력 서버의 장단점

    “미니PC가 서버로 쓸 만해요?” 이 질문 정말 많이 받습니다. 결론부터 말씀드리면, 홈서버 용도로는 충분히 쓸 만합니다. 다만 어떤 용도로 쓸지에 따라 달라지긴 해요.

    미니PC 홈서버의 장점

    • 전력 소비가 낮습니다 — 일반 데스크톱 대비 훨씬 적은 전력으로 동작합니다. 24시간 365일 켜두는 홈서버 특성상 이 차이가 연간 전기요금에서 크게 체감됩니다.
    • 소음이 적습니다 — 거실이나 서재에 놔도 크게 신경 쓰이지 않는 수준이에요.
    • 공간을 차지하지 않습니다 — 책상 한 구석, 공유기 옆에 얌전히 자리 잡습니다.
    • 발열이 낮습니다 — 여름에 서버실처럼 방이 더워지는 걱정을 덜 수 있어요.
    • 구입 비용이 상대적으로 낮습니다 — 동급 성능의 일반 데스크톱 대비 저렴한 경우가 많습니다.

    미니PC 홈서버의 단점

    • 확장성이 제한됩니다 — PCIe 슬롯이 없거나 제한적이라 GPU 추가, HBA 카드 장착 등이 어렵습니다.
    • 스토리지 베이가 적습니다 — 내장 드라이브 슬롯이 2개 이하인 경우가 많아 대용량 NAS 구성이 어렵습니다.
    • ECC 메모리 지원이 없는 경우가 많습니다 — 중요한 데이터를 다루는 서버라면 이 부분이 아쉬울 수 있어요.

    홈서버 구축 전 — 용도부터 정하세요

    여기서 중요한 포인트! 미니PC 홈서버를 시작하기 전에 “이걸로 뭘 할 건지”를 먼저 정해야 합니다. 저도 처음엔 그냥 “뭔가 돌려봐야지” 하다가 나중에 용도가 바뀌면서 장비를 두 번 교체한 적이 있거든요.

    용도 필요 사양 추천 구성
    파일 서버 / NAS 낮은 CPU, 충분한 RAM, 스토리지 베이 저전력 CPU + 외장 USB 스토리지 또는 NAS 연동
    미디어 서버 (Plex, Jellyfin 등) 트랜스코딩 지원 CPU 또는 iGPU Intel Quick Sync 지원 CPU 탑재 미니PC
    홈 자동화 (Home Assistant 등) 낮은 사양으로도 충분 저전력 x86 미니PC 또는 ARM 보드
    컨테이너/가상화 서버 멀티코어 CPU, 16GB+ RAM Intel N100 이상 CPU, 16~32GB RAM 구성
    VPN 서버 / 라우터 낮은 CPU, 다중 NIC(네트워크 카드) 2.5GbE 듀얼 포트 지원 미니PC

    미니PC 선택 기준 — 이 5가지는 꼭 확인하세요

    시장에 미니PC 제품이 워낙 많아서 처음 보시면 뭘 골라야 할지 막막하실 거예요. 저도 처음엔 그랬거든요. 제가 홈서버용 미니PC를 고를 때 기준으로 삼는 항목들을 공유해드릴게요.

    1. TDP(열설계전력) 확인

    TDP(Thermal Design Power, 열설계전력)는 CPU가 최대 부하 시 발생하는 열량의 기준값으로, 실제 전력 소비와 비례합니다. 홈서버용으로는 TDP 15W 이하 제품을 권장합니다. Intel N-시리즈(구 Celeron/Pentium 계열)나 AMD Ryzen Embedded 계열이 이 범주에 들어옵니다.

    2. RAM 확장 가능 여부

    미니PC 중에는 RAM이 메인보드에 납땜(온보드)되어 있어서 교체가 불가능한 제품도 있습니다. 홈서버 용도라면 반드시 SO-DIMM 슬롯이 있어 메모리 업그레이드가 가능한 제품을 고르세요. 처음엔 8GB면 충분해 보여도 Docker 컨테이너 몇 개 올리다 보면 금방 부족해집니다.

    3. 스토리지 인터페이스

    M.2 NVMe 슬롯이 있는지, SATA 2.5인치 베이가 있는지 확인하세요. 가능하면 M.2 슬롯 2개 이상이거나 M.2 + 2.5인치 조합을 지원하는 제품이 활용도가 높습니다.

    4. 네트워크 포트

    기가비트 이더넷(1GbE)은 기본이고, 요즘은 2.5GbE를 지원하는 미니PC도 많아졌습니다. 홈서버에서 대용량 파일 전송이나 미디어 스트리밍을 많이 한다면 2.5GbE 이상을 추천합니다.

    5. 베어본 vs 완제품

    베어본(Barebone)은 RAM과 스토리지 없이 본체만 파는 형태이고, 완제품은 RAM과 SSD가 포함된 형태입니다. 직접 조립하는 걸 즐기신다면 베어본이 비용 효율적이고, 번거로움 없이 바로 시작하고 싶다면 완제품이 낫습니다.

    ▲ 일반적인 홈서버용 미니PC 내부 구조 — M.2 슬롯, SO-DIMM 메모리, 2.5인치 SATA 베이 위치를 확인할 수 있습니다.

    OS 선택 — 뭘 깔아야 할까요?

    하드웨어를 골랐다면 이제 OS 선택입니다. 홈서버 구축 목적에 따라 OS 선택이 달라지는데요, 제가 주로 쓰는 조합을 소개해드릴게요.

    Ubuntu Server (우분투 서버)

    범용성이 가장 높습니다. Docker, Kubernetes, 각종 서비스 설치 관련 자료가 가장 많아서 처음 홈서버를 구축하시는 분들께 추천합니다. LTS(Long Term Support, 장기 지원) 버전을 사용하면 안정성도 좋아요.

    Proxmox VE (프록스목스 VE)

    가상화(Virtualization)에 특화된 오픈소스 플랫폼입니다. KVM 기반 가상머신과 LXC 컨테이너를 웹 UI로 편하게 관리할 수 있어서 홈랩 환경에서 정말 많이 써요. 저도 현재 홈랩 메인 서버에 Proxmox를 쓰고 있거든요. 무료로 쓸 수 있고 UI가 직관적이라 강력 추천합니다.

    TrueNAS SCALE (트루나스 스케일)

    NAS(Network Attached Storage, 네트워크 결합 스토리지) 전용 OS입니다. ZFS 파일시스템을 기반으로 데이터 무결성이 뛰어나고, 웹 UI에서 대부분의 설정을 처리할 수 있어요. 파일 서버 용도가 메인이라면 이걸 추천합니다.

    Debian (데비안)

    우분투의 베이스가 되는 OS입니다. 우분투보다 더 가볍고 안정적인 편이라 서버 용도에 적합해요. 다만 자료가 우분투보다 약간 적은 편이긴 합니다.

    실전 구현 — Ubuntu Server + Docker로 홈서버 세팅하기

    이제 진짜 실전입니다. 제가 가장 많이 추천하는 조합인 Ubuntu Server + Docker 기반 홈서버 구축 과정을 단계별로 알려드릴게요.

    1단계: Ubuntu Server 설치 후 기본 설정

    Ubuntu Server를 설치하고 나면 가장 먼저 시스템을 최신 상태로 업데이트합니다.

    # 패키지 목록 업데이트 및 업그레이드
    sudo apt update && sudo apt upgrade -y
    
    # 자주 쓰는 유틸리티 설치
    sudo apt install -y curl wget git htop net-tools unzip

    2단계: 정적 IP 설정

    홈서버는 IP가 바뀌면 곤란하거든요. Netplan(넷플랜)을 사용해서 정적 IP를 설정합니다. 아래는 예시 설정이니 본인 환경에 맞게 IP 주소와 게이트웨이를 수정하세요.

    # /etc/netplan/00-installer-config.yaml
    network:
      version: 2
      ethernets:
        eth0:  # 본인의 네트워크 인터페이스 이름 확인 필요 (ip link 명령어로 확인)
          dhcp4: false
          addresses:
            - 192.168.1.100/24  # 원하는 정적 IP
          routes:
            - to: default
              via: 192.168.1.1  # 게이트웨이 IP
          nameservers:
            addresses:
              - 8.8.8.8
              - 1.1.1.1
    # 설정 적용
    sudo netplan apply

    3단계: Docker 설치

    Docker(도커)는 컨테이너 기반 가상화 도구입니다. 쉽게 말해 각각의 서비스를 독립된 환경에서 실행할 수 있게 해주는 도구예요. 공식 스크립트로 설치하는 게 가장 간편합니다.

    # Docker 공식 설치 스크립트 실행
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    
    # 현재 사용자를 docker 그룹에 추가 (sudo 없이 docker 명령어 사용 가능)
    sudo usermod -aG docker $USER
    
    # 변경사항 적용을 위해 재로그인 또는 아래 명령어 실행
    newgrp docker
    
    # 설치 확인
    docker --version
    docker run hello-world

    4단계: Docker Compose로 서비스 올리기

    Docker Compose(도커 컴포즈)는 여러 컨테이너를 YAML 파일 하나로 정의하고 관리할 수 있게 해주는 도구입니다. 홈서버에서 자주 쓰이는 서비스들을 예시로 보여드릴게요.

    # docker-compose.yml 예시
    version: '3.8'
    
    services:
      # Portainer — 도커 컨테이너 웹 UI 관리 도구
      portainer:
        image: portainer/portainer-ce:latest
        container_name: portainer
        restart: unless-stopped
        ports:
          - "9000:9000"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - portainer_data:/data
    
      # Nginx Proxy Manager — 리버스 프록시 및 SSL 관리
      nginx-proxy-manager:
        image: jc21/nginx-proxy-manager:latest
        container_name: nginx-proxy-manager
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
          - "81:81"  # 관리자 UI
        volumes:
          - npm_data:/data
          - npm_letsencrypt:/etc/letsencrypt
    
      # Uptime Kuma — 서비스 가동 상태 모니터링
      uptime-kuma:
        image: louislam/uptime-kuma:latest
        container_name: uptime-kuma
        restart: unless-stopped
        ports:
          - "3001:3001"
        volumes:
          - uptime_kuma_data:/app/data
    
    volumes:
      portainer_data:
      npm_data:
      npm_letsencrypt:
      uptime_kuma_data:
    # 서비스 시작
    docker compose up -d
    
    # 실행 중인 컨테이너 확인
    docker ps
    
    # 로그 확인
    docker compose logs -f

    5단계: 자동 업데이트 설정 (Watchtower)

    Watchtower(워치타워)는 실행 중인 Docker 컨테이너의 이미지를 자동으로 업데이트해주는 도구입니다. 홈서버는 관리에 많은 시간을 쏟기 어렵기 때문에 이런 자동화 도구를 활용하면 편해요.

    # Watchtower 실행 — 매일 새벽 4시에 업데이트 확인
    docker run -d \
      --name watchtower \
      --restart unless-stopped \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower \
      --schedule "0 0 4 * * *" \
      --cleanup

    ⚠️ 삽질 경험 공유 — 이건 꼭 미리 알아두세요

    이 섹션은 제가 직접 겪었던 문제들입니다. 미리 알아두시면 같은 실수를 반복하지 않을 수 있어요.

    문제 1: 정전 후 서버가 자동으로 안 켜지는 문제

    홈서버는 24시간 운영이 목표인데 정전 후 자동으로 켜지지 않으면 원격에서 손쓸 방법이 없습니다. BIOS/UEFI 설정에서 “AC Power Recovery” 또는 “Restore on AC Power Loss” 옵션을 찾아서 “Power On”으로 설정하세요. 이 설정을 빠뜨리는 분들이 생각보다 많아요.

    문제 2: SSH 접속이 갑자기 끊기는 문제

    장시간 SSH 세션을 유지할 때 자동으로 끊기는 경우가 있습니다. 서버 측과 클라이언트 측 모두 설정이 필요합니다.

    # 서버 측 SSH 설정 수정
    sudo nano /etc/ssh/sshd_config
    
    # 아래 줄 추가 또는 수정
    # ClientAliveInterval 60
    # ClientAliveCountMax 3
    
    # SSH 서비스 재시작
    sudo systemctl restart sshd

    문제 3: 디스크 공간 부족 경고

    Docker를 쓰다 보면 사용하지 않는 이미지, 컨테이너, 볼륨이 쌓여서 디스크를 잡아먹습니다. 주기적으로 정리해주세요.

    # 사용하지 않는 Docker 리소스 정리
    docker system prune -a --volumes
    
    # 디스크 사용량 확인
    df -h
    docker system df

    문제 4: 외부 접속 시 보안 설정 미흡

    홈서버를 외부에서 접근 가능하게 열어두면 보안이 중요해집니다. 최소한 아래 사항은 꼭 챙기세요.

    • SSH 포트 변경 — 기본 22번 포트는 자동화된 공격 대상이 됩니다
    • SSH 키 인증 사용 — 비밀번호 인증 대신 공개키 인증을 사용하세요
    • 방화벽 설정 — UFW(Uncomplicated Firewall)로 필요한 포트만 열어두세요
    • Fail2ban 설치 — 반복적인 로그인 시도를 자동으로 차단해줍니다
    # UFW 방화벽 설정
    sudo apt install -y ufw
    
    # 기본 정책 설정
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    # SSH 허용 (포트를 변경했다면 해당 포트 번호 입력)
    sudo ufw allow 22/tcp
    
    # 웹 서비스 포트 허용
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    
    # 방화벽 활성화
    sudo ufw enable
    sudo ufw status

    ▲ Uptime Kuma와 Portainer를 활용한 홈서버 모니터링 대시보드 예시 — 서비스 가동 상태와 컨테이너 현황을 한눈에 확인할 수 있습니다.

    ✅ 검증 — 제대로 돌아가고 있는지 확인하기

    설정을 다 마쳤다면 제대로 동작하는지 확인해봐야죠. 드디어 됐다! 싶은 순간이 여기서 옵니다 🎉

    서비스 상태 확인

    # 실행 중인 컨테이너 전체 목록
    docker ps
    
    # 시스템 리소스 사용량 모니터링
    htop
    
    # 네트워크 포트 열림 확인
    ss -tlnp
    
    # 서비스 자동 시작 확인
    sudo systemctl is-enabled docker

    웹 UI 접속 확인

    • Portainer: http://서버IP:9000 접속 후 초기 관리자 계정 설정
    • Nginx Proxy Manager: http://서버IP:81 접속 (초기 계정: [email protected] / changeme)
    • Uptime Kuma: http://서버IP:3001 접속 후 모니터링할 서비스 추가

    💡 팁: 원격 접속 환경 구성

    외부에서 홈서버에 안전하게 접근하고 싶다면 VPN을 구성하는 게 좋습니다. WireGuard(와이어가드)나 Tailscale(테일스케일)을 추천합니다. Tailscale은 특히 설정이 정말 간단해서 처음 시작하시는 분들께 좋아요. 이 부분은 별도 글에서 자세히 다룰 예정이니 참고하세요.

    홈서버 구축 요약 — 이것만 기억하세요

    ▲ 미니PC 홈서버 구축 단계별 요약 — 하드웨어 선택부터 서비스 운영까지의 전체 흐름을 한눈에 정리했습니다.

    자주 묻는 질문 (FAQ)

    Q. 미니PC 홈서버, 얼마나 안정적인가요?

    저는 미니PC 기반 홈서버를 수년째 운영 중인데, 하드웨어 고장보다 설정 실수로 인한 다운이 훨씬 많았습니다. 안정적인 리눅스 배포판과 UPS(무정전전원장치)를 함께 쓰면 충분히 안정적으로 운영할 수 있어요.

    Q. RAM은 얼마나 있어야 하나요?

    파일 서버나 홈 자동화만 할 거라면 8GB로도 충분합니다. Docker로 여러 서비스를 돌린다면 16GB를 권장하고, 가상머신까지 올린다면 32GB 이상이 편해요.

    Q. SSD와 HDD 중 뭘 써야 하나요?

    OS와 Docker 데이터는 반드시 SSD(NVMe 권장)에 설치하고, 대용량 파일 저장은 외장 HDD나 NAS를 별도로 연결하는 구성을 추천합니다. SSD에 모든 걸 저장하면 비용이 많이 들고, HDD에 OS를 설치하면 속도가 너무 느려요.

    Q. 처음 홈서버를 시작한다면 어떤 서비스부터 올리면 좋을까요?

    Portainer로 Docker 관리 UI를 먼저 구성하고, Uptime Kuma로 모니터링을 설정한 다음, 본인이 가장 필요한 서비스(파일 서버라면 Nextcloud, 미디어 서버라면 Jellyfin 등)를 추가하는 순서를 권장합니다.

    마무리 — 홈서버는 꾸준히 배우는 과정입니다

    홈서버 구축, 처음엔 막막해 보이지만 막상 시작하면 생각보다 빠르게 동작하는 걸 볼 수 있어요. 저도 처음 홈서버를 구성할 때 며칠 밤을 새웠던 기억이 나는데, 지금은 새로운 서비스를 올리는 게 취미 수준이 됐거든요.

    미니PC 기반 저전력 홈서버는 홈서버를 처음 시작하거나, 전기요금 걱정 없이 24시간 운영하고 싶은 분들에게 정말 좋은 선택입니다. 완벽한 장비가 없어도 괜찮아요. 지금 있는 장비로 시작하고, 부족한 부분은 운영하면서 채워나가면 됩니다.

    다음 글에서는 Proxmox VE를 활용한 홈랩 가상화 환경 구성을 다룰 예정입니다. 미니PC 한 대로 여러 개의 가상머신을 돌리는 방법, 궁금하시죠? 이전 글에서 네트워크 기초 설정을 다뤘으니 함께 보시면 더 도움이 될 거예요.

    혹시 홈서버 구축하면서 막히는 부분이 있으시면 댓글로 남겨주세요. 제가 아는 범위 내에서 최대한 도움을 드리겠습니다. 🎉

  • [HomeLabs] 홈서버 구축을 위한 미니PC vs NAS 비교: 용도별 최적 선택 가이드

    [HomeLabs] 홈서버 구축을 위한 미니PC vs NAS 비교: 용도별 최적 선택 가이드

    안녕하세요! 13년차 인프라 엔지니어 서버실입니다. 오늘은 홈서버를 고민하면서 한 번쯤 마주하는 딜레마, 바로 미니PC와 NAS 중 무엇을 선택해야 할까?에 대해 얘기해보려고 합니다. 저도 처음 홈랩을 꾸릴 때 이 문제로 좀 삽질했거든요. 단순 데이터 저장으로 시작했다가 나중엔 Plex 미디어 서버, Docker 컨테이너 여러 개를 돌리고 싶어지면서 ‘아, 그때 왜 이걸 몰랐을까?’ 후회한 적도 많습니다. 여러분도 저처럼 시행착오를 겪지 않도록, 제 경험을 바탕으로 용도별 최적의 선택 가이드를 알려드릴게요.

    홈서버 구축, 미니PC와 NAS 사이에서 고민하고 계신가요? 이 그림처럼 다양한 서비스들을 돌리고 싶을 때, 어떤 장치가 여러분에게 더 적합할지 함께 알아보시죠.

    자, 그럼 먼저 미니PC와 NAS가 정확히 무엇인지부터 알아볼까요?

    • 미니PC (Mini PC): 말 그대로 ‘작은 PC’입니다. 일반 데스크톱 PC의 기능을 그대로 담고 있지만, 크기만 작아진 형태죠. CPU, RAM, 저장 공간(SSD/HDD), 운영체제(Windows, Linux 등)를 자유롭게 설치할 수 있어서 활용도가 정말 높습니다. 쉽게 말해, 손바닥만 한 컴퓨터라고 생각하시면 됩니다. 제가 쓰는 인텔 NUC 같은 모델들이 대표적이죠.
    • NAS (Network Attached Storage, 네트워크 결합 스토리지): 이름에서 알 수 있듯이, ‘네트워크에 연결된 저장 장치’입니다. 기본적인 목적은 데이터를 저장하고 공유하는 거죠. 시놀로지(Synology)나 큐냅(QNAP) 같은 전문 제조사 제품들이 시장을 주도하고 있습니다. NAS는 보통 자체적인 운영체제(OS)를 가지고 있고, 파일 공유, 백업, 미디어 스트리밍 같은 특정 기능에 최적화되어 있습니다. 마치 데이터 저장에 특화된 전용 서버라고 보시면 됩니다.

    NAS와 미니PC, 어떤 걸 선택해야 할까?

    본격적으로 어떤 장치를 선택해야 할지 고민해보겠습니다. 결국 ‘무엇을 할 것인가?’에 따라 답이 달라지는데요, 제가 겪어본 경험을 바탕으로 용도별 장단점을 비교해드릴게요.

    💡 용도별 미니PC vs NAS 선택 가이드

    1. 단순 파일 저장 및 공유 (사진, 동영상 백업 등)
      • NAS가 유리합니다. 정말 편하고 안정적이거든요. 시놀로지 DS220+ 같은 모델들은 초기 설정도 간단하고, 모바일 앱 지원도 잘 되어 있어서 가족들과 사진 공유하기 정말 편합니다. 저도 처음엔 일반 PC에 하드를 연결해서 썼었는데, NAS만큼 편리한 건 없더라고요.
      • 미니PC: 물론 미니PC에도 스토리지를 달아서 파일 서버를 구축할 수 있습니다. FreeNAS(TrueNAS CORE)나 OpenMediaVault 같은 OS를 올리면 되지만, 초기 설정과 관리가 NAS 전용 제품보다 복잡한 편입니다. ‘삽질’을 즐기신다면야 도전해볼 만하죠!
    2. 미디어 서버 (Plex, Jellyfin 등)
      • 사용자 수와 트랜스코딩 요구사항에 따라 달라집니다.
        • 가족 단위 (1~2명) 및 간단한 트랜스코딩: 최신 NAS 모델들도 CPU 성능이 좋아져서 Plex나 Jellyfin을 돌리기에 충분합니다. 특히 하드웨어 트랜스코딩을 지원하는 모델(예: 인텔 셀러론 J4000 시리즈 이상 CPU 탑재 NAS)은 꽤 괜찮은 성능을 보여줍니다.
        • 다수 사용자, 4K 트랜스코딩, 복잡한 라이브러리: 미니PC가 훨씬 유리합니다. NAS의 CPU로는 버거운 경우가 많습니다. 제가 NUC에 Ubuntu 깔고 Plex Docker 컨테이너로 돌려보니, 여러 명이 동시에 4K 스트리밍을 해도 문제없더라고요. 특히 GPU가 있는 미니PC(예: AMD 라이젠 내장 그래픽)는 트랜스코딩에서 정말 강력한 성능을 발휘합니다.
      • ⚠️ 팁: Plex는 하드웨어 트랜스코딩 기능을 유료 구독(Plex Pass)해야 온전히 사용할 수 있습니다. 이 점도 고려하세요!
    3. Docker 컨테이너, 가상 머신(VM) 등 다양한 서비스 운영
      • 미니PC가 압도적으로 유리합니다. 자유로운 운영체제 선택(Ubuntu Server, Proxmox VE 등), 더 강력한 CPU/RAM 확장성 덕분에 Docker Swarm, Kubernetes 클러스터, 여러 개의 가상 머신을 띄우는 등 인프라 실험에 최적입니다. 저도 홈랩에서 쿠버네티스 클러스터를 미니PC 3대로 구성해서 돌리고 있거든요. 이 정도 자유도는 NAS에서는 기대하기 어렵습니다.
      • NAS: 일부 고급 NAS 모델(예: 시놀로지 플러스(+) 시리즈)에서도 Docker나 가상 머신 기능을 제공하지만, 리소스가 제한적이고 기능 확장성이 미니PC에 비해 떨어집니다. ‘맛보기’ 정도는 가능하지만, 본격적인 개발 환경이나 실험용으로는 부족하죠.
    4. 저전력 운영 및 24/7 (상시) 구동
      • NAS가 대체로 유리합니다. NAS는 애초에 저전력으로 설계된 경우가 많아 24시간 켜두어도 전기 요금 부담이 적습니다. HDD 절전 기능 등 전력 관리 기능도 잘 되어 있죠.
      • 미니PC: 최근 미니PC들도 저전력 CPU를 많이 사용해서 NAS 못지않게 전력 효율이 좋습니다. 특히 인텔 N 시리즈(N100, N305 등)나 AMD 젠(Zen) 아키텍처 기반의 APU를 탑재한 미니PC들은 꽤나 착한 전력 소비를 보여줍니다. 다만 고성능 CPU를 탑재한 모델은 NAS보다 전력을 더 많이 소비할 수 있습니다.

    미니PC와 NAS는 이렇게 내부 구조부터 차이가 있습니다. 미니PC는 PC의 유연성을, NAS는 스토리지 전문성을 갖췄다고 볼 수 있죠.

    비교표: 한눈에 보는 미니PC vs NAS

    제가 실제 사용하며 느꼈던 점들을 바탕으로 핵심적인 특징들을 표로 정리해봤습니다.

    항목 미니PC (Mini PC) NAS (Network Attached Storage)
    주요 목적 다목적 컴퓨팅, 다양한 서비스 호스팅 데이터 저장, 공유, 백업
    운영체제 Windows, Linux (Ubuntu, Debian), Proxmox VE 등 자유롭게 선택 제조사 고유 OS (DSM by Synology, QTS by QNAP 등)
    성능/확장성 CPU, RAM, GPU 등 업그레이드 및 확장이 용이 (모델에 따라 다름) 제한적 (RAM 업그레이드 정도, CPU 고정)
    초기 설정/편의성 OS 설치 및 서비스 설정에 기술 지식 필요, ‘삽질’ 가능성 높음 GUI 기반으로 쉬운 설정, 모바일 앱 지원, 사용자 친화적
    전력 소비 모델에 따라 다양 (고성능은 높음, 저전력 CPU는 낮음) 대체로 낮음, 전력 관리 기능 우수
    가격 가성비 좋은 모델부터 고성능 모델까지 다양, SSD/HDD 별도 구매 초기 구매 비용이 미니PC보다 높을 수 있음, HDD 별도 구매
    추천 용도 개발/실험용 서버, 다수의 서비스, 미디어 서버(고화질 트랜스코딩), VM/컨테이너 호스팅 가족용 파일 서버, 사진/동영상 백업, 간단한 미디어 스트리밍, 상시 구동

    저의 홈랩 서버 대시보드입니다. 미니PC로 구축하면 이렇게 다양한 서비스들을 한눈에 관리하고 리소스를 모니터링할 수 있죠.

    ⚠️ 실제 겪은 문제와 해결법 (트러블슈팅)

    제가 홈랩을 운영하면서 겪었던 몇 가지 문제점과 그 해결책을 공유해드릴게요.

    • 문제 1: NAS의 제한된 자유도: 처음엔 시놀로지 NAS로 시작했는데, Docker Compose로 복잡한 서비스를 띄우려니 제한적인 기능과 리소스 때문에 답답하더라고요. 결국 커뮤니티에서 비공식 패키지를 설치하거나, SSH로 들어가서 직접 설정하는 ‘꼼수’를 써야 했습니다.
      • 해결책: 결국 메인 서비스는 미니PC로 옮기고, NAS는 순수하게 ‘데이터 저장소’ 역할만 하도록 분리했습니다. 각자의 역할에 충실하게 쓰는 게 정신 건강에도 좋더라고요.
    • 문제 2: 미니PC의 초기 설정 난이도: NAS는 전원 켜고 웹 GUI만 들어가면 되는데, 미니PC는 OS 설치부터 네트워크 설정, 서비스 배포까지 전부 수동으로 해야 합니다. 처음엔 ‘이게 뭔가 싶었는데’ 터미널 명령어와 씨름하느라 밤을 새기도 했습니다.
      • 해결책: Proxmox VE 같은 하이퍼바이저를 설치해서 가상 머신(VM) 위에서 다양한 OS를 테스트하는 방식으로 접근했습니다. 한 번 설치해두면 여러 환경을 쉽게 만들고 지울 수 있어서 정말 효율적이더라고요. 그리고 Ansible 같은 자동화 도구를 활용해서 반복 작업을 줄였습니다.
        # Proxmox VE 설치 후 가상 머신 생성 예시 (간단화)
        pveam update
        pveam available --section system
        qm create 100 --name "ubuntu-server" --memory 2048 --net0 virtio,bridge=vmbr0
        qm importdisk 100 /var/lib/vz/template/iso/ubuntu-22.04.3-live-server-amd64.iso local-lvm
        # ... 이후 OS 설치 및 설정
    • 문제 3: 전력 소비량: ‘저전력 미니PC’라고 해서 샀는데, 막상 24시간 돌리니 생각보다 전기 요금이 많이 나오는 경우가 있었습니다. 특히 CPU 사용량이 많아지면 전력 소비도 훅 뛰더라고요.
      • 해결책: 주기적으로 전력 측정기(Kill-A-Watt 같은)로 실제 소비량을 측정하고, BIOS 설정에서 EIST, C-States 같은 전력 관리 옵션을 최적화했습니다. 불필요한 서비스는 꺼두고, 필요한 서비스만 Docker 컨테이너로 가볍게 돌려서 리소스 효율을 높였습니다.

    마무리: 배운 점 정리 + 다음 단계 제안

    자, 오늘은 홈서버 구축을 위한 미니PC와 NAS 비교에 대해 깊이 있게 다뤄봤습니다. 제 13년차 인프라 엔지니어 경험을 비춰보면, 결국 정답은 ‘하나만 선택’하는 것이 아니라 ‘자신의 용도에 맞게 최적의 조합을 찾는 것’입니다.

    • 난이도는 낮게, 데이터 안정성이 최우선이라면? ✅ NAS
    • 다양한 서비스 실험, 개발, 고성능 미디어 서버가 필요하다면? ✅ 미니PC

    어떤 길을 선택하시든, 홈랩 구축은 정말 재미있는 경험이 될 겁니다. 처음엔 어렵고 삽질도 많이 하겠지만, 하나하나 해결해나가면서 쌓이는 지식과 뿌듯함은 그 어떤 것과도 바꿀 수 없죠.

    다음 글에서는 제가 실제로 사용하고 있는 저전력 미니PC를 활용한 Docker 홈랩 구축기에 대해 자세히 다뤄볼 예정이니 기대해주세요! 여러분의 홈서버 라이프를 응원합니다! 🎉

    결국 여러분의 용도에 맞춰 미니PC와 NAS 중 최적의 선택을 하는 것이 중요합니다. 이 둘의 시너지를 활용하면 더 멋진 홈랩을 구축할 수 있을 겁니다!

  • [HomeLabs] 홈랩 네트워크 광고 차단: Pi-hole vs AdGuard Home 비교 및 구축 가이드

    광고 때문에 인터넷 쓰기가 불편하셨던 적 있으신가요?

    솔직히 말씀드리면, 저도 한동안은 브라우저 확장 프로그램 하나로 버텼거든요. uBlock Origin 설치해두고 ‘이 정도면 됐지’ 싶었는데… 어느 날 스마트TV에서 광고가 막 뜨는 거 보고 현타가 왔습니다. 앱마다 확장 프로그램을 설치할 수도 없고, IoT 기기들은 어떻게 할 방법이 없더라고요.

    그때부터 네트워크 레벨 광고 차단(Network-level Ad Blocking)을 본격적으로 알아보기 시작했습니다. DNS 필터링 방식이라서 공유기에 연결된 모든 기기에 한 번에 적용되거든요. 홈랩을 운영하는 입장에서는 이게 진짜 맞는 방향이었어요.

    그리고 이 분야에서 가장 많이 언급되는 두 가지가 바로 Pi-hole과 AdGuard Home입니다. 둘 다 직접 써봤는데, 생각보다 차이가 꽤 있더라고요. 오늘은 홈랩 광고 차단 솔루션으로 어떤 걸 선택할지 고민하시는 분들을 위해 제 경험을 정리해봤습니다.

    ▲ DNS 필터링 기반 홈랩 광고 차단 구조 — 모든 기기의 DNS 요청이 Pi-hole 또는 AdGuard Home을 거쳐 광고 도메인을 차단합니다.

    DNS 필터링이 뭔지 먼저 짚고 넘어가겠습니다

    쉽게 말해서, 인터넷 주소록(DNS)을 중간에서 가로채는 방식이에요. 브라우저가 ads.example.com의 IP 주소를 물어볼 때, 일반 DNS 서버 대신 Pi-hole이나 AdGuard Home이 먼저 받아서 “그런 주소 없어요”라고 답해버리는 거거든요.

    그러면 광고 서버로 연결 자체가 안 되니까 광고가 뜨질 않죠. 브라우저 확장 프로그램과 다른 점은 네트워크에 연결된 모든 기기에 자동으로 적용된다는 겁니다. 스마트폰, TV, 게임기, 심지어 냉장고까지요.

    • 장점: 기기별 설정 불필요, 앱 내 광고도 일부 차단 가능, 중앙 집중 관리
    • 단점: DNS 우회 광고는 차단 불가, 잘못 설정하면 정상 사이트도 막힘, 서버 운영 필요

    Pi-hole vs AdGuard Home — 뭐가 다른가요?

    처음에 저도 “둘 다 DNS 필터링이면 거기서 거기 아닌가?” 싶었는데, 실제로 써보니 철학 자체가 좀 달랐습니다.

    항목 Pi-hole AdGuard Home
    출시 연도 2014년 2019년
    개발 언어 Bash / PHP Go / React
    설치 방법 쉘 스크립트, Docker 바이너리 실행, Docker
    DNS-over-HTTPS(DoH) 지원 별도 설정 필요 (cloudflared 등) 기본 내장
    DNS-over-TLS(DoT) 지원 별도 설정 필요 기본 내장
    DHCP 서버 기능 지원 지원
    클라이언트별 필터링 그룹 기반 (v5.0+) 클라이언트별 세밀 설정
    UI 직관성 익숙해지면 편함 처음부터 쓰기 편함
    커뮤니티 크기 매우 큼 빠르게 성장 중
    라이선스 EUPL (오픈소스) GPL-3.0 (오픈소스)

    제가 느낀 핵심 차이를 한 줄로 정리하면 이렇습니다. Pi-hole은 역사가 길고 커뮤니티가 탄탄하며, AdGuard Home은 최신 기능을 기본 제공하면서 설정이 더 직관적이에요.

    Pi-hole 구축 가이드 (Docker 기준)

    저는 홈랩 서버에서 Docker로 돌리는 방식을 씁니다. Raspberry Pi에 직접 설치하는 방법도 있지만, 관리 편의성을 생각하면 Docker가 훨씬 낫더라고요.

    1단계: docker-compose.yml 작성

    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'
          WEBPASSWORD: 'your_secure_password'  # 반드시 변경하세요!
        volumes:
          - './etc-pihole:/etc/pihole'
          - './etc-dnsmasq.d:/etc/dnsmasq.d'
        restart: unless-stopped
        cap_add:
          - NET_ADMIN
    

    2단계: 실행

    # 컨테이너 시작
    docker compose up -d
    
    # 로그 확인
    docker logs pihole
    
    # 정상 실행 여부 확인
    docker ps | grep pihole
    

    3단계: 공유기 DNS 설정 변경

    여기가 핵심이에요. 공유기 관리 페이지(보통 192.168.0.1 또는 192.168.1.1)에 접속해서 DNS 서버 주소를 Pi-hole이 실행 중인 서버의 IP로 변경해주면 됩니다. 이렇게 하면 공유기에 연결된 모든 기기가 Pi-hole을 DNS로 사용하게 돼요.

    # DNS 설정이 제대로 됐는지 테스트
    nslookup google.com 192.168.x.x  # Pi-hole 서버 IP 입력
    
    # 광고 도메인 차단 확인
    nslookup doubleclick.net 192.168.x.x
    # 0.0.0.0 또는 NXDOMAIN이 나오면 정상
    

    4단계: 블록리스트 추가

    기본 블록리스트도 나쁘지 않지만, 추가해주면 더 좋습니다. Pi-hole 웹 UI에서 Adlists 메뉴로 가서 아래 리스트들을 추가해보세요.

    • https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts — 종합 광고/악성 도메인 차단
    • https://adaway.org/hosts.txt — 모바일 광고 특화
    • https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt — 광고 서버 특화

    추가 후 Tools → Update Gravity를 실행하면 적용됩니다.

    AdGuard Home 구축 가이드 (Docker 기준)

    AdGuard Home은 솔직히 Pi-hole보다 초기 설정이 더 쉬웠어요. DoH/DoT 같은 기능을 별도 설정 없이 바로 쓸 수 있다는 게 특히 마음에 들었습니다.

    1단계: docker-compose.yml 작성

    version: "3"
    
    services:
      adguardhome:
        container_name: adguardhome
        image: adguard/adguardhome:latest
        ports:
          - "53:53/tcp"
          - "53:53/udp"
          - "3000:3000/tcp"  # 초기 설정 웹 UI
          - "80:80/tcp"      # 설정 완료 후 웹 UI
          - "443:443/tcp"    # HTTPS (선택)
        volumes:
          - './adguard/work:/opt/adguardhome/work'
          - './adguard/conf:/opt/adguardhome/conf'
        restart: unless-stopped
    

    2단계: 초기 설정 마법사 실행

    # 컨테이너 시작
    docker compose up -d
    
    # 브라우저에서 초기 설정 접속
    # http://서버IP:3000 으로 접속
    # 마법사 따라가면 5분 안에 완료됩니다
    

    3단계: DNS-over-HTTPS 업스트림 설정

    AdGuard Home의 진짜 강점이 여기서 나옵니다. Settings → DNS Settings → Upstream DNS servers에서 아래처럼 입력하면 돼요.

    # Cloudflare DoH
    https://cloudflare-dns.com/dns-query
    
    # Google DoH
    https://dns.google/dns-query
    
    # Quad9 DoH (악성 도메인 차단 포함)
    https://dns.quad9.net/dns-query
    

    이렇게 하면 Pi-hole처럼 별도로 cloudflared 같은 걸 설치할 필요가 없어요. 처음 설정할 때 이 부분에서 “오, 이게 되네?” 싶었습니다 ㅎㅎ

    ▲ AdGuard Home 웹 UI — DNS-over-HTTPS 업스트림 설정과 필터링 규칙을 직관적인 인터페이스에서 관리할 수 있습니다.

    4단계: 필터링 목록 추가

    Filters → DNS blocklists → Add blocklist에서 추가합니다. AdGuard Home은 기본으로 AdGuard DNS filter가 포함되어 있어서 별도 추가 없이도 바로 쓸 수 있어요.

    • AdGuard DNS filter (기본 포함)
    • EasyList (광고 특화)
    • EasyPrivacy (추적 특화)
    • Malware Domain List (악성 도메인)

    ⚠️ 삽질 경험 — 이것만 조심하세요

    실제로 구축하면서 제가 겪은 문제들입니다. 미리 알면 시간 많이 아낄 수 있어요.

    포트 53 충돌 문제 (Ubuntu 기준)

    Ubuntu 18.04 이상에서는 systemd-resolved가 이미 53번 포트를 쓰고 있어서 컨테이너가 뜨질 않더라고요. 처음에 이 오류 보고 한참 헤맸습니다.

    # 현재 53 포트 사용 확인
    sudo lsof -i :53
    
    # systemd-resolved의 stub listener 비활성화
    sudo nano /etc/systemd/resolved.conf
    # DNSStubListener=no 로 변경
    
    # 재시작
    sudo systemctl restart systemd-resolved
    
    # /etc/resolv.conf 심볼릭 링크 재설정
    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
    

    정상 사이트가 막히는 경우

    가끔 은행 사이트나 업무 사이트가 갑자기 안 열리는 경우가 있는데, 대부분 블록리스트가 너무 공격적으로 잡아버리는 경우예요. Pi-hole이든 AdGuard Home이든 Whitelist(허용 목록)에 해당 도메인을 추가해주면 해결됩니다.

    # Pi-hole CLI로 화이트리스트 추가
    pihole -w example.com
    
    # 또는 웹 UI에서 Whitelist 메뉴 활용
    

    DNS 캐시 문제

    설정을 바꿨는데 적용이 안 되는 것 같을 때는 클라이언트 기기의 DNS 캐시를 지워줘야 해요.

    # Windows
    ipconfig /flushdns
    
    # macOS
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
    
    # Linux
    sudo systemd-resolve --flush-caches
    

    구축 결과 확인 — 이렇게 달라졌어요

    설정 완료 후 며칠 사용해보면 대시보드에서 통계가 쌓이기 시작합니다. 저는 처음에 결과 보고 좀 놀랐거든요. 전체 DNS 요청 중 광고/추적 도메인이 차지하는 비율이 생각보다 훨씬 높았어요.

    ▲ DNS 필터링 대시보드 통계 — 전체 쿼리 중 차단된 비율과 주요 차단 도메인을 실시간으로 확인할 수 있습니다.

    확인 방법은 간단합니다. 아래 사이트에 접속해보세요.

    # 광고 차단 테스트 사이트
    # https://d3ward.github.io/toolz/adblock.html
    # 위 사이트에서 차단율을 확인할 수 있습니다
    
    # DNS 응답 직접 확인
    nslookup pagead2.googlesyndication.com
    # 0.0.0.0 또는 NXDOMAIN이 나오면 정상 차단 중
    

    🎉 정상적으로 동작한다면 유튜브 이외의 대부분 사이트에서 광고가 사라진 걸 느끼실 수 있어요. (유튜브 광고는 같은 도메인을 쓰기 때문에 DNS 필터링으로는 차단이 어렵습니다. 이 부분은 솔직하게 말씀드리는 게 맞는 것 같아요.)

    어떤 걸 선택해야 할까요? — 제 추천

    결론부터 말씀드리면, 처음 시작하시는 분께는 AdGuard Home을 추천드립니다. 이유는 단순해요.

    • ✅ 초기 설정 마법사가 있어서 진입 장벽이 낮음
    • ✅ DoH/DoT를 별도 설정 없이 바로 사용 가능
    • ✅ 클라이언트별 필터링 설정이 직관적
    • ✅ 단일 바이너리라 관리가 단순함

    반면 Pi-hole이 더 나은 경우도 있습니다.

    • ✅ 커뮤니티가 워낙 크다 보니 문제 발생 시 레퍼런스가 훨씬 많음
    • ✅ Gravity 데이터베이스 방식이 대용량 블록리스트 처리에 효율적
    • ✅ 오래된 Raspberry Pi에서도 가볍게 돌아감
    • ✅ 이미 Pi-hole 사용 경험이 있다면 굳이 바꿀 필요 없음

    💡 팁: 두 개를 동시에 운영하면서 하나를 백업 DNS로 쓰는 방법도 있어요. 공유기 설정에서 1차 DNS는 AdGuard Home, 2차 DNS는 Pi-hole으로 설정하면 한 쪽이 다운되더라도 인터넷이 끊기지 않습니다.

    ▲ Pi-hole vs AdGuard Home 선택 가이드 — 사용 목적과 기술 수준에 따른 추천 기준을 정리했습니다.

    마무리 — 한 번 설정해두면 진짜 편합니다

    처음 구축할 때는 포트 충돌이니 DNS 설정이니 좀 헤매긴 했는데, 한번 돌아가기 시작하면 진짜 신경 쓸 게 없어요. 그냥 알아서 다 막아주거든요.

    제가 홈랩에서 이것저것 실험해보면서 느낀 건데, 네트워크 레벨 광고 차단은 홈랩 입문자가 처음 도전하기에 딱 좋은 프로젝트예요. 결과가 눈에 보이고, 실생활에 바로 도움이 되고, 배우는 것도 많거든요. DNS가 어떻게 동작하는지 자연스럽게 익히게 되는 부수 효과도 있고요.

    다음 단계로는 Unbound를 Recursive DNS Resolver(재귀 DNS 리졸버)로 연결해서 외부 DNS 의존도를 완전히 없애는 방법도 있는데, 이건 다음 글에서 다뤄볼게요. 관심 있으신 분들은 기대해 주세요.

    혹시 구축하다가 막히는 부분 있으시면 댓글로 남겨주세요. 제가 겪은 삽질이 더 있으면 추가로 공유해드리겠습니다 😄

    자주 묻는 질문 (FAQ)

    Q. Raspberry Pi 없이도 구축할 수 있나요?

    네, 가능합니다. 집에 항상 켜져 있는 NAS, 미니 PC, 또는 기존 홈서버가 있다면 Docker로 바로 실행할 수 있어요. 저도 별도의 Raspberry Pi 없이 기존 홈서버에서 운영 중입니다.

    Q. 유튜브 광고도 막을 수 있나요?

    아쉽지만 DNS 필터링만으로는 유튜브 광고 차단이 어렵습니다. 유튜브는 광고와 일반 콘텐츠를 같은 도메인에서 제공하기 때문이에요. 유튜브 광고는 브라우저 확장 프로그램(uBlock Origin 등)과 병행해서 사용하시는 걸 권장합니다.

    Q. DNS 서버가 다운되면 인터넷이 끊기나요?

    공유기에 1차 DNS만 Pi-hole/AdGuard Home으로 설정했다면, 서버가 다운될 경우 인터넷 접속이 안 될 수 있습니다. 2차 DNS로 공개 DNS(예: 1.1.1.1)를 설정해두거나, 앞서 언급한 것처럼 두 솔루션을 이중화하는 방법을 권장합니다.

    Q. Pi-hole과 AdGuard Home을 동시에 설치해도 되나요?

    같은 서버에 동시 설치는 포트 53 충돌 때문에 어렵습니다. 다른 서버(또는 VM/컨테이너)에 각각 설치해서 이중화 구성으로 운영하는 방식을 추천합니다.

  • [HomeLabs] 오픈소스 방화벽/라우터 구축: pfSense vs OPNsense 비교 및 설치 가이드

    [HomeLabs] 오픈소스 방화벽/라우터 구축: pfSense vs OPNsense 비교 및 설치 가이드

    안녕하세요, 13년차 서버실 지킴이입니다. 오늘은 홈 네트워크 보안과 성능을 한 단계 끌어올릴 수 있는 아주 흥미로운 주제, 바로 오픈소스 방화벽/라우터 구축에 대해 이야기해볼게요. 여러분의 집 네트워크, 혹시 아직도 통신사에서 제공하는 공유기에만 의존하고 계신가요?

    사실 저도 처음엔 ISP(Internet Service Provider) 공유기로 충분하다고 생각했었거든요. 하지만 홈랩(Homelab)을 꾸리고, VPN(Virtual Private Network) 서버도 돌리고, IoT(Internet of Things) 기기들을 분리 관리하고 싶어지면서 홈 네트워크에 대한 갈증이 생기더라고요. 기본적인 NAT(Network Address Translation) 기능만으로는 한계가 명확했거든요.

    이런 고민을 하던 중, 우연히 pfSense와 OPNsense라는 오픈소스 방화벽 솔루션을 접하게 됐어요. 처음엔 “이걸 어떻게 설치하고 관리하지?” 막막했지만, 직접 써보니 기업용 방화벽 못지않은 강력한 기능과 유연성에 깜짝 놀랐습니다. 오늘 이 글에서는 저의 삽질 경험을 바탕으로, 이 두 가지 솔루션을 비교하고 홈 네트워크를 구축하는 과정을 자세히 알려드릴게요. 여러분도 저처럼 진정한 네트워크의 주인이 될 수 있습니다! 🎉

    오픈소스 방화벽을 활용한 홈 네트워크 구성도입니다. 기존 공유기 대신 pfSense/OPNsense가 메인 라우터 역할을 하는 모습을 시각적으로 보여줍니다.

    pfSense와 OPNsense: 오픈소스 방화벽이란?

    pfSense와 OPNsense는 모두 FreeBSD 운영체제를 기반으로 하는 오픈소스 방화벽 및 라우터 소프트웨어거든요. 쉽게 말해, 일반적인 PC나 소형 서버에 이 소프트웨어를 설치하면 강력한 기능을 가진 전용 방화벽 장비로 변신하는 겁니다. 복잡한 홈 네트워크 환경을 구축하거나, 보안을 강화하고 싶을 때 아주 유용해요.

    💡 왜 오픈소스 방화벽을 사용할까요?

    • 비용 효율성 (Cost-Effectiveness): 고가의 상용 방화벽 장비 없이, 기존에 사용하지 않던 PC나 저전력 미니 PC를 활용할 수 있습니다.
    • 강력한 기능 (Powerful Features): 기본적인 방화벽, 라우팅 기능은 물론이고 VPN 서버/클라이언트, VLAN(Virtual Local Area Network), Multi-WAN(다중 회선), IDS/IPS(침입 탐지/방지 시스템) 등 기업용 솔루션에서나 볼 수 있던 기능들을 사용할 수 있거든요.
    • 완전한 제어 (Full Control): 홈 네트워크의 트래픽 흐름을 완벽하게 이해하고 제어할 수 있습니다. 예를 들어, 특정 기기의 인터넷 사용 시간을 제한하거나, 특정 서비스의 외부 접속을 차단하는 등 세밀한 설정이 가능해요.

    그럼 이 둘은 어떤 관계일까요? 사실 OPNsense는 pfSense의 포크(Fork) 프로젝트거든요. 2014년에 pfSense 개발 방향에 대한 이견으로 인해 갈라져 나와 독립적으로 개발되고 있죠. 그래서 기본적인 기능은 비슷하지만, UI/UX나 일부 기능 구현 방식에서 차이가 있습니다.

    pfSense vs OPNsense: 어떤 것을 선택할까?

    제가 직접 두 솔루션을 모두 써본 경험을 바탕으로, 여러분의 환경과 성향에 따라 어떤 것이 더 적합할지 비교해볼게요. 사실 정답은 없고, 개인의 취향과 목적에 따라 달라질 수 있어요.

    항목 pfSense OPNsense
    개발 주체 Netgate (상업적 지원) Decisio (오픈소스 커뮤니티 중심)
    UI/UX 전통적이고 기능 중심적. 다소 올드하게 느껴질 수 있으나 익숙하면 빠름. 현대적이고 직관적인 디자인. 메뉴 구성이 깔끔하고 사용하기 편합니다.
    업데이트 주기 안정성을 중시하며 비교적 느린 편입니다. 빠르고 꾸준한 업데이트. 새로운 기능 도입에 적극적이더라고요.
    기능 오랜 역사만큼 검증된 강력한 기능들. Suricata, OpenVPN 등. pfSense의 기능을 대부분 포함하며, LibreSSL, Sensei (유료 플러그인) 등 차별점 존재.
    커뮤니티 오랜 역사를 가진 거대한 커뮤니티. 자료가 풍부해요. 성장하는 커뮤니티. 포럼 활동이 활발하고 문서화가 잘 되어 있습니다.
    성능 안정성과 성능 최적화에 강점이 있습니다. 최신 기술 적용에 적극적이며, 성능 면에서도 꾸준히 발전하고 있어요.
    개인적 의견 안정성을 최우선하거나, 이미 pfSense에 익숙하다면 추천합니다. 깔끔한 UI와 최신 기능을 선호한다면 추천. 저는 OPNsense에 더 손이 가더라고요.

    결론적으로, 저는 OPNsense의 현대적인 UI와 활발한 업데이트 주기가 마음에 들어서 홈 네트워크 구축에 OPNsense를 주로 사용하고 있습니다. 하지만 pfSense도 여전히 강력한 선택지라는 점은 분명합니다!

    실전 구현: OPNsense 설치 가이드

    자, 이제 직접 OPNsense를 설치해볼 시간입니다. pfSense 설치 과정도 크게 다르지 않으니, 이 가이드를 참고하시면 충분히 따라하실 수 있을 거예요. 저는 주로 OPNsense를 사용하니, OPNsense 기준으로 설명해드릴게요.

    ✅ 준비물

    • 하드웨어: 최소 2개의 LAN 포트(NIC, Network Interface Card)가 있는 PC 또는 미니 PC (WAN 연결용 1개, LAN 연결용 1개). 저는 저전력 J4125 기반의 미니 PC를 사용하고 있거든요.
    • USB 드라이브: 설치용 부팅 USB를 만들 때 사용합니다. (최소 8GB 이상)
    • 모니터 및 키보드: 설치 과정에서 필요합니다.
    • OPNsense ISO 이미지: OPNsense 공식 웹사이트에서 최신 버전을 다운로드합니다.
    • 부팅 USB 생성 툴: 저는 주로 Rufus를 사용하더라고요.

    단계별 설치 과정

    1. OPNsense ISO 다운로드 및 부팅 USB 생성

      공식 웹사이트에서 자신의 하드웨어 아키텍처(대부분 AMD64)에 맞는 ISO 파일을 다운로드합니다. 그리고 Rufus 같은 툴을 이용해 USB에 ISO 파일을 구워 부팅 가능한 USB를 만들어요. 이때 ‘DD Image mode’를 선택하는 것이 좋습니다.

      Rufus를 사용하여 OPNsense ISO 이미지를 USB에 굽는 화면입니다. ‘DD Image mode’ 선택 옵션을 강조합니다.

    2. 설치 미디어로 부팅

      준비된 PC에 부팅 USB를 꽂고, BIOS/UEFI 설정에서 USB로 부팅하도록 순서를 변경합니다. 부팅이 시작되면 OPNsense 로고와 함께 몇 가지 옵션이 나옵니다. 대부분의 경우 기본값인 <code>Boot Multi User를 선택하고 엔터를 누르면 돼요.

    3. 설치 마법사 (Installer) 시작

      콘솔 화면이 나타나면 installer를 입력하고 엔터를 누릅니다. 키보드 레이아웃 설정 (대부분 us.kbd) 후, Guided Installation을 선택하여 진행하면 됩니다.

      Welcome to the OPNsense installer!
      Enter 'installer' to start the installation wizard.
      # installer
      
    4. 디스크 선택 및 파티션 설정

      설치할 디스크를 선택합니다. 경고 메시지가 뜨면 Yes를 선택하여 디스크의 모든 데이터가 지워지는 것을 확인해요. 이후 기본 파티션 설정 (Auto UFS)으로 진행하는 것이 일반적입니다.

    5. 설치 완료 및 재부팅

      설치가 완료되면 USB를 제거하고 재부팅합니다. 재부팅 후 OPNsense 콘솔 화면이 나타나면 설치가 성공적으로 끝난 거예요! 🎉

    초기 네트워크 설정 및 웹 GUI 접속

    이제 설치된 OPNsense에 접속하여 기본적인 홈 네트워크 설정을 해야 합니다. 이 과정에서 삽질을 좀 했었어요. 처음엔 어떤 LAN 포트가 WAN이고 LAN인지 헷갈리더라고요. ⚠️

    1. 인터페이스 할당 (Interface Assignment)

      재부팅 후 콘솔 화면에서 1) Assign Interfaces를 선택합니다. 물리적인 네트워크 인터페이스 (예: igb0, igb1 등)를 WAN과 LAN에 할당해야 해요. 보통 첫 번째 포트가 WAN, 두 번째 포트가 LAN이 됩니다. 저는 igb0을 WAN, igb1을 LAN으로 할당했거든요. 헷갈리시면 케이블을 꽂고 뺐을 때 어떤 인터페이스의 링크 상태가 변하는지 확인해보세요.

      Available interfaces:
      igb0 (up)
      igb1 (up)
      
      Enter the WAN interface name or 'a' for auto-detection: igb0
      Enter the LAN interface name or 'a' for auto-detection: igb1
      Do you want to proceed? [y/N]: y
      
    2. LAN IP 주소 설정

      인터페이스 할당 후, 다시 메인 메뉴로 돌아와 2) Set interface IP address를 선택하고 LAN을 선택합니다. 홈 네트워크에서 사용할 사설 IP 대역 (예: 192.168.1.1/24)을 설정하면 돼요. 저는 192.168.1.1로 설정했습니다.

      Enter the new LAN IPv4 address: 192.168.1.1
      Enter the new LAN IPv4 subnet bit count: 24
      

      이후 DHCP(Dynamic Host Configuration Protocol) 서버를 활성화할지 묻는데, 당장은 N을 선택하고 웹 GUI에서 설정하는 것이 편합니다.

    3. 웹 GUI 접속

      LAN 포트에 연결된 PC에서 웹 브라우저를 열고, 방금 설정한 LAN IP 주소(예: https://192.168.1.1)로 접속하면 돼요. 초기 사용자 이름은 root, 비밀번호는 opnsense입니다. 로그인 후에는 보안을 위해 반드시 비밀번호를 변경하세요!

      OPNsense 웹 관리 인터페이스의 대시보드 초기 화면입니다. 시스템 정보와 네트워크 상태를 한눈에 볼 수 있습니다.

    ⚠️ 주의사항 및 트러블슈팅: 제가 겪었던 문제들

    제가 처음 OPNsense를 설치하고 홈 네트워크를 구축하면서 겪었던 몇 가지 문제와 해결 팁을 공유해볼게요. 여러분은 저처럼 삽질하지 마시라고요! ㅎㅎ

    • NIC 할당 오류: 처음에는 물리적인 포트와 OPNsense에서 인식하는 인터페이스(igb0, igb1 등) 매칭이 어려웠거든요. 해결책은 간단합니다. WAN 포트에만 인터넷 케이블을 연결하고 부팅한 다음, ifconfig 명령어로 어떤 인터페이스가 링크 업(link up)되었는지 확인하면 돼요. 그리고 그 인터페이스를 WAN으로 할당하면 됩니다. LAN 포트도 마찬가지고요.
    • Double NAT 문제: 기존 통신사 공유기 뒤에 OPNsense를 설치하면 Double NAT(이중 NAT)가 발생할 수 있더라고요. 이렇게 되면 외부에서 내부 네트워크로 접속하는 포트 포워딩(Port Forwarding)이 복잡해지거나, 일부 서비스에서 문제가 발생할 수 있습니다. 가능하면 통신사 공유기를 브릿지 모드(Bridge Mode)로 변경하거나, OPNsense를 통신사 모뎀 바로 뒤에 연결하여 메인 라우터로 사용하는 것이 좋아요.
    • 방화벽 규칙 (Firewall Rules): OPNsense는 기본적으로 매우 강력한 방화벽 기능을 제공합니다. 즉, 허용되지 않은 트래픽은 모두 차단하거든요. 처음에는 인터넷이 안 돼서 당황했는데, LAN to WAN 트래픽을 허용하는 기본 규칙이 제대로 적용되었는지 확인해야 합니다. 특정 포트나 서비스가 작동하지 않을 때는 Firewall > Rules에서 해당 트래픽을 허용하는 규칙을 추가해야 해요.
    • 관리자 비밀번호 변경: 초기 비밀번호(opnsense)는 반드시 변경하세요! 홈 네트워크라도 외부 공격에 노출될 수 있으니, 강력한 비밀번호를 설정하는 것이 중요합니다.

    검증 및 활용: 나만의 홈 네트워크 완성!

    이제 기본적인 설치와 설정이 끝났으니, 제대로 작동하는지 확인해볼 차례입니다. 🎉

    1. 인터넷 연결 확인: LAN에 연결된 PC에서 인터넷 접속을 시도해보세요. 웹페이지가 잘 열린다면 성공입니다!
    2. DHCP 서버 활성화: Services > DHCPv4 > [LAN] 메뉴에서 DHCP 서버를 활성화하고, IP 주소 범위(Pool)를 설정하면 홈 네트워크에 연결되는 기기들이 자동으로 IP 주소를 받아갈 수 있어요.
    3. DNS 설정: System > Settings > General에서 DNS 서버를 설정할 수 있습니다. 저는 주로 Cloudflare DNS(1.1.1.1, 1.0.0.1)나 Google DNS(8.8.8.8, 8.8.4.4)를 사용하더라고요.

    여기까지 완료하셨다면, 여러분은 이제 기본적인 라우터 겸 방화벽을 성공적으로 구축하신 거예요! 이젠 단순히 인터넷만 되는 공유기가 아니라, 여러분의 의지대로 트래픽을 제어하고 보안을 강화할 수 있는 강력한 홈 네트워크 장비를 가지게 된 겁니다.

    💡 다음 단계로 나아가기

    OPNsense는 여기서 끝이 아닙니다. 더 많은 기능들을 활용해볼 수 있어요.

    • VPN 서버 구축 (OpenVPN, WireGuard): 외부에서 홈 네트워크로 안전하게 접속할 수 있게 해줍니다.
    • VLAN 설정: IoT 기기나 게스트 네트워크를 분리하여 홈 네트워크 보안을 강화할 수 있습니다.
    • 침입 탐지/방지 시스템 (IDS/IPS): Suricata나 Zenarmor(Sensei) 플러그인을 사용하여 네트워크 위협을 실시간으로 탐지하고 차단해요.
    • Multi-WAN: 두 개 이상의 인터넷 회선을 연결하여 로드 밸런싱(Load Balancing)이나 페일오버(Failover)를 구성할 수 있습니다.

    pfSense와 OPNsense의 핵심 기능을 비교하는 인포그래픽입니다. 각 솔루션의 장점을 시각적으로 보여줍니다.

    마무리하며: 나만의 홈 네트워크, 그 시작점!

    오늘은 오픈소스 방화벽/라우터의 세계, 특히 pfSense와 OPNsense에 대해 깊이 파고들어 봤어요. 처음엔 다소 복잡하게 느껴질 수 있지만, 직접 하나하나 설정해보면서 네트워크가 어떻게 작동하는지 이해하게 되는 과정은 정말 값진 경험이거든요.

    저도 13년차 인프라 엔지니어지만, 홈 네트워크를 구축하면서 새로운 기술을 만날 때마다 여전히 설레고, 가끔은 삽질도 하면서 배우고 있습니다. 여러분도 이번 기회를 통해 나만의 홈 네트워크를 직접 구축하고, 더 안전하고 효율적인 환경을 만들어보시길 강력히 추천합니다.

    다음 글에서는 OPNsense에 VPN 서버를 구축하는 방법에 대해 좀 더 자세히 다뤄볼 예정이니 기대해주세요! 홈 네트워크의 재미는 이제 시작입니다. 궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 제가 아는 선에서 성심성의껏 답변해드리겠습니다! 😊

  • [HomeLabs] UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    [HomeLabs] UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    안녕하세요, 13년차의 서버실 주인장입니다. 홈랩을 운영하면서 가장 신경 쓰이는 부분이 뭘까요? 저는 주저 없이 전원 문제라고 말할 수 있어요. 특히 갑작스러운 정전은 애지중지 키워온 홈서버의 하드웨어뿐만 아니라, 그 안에 담긴 소중한 데이터까지 한순간에 날려버릴 수 있는 무서운 재앙이거든요.

    제가 처음 홈랩을 구성하고 몇 달 뒤였을 겁니다. 한창 드라마를 보는데 갑자기 집 전체가 퍽! 하고 암전되더라고요. 순간 ‘아, 망했다!’ 싶었죠. 다행히 서버는 무사했지만, 그날 이후로 UPS(무정전 전원 장치)의 필요성을 뼈저리게 느꼈습니다. 단순히 전원을 공급해주는 것을 넘어, 정전 시 서버를 안전하게 종료시키는 자동화가 정말 중요하다는 걸 깨달았죠.

    오늘은 저처럼 홈랩을 운영하시는 분들을 위해, UPS와 홈서버(특히 Proxmox VE와 TrueNAS)를 연동해서 정전 시 자동으로 시스템이 종료되도록 설정하는 방법을 차근차근 알려드릴게요. 13년 동안 이런저런 삽질을 하면서 터득한 경험을 바탕으로, 여러분은 좀 더 쉽게 성공하시길 바랍니다! 💡

    홈랩 UPS 연동 아키텍처: 정전 시 서버들을 안전하게 지키는 핵심 구성입니다.

    UPS와 NUT(Network UPS Tools)는 뭐 하는 건가요?

    먼저 핵심 개념부터 짚고 넘어갈게요. ‘UPS’는 다들 아실 겁니다. 쉽게 말해 보조 배터리 같은 역할을 하면서, 정전이 되면 일정 시간 동안 서버에 전원을 공급해주는 장치죠. 하지만 UPS의 진짜 가치는 단순히 전원을 유지하는 것을 넘어, 서버에게 “야, 지금 전기가 나갔어! 얼른 마무리하고 꺼져야 해!”라고 알려줄 수 있을 때 빛을 발합니다.

    이때 필요한 게 바로 NUT(Network UPS Tools)예요. NUT는 UPS와 서버 간의 통신을 담당하는 오픈소스 소프트웨어 스위트(Software Suite)입니다. UPS의 상태(배터리 잔량, 전원 상태 등)를 모니터링하고, 특정 조건(예: 배터리 잔량 20% 미만)이 되면 연결된 서버들에게 종료 신호를 보내는 역할을 하죠.

    • UPS 서버 (Server): 물리적인 UPS 장치에 직접 연결되어 UPS 상태를 읽어오는 역할을 해요. 보통 USB 케이블로 연결하죠. 이 서버에 upsd (UPS Daemon)가 실행되면서 다른 클라이언트들에게 UPS 정보를 제공합니다.
    • UPS 클라이언트 (Client): UPS 서버로부터 UPS 상태 정보를 받아, 특정 조건이 되면 스스로 종료하거나 미리 설정된 작업을 수행합니다. Proxmox VE나 TrueNAS 같은 홈서버들이 여기에 해당해요. upsmon (UPS Monitor)이 이 역할을 담당합니다.

    저는 보통 라즈베리 파이 같은 저전력 장치나, 최소한의 리소스를 할당한 가상 머신에 NUT 서버를 구성합니다. 아무래도 UPS가 서버 전체를 위한 장치이니, 그 정보를 관리하는 서버는 가급적 안정적이고 전력을 덜 먹는 게 좋더라고요.

    실전 구현: NUT 서버와 클라이언트 설정

    자, 이제 실전입니다. 저는 제가 직접 구성한 환경을 기준으로 설명해 드릴게요. UPS는 APC BR1500MS 같은 모델을 많이 쓰시는데, USB로 연결되는 대부분의 UPS는 NUT와 호환되니 크게 걱정하지 않으셔도 돼요. 제가 사용했던 UPS도 USB로 연결되는 모델이었거든요.

    1. NUT 서버 설정 (Debian/Ubuntu 기반 VM 또는 Raspberry Pi)

    먼저, UPS에 USB로 직접 연결될 NUT 서버를 설정해봅시다. 저는 Proxmox 위에 데비안(Debian) 가상 머신을 하나 띄워서 사용했어요.

    패키지 설치:

    sudo apt update
    sudo apt install nut

    /etc/nut/ups.conf 설정:
    이 파일은 UPS 장치의 종류와 연결 방식을 NUT에게 알려줍니다. UPS 모델에 따라 드라이버(driver)가 달라질 수 있으니, NUT 공식 문서를 참고해서 맞는 드라이버를 찾아주세요. 저는 usbhid-ups 드라이버를 사용했어요.

    [myups]
      driver = usbhid-ups
      port = auto
      desc = "My HomeLab UPS"
      # mincharge = 80  # 배터리 최소 충전량 (예: 80% 미만이면 경고)
      # override.battery.charge.low = 20 # 배터리 잔량 20% 미만 시 저전압 경고

    /etc/nut/nut.conf 설정:
    NUT의 동작 모드를 설정합니다. 여기서는 STANDALONE 대신 SERVER로 설정해야 다른 서버들이 이 UPS 정보를 가져갈 수 있어요.

    MODE=SERVER

    /etc/nut/upsd.users 설정:
    클라이언트들이 UPS 정보를 모니터링할 때 사용할 사용자 계정을 정의합니다. 보안을 위해 강력한 비밀번호를 사용하는 것이 좋겠죠.

    [upsmon]
      password = YourStrongPasswordHere
      actions = SET
      instcmds = ALL
      upsmon master

    /etc/nut/upsd.conf 설정:
    NUT 데몬이 어떤 IP 주소와 포트(기본 3493)에서 클라이언트의 연결을 받을지 설정합니다. 저는 홈랩 내부에서만 사용할 것이므로 내부 IP를 바인딩했어요.

    LISTEN 0.0.0.0 3493 # 모든 인터페이스에서 수신 (혹은 특정 내부 IP)

    NUT 서비스 재시작 및 확인:

    sudo systemctl restart nut-server nut-client
    sudo systemctl enable nut-server nut-client
    sudo upsc myups@localhost # UPS 정보 확인. 'myups'는 ups.conf에 설정한 이름입니다.

    upsc myups@localhost 명령어를 실행했을 때, UPS의 다양한 정보(배터리 잔량, 전압 등)가 잘 출력된다면 NUT 서버 설정은 성공입니다! 🎉

    NUT 서버 설정의 핵심, ups.conf 파일입니다. UPS 모델에 맞는 드라이버를 찾는 것이 정말 중요해요.

    2. Proxmox VE 클라이언트 설정

    이제 Proxmox VE 서버가 NUT 서버로부터 UPS 정보를 받아 정전 시 자동으로 종료되도록 설정해볼까요? Proxmox는 Debian 기반이라 NUT 클라이언트 설정이 비교적 간단해요.

    패키지 설치:

    apt update
    apt install nut

    /etc/nut/nut.conf 설정:
    Proxmox는 NUT 서버가 아닌 클라이언트 역할을 하므로 MODE=NETCLIENT로 설정합니다.

    MODE=NETCLIENT

    /etc/nut/upsmon.conf 설정:
    이 파일에서 어떤 UPS 서버를 모니터링할지, 그리고 어떤 조건에서 종료할지 정의합니다. MONITOR 라인에 NUT 서버의 IP 주소, UPS 이름, 사용자 이름, 비밀번호를 입력하세요.

    MONITOR [email protected] 1 upsmon YourStrongPasswordHere master
    # (192.168.1.100은 NUT 서버의 IP 주소로 바꿔주세요)
    
    MINWARNTIME 300   # UPS 경고 발생 후 최소 5분 대기
    FINALDELAY 5      # 시스템 종료까지 추가 대기 시간 (초)
    SHUTDOWNCMD "/sbin/shutdown -h now" # 종료 명령
    NOTIFYCMD "/usr/sbin/upssched-cmd" # 알림 스크립트 (선택 사항)
    
    NOTIFYFLAG ONLINE SYSLOG+WALL
    NOTIFYFLAG ONBATT SYSLOG+WALL
    NOTIFYFLAG LOWBATT SYSLOG+WALL
    NOTIFYFLAG FSD SYSLOG+WALL
    
    # Proxmox의 경우, 가상머신 및 컨테이너를 먼저 종료해야 합니다.
    # 저는 아래와 같이 별도 스크립트를 만들어서 사용했어요.
    # /etc/nut/upsmon.conf 에 직접 넣기보다는, SHUTDOWNCMD가 실행할 스크립트 안에 넣는 것이 좋습니다.
    # (예시: /etc/nut/ups_shutdown.sh)
    # SCRIPT: /etc/nut/ups_shutdown.sh
    # (스크립트 예시는 뒤에서 설명합니다)

    Proxmox 특화: 가상 머신/컨테이너(VM/CT) 종료 스크립트
    Proxmox는 단순히 shutdown -h now만 실행하면 호스트만 꺼지고 VM/CT는 강제 종료될 수 있어요. 이를 방지하려면 VM/CT를 먼저 안전하게 종료하는 스크립트를 작성하여 SHUTDOWNCMD에 연결해야 합니다. 저는 다음과 같은 스크립트를 사용했습니다.

    #!/bin/bash
    
    logger -t ups_shutdown "UPS shutting down Proxmox and VMs/CTs..."
    
    # 모든 VM 및 CT 목록 가져오기
    vms=$(qm list | awk 'NR>1 {print $1}')
    cts=$(pct list | awk 'NR>1 {print $1}')
    
    # VM 종료
    for vmid in $vms
    do
      status=$(qm status $vmid | awk '{print $2}')
      if [ "$status" = "running" ]; then
        logger -t ups_shutdown "Shutting down VM $vmid..."
        qm shutdown $vmid --timeout 30
        sleep 5
        if [ "$(qm status $vmid | awk '{print $2}')" = "running" ]; then
          logger -t ups_shutdown "VM $vmid did not shut down gracefully, stopping..."
          qm stop $vmid
        fi
      fi
    done
    
    # CT 종료
    for ctid in $cts
    do
      status=$(pct status $ctid | awk '{print $2}')
      if [ "$status" = "running" ]; then
        logger -t ups_shutdown "Shutting down CT $ctid..."
        pct shutdown $ctid --timeout 30
        sleep 5
        if [ "$(pct status $ctid | awk '{print $2}')" = "running" ]; then
          logger -t ups_shutdown "CT $ctid did not shut down gracefully, stopping..."
          pct stop $ctid
        fi
      fi
    done
    
    logger -t ups_shutdown "All VMs/CTs processed. Shutting down Proxmox host."
    sleep 10 # VM/CT 종료 대기 시간을 충분히 줍니다.
    /sbin/shutdown -h now

    이 스크립트를 /etc/nut/ups_shutdown.sh 로 저장하고 실행 권한을 부여한 뒤,

    sudo chmod +x /etc/nut/ups_shutdown.sh

    /etc/nut/upsmon.conf 파일의 SHUTDOWNCMD를 다음과 같이 수정하세요.

    SHUTDOWNCMD "/etc/nut/ups_shutdown.sh"

    NUT 클라이언트 서비스 재시작 및 확인:

    systemctl restart nut-client
    systemctl enable nut-client
    upsc [email protected] # NUT 서버의 UPS 정보 확인

    3. TrueNAS 클라이언트 설정

    TrueNAS는 NUT 클라이언트 기능이 웹 인터페이스에 통합되어 있어 설정이 훨씬 간편합니다. 제가 써보니 이 부분이 정말 편하더라고요!

    1. TrueNAS 웹 UI에 접속하세요.
    2. 좌측 메뉴에서 Services (서비스)를 클릭합니다.
    3. 서비스 목록에서 UPS를 찾아 Configure (설정) 버튼을 클릭하세요.
    4. 설정 창에서 다음 정보를 입력합니다:
      • UPS Type (UPS 유형): Slave (클라이언트 역할을 하므로)
      • Remote Host (원격 호스트): NUT 서버의 IP 주소 (예: 192.168.1.100)
      • Remote Port (원격 포트): 3493 (기본값)
      • Identifier (식별자): NUT 서버의 ups.conf에 설정한 UPS 이름 (예: myups)
      • Monitor User (모니터 사용자): upsmon (upsd.users에 설정한 사용자)
      • Monitor Password (모니터 비밀번호): YourStrongPasswordHere (upsd.users에 설정한 비밀번호)
      • Shutdown Mode (종료 모드): UPS reaches low battery (UPS 배터리가 부족할 때)
      • Shutdown Timer (종료 타이머): 120 (배터리 부족 감지 후 120초 뒤 종료)
    5. Save (저장) 버튼을 클릭하세요.
    6. 서비스 목록으로 돌아가서 UPS 서비스를 Enabled (활성화)로 설정하고 Start (시작) 버튼을 클릭합니다.

    TrueNAS 로그를 확인하여 UPS 서비스가 정상적으로 시작되었는지, NUT 서버와 통신하는지 확인해 보세요. /var/log/messages나 웹 UI의 시스템 로그에서 관련 메시지를 찾을 수 있어요.

    TrueNAS의 UPS 설정 화면입니다. 웹 UI 덕분에 직관적으로 설정할 수 있어요.

    ⚠️ 주의사항 및 트러블슈팅 (제 삽질 경험 공유)

    제가 이 설정을 하면서 겪었던 몇 가지 삽질 경험과 주의사항을 알려드릴게요. 여러분은 저처럼 고생하지 마시길!

    1. 방화벽 문제: NUT 서버와 클라이언트 간에 3493번 포트 통신이 제대로 되는지 꼭 확인하세요. 특히 NUT 서버로 설정한 VM이나 물리 장치에 ufw나 firewalld 같은 방화벽이 있다면 3493번 포트를 열어줘야 해요. sudo ufw allow 3493/tcp 같은 명령어로 열 수 있습니다. 저는 처음에 이걸 놓쳐서 ‘왜 연결이 안 되지?’ 하고 한참을 헤맸습니다. ㅠㅠ
    2. USB 드라이버 문제: UPS가 USB로 NUT 서버에 제대로 인식되지 않는 경우가 간혹 있어요. lsusb 명령어로 UPS 장치가 목록에 뜨는지 확인하고, dmesg | grep -i usb 명령어로 커널 로그를 확인해서 드라이버 로딩에 문제가 없는지 봐야 합니다. 간혹 특정 UPS 모델은 추가적인 드라이버나 커널 모듈이 필요할 수 있거든요.
    3. ups.conf 드라이버 오설정: 가장 흔한 실수 중 하나예요. UPS 모델에 맞는 정확한 드라이버를 사용해야 합니다. nut-drivers 패키지 설치 후 man ups.conf나 NUT 공식 문서를 참고하는 게 가장 정확합니다.
    4. 종료 스크립트 테스트: 실제 정전 상황을 흉내 내기 어렵다면, 강제로 lowbatt 신호를 보내는 방식으로 테스트할 수 있어요. sudo upsmon -c fsd (Force Shutdown) 같은 명령어를 사용하거나, upsmon.conf에서 SHUTDOWNCMD를 테스트용 스크립트로 바꿔서 실행해 보는 것도 좋은 방법입니다. 절대 운영 중인 서버에서 바로 테스트하지 마세요! 중요한 데이터가 날아갈 수 있습니다. 테스트는 항상 충분히 백업된 환경이나 테스트용 서버에서 진행하시고, 스크립트 실행 권한(chmod +x)도 잊지 마세요!
    5. Proxmox VM/CT 종료 순서: 위에서 설명했듯이 Proxmox는 호스트만 종료하면 VM/CT가 강제 종료돼요. 반드시 qm shutdown, pct shutdown 명령어를 사용하여 순차적으로 종료하는 스크립트를 사용해야 합니다.

    검증 및 결과: 이제 안심하고 홈랩을!

    모든 설정이 끝났다면, 이제 정말 잘 작동하는지 확인해야겠죠? 저는 조심스럽게 UPS의 전원 코드를 뽑아서 실제 정전 상황을 시뮬레이션해봤습니다. (물론 중요한 작업은 모두 백업해두고, 아주 짧게 시도했어요.)

    결과는? 🎉 대성공이었습니다!

    UPS가 배터리 모드로 전환되고, 설정해둔 MINWARNTIME이 지나자 Proxmox와 TrueNAS가 순차적으로 종료되기 시작했어요. Proxmox의 경우, 제가 만들어둔 스크립트 덕분에 VM과 CT들이 먼저 안전하게 꺼진 후 호스트가 종료되는 것을 로그로 확인할 수 있었습니다. TrueNAS도 깔끔하게 종료되었고요.

    로그 확인은 journalctl -u nut-client.service (Proxmox/Debian)나 /var/log/messages (TrueNAS)를 통해 할 수 있습니다. 여기에 UPS 상태 변화와 종료 명령이 정상적으로 기록되어 있다면 안심해도 좋아요.

    시스템 로그에서 확인하는 자동 종료 과정. 이 메시지를 보면 정말 뿌듯하더라고요!

    마무리하며: 홈랩의 든든한 보험, UPS 연동

    오늘은 홈랩의 안정성을 한 단계 끌어올리는 UPS 홈서버 연동, 특히 Proxmox UPS와 TrueNAS UPS 자동 종료 설정에 대해 알아봤습니다. 처음에는 NUT 설정이 조금 복잡하게 느껴질 수도 있지만, 한 번 제대로 설정해두면 갑작스러운 정전에도 소중한 장비와 데이터를 안전하게 지킬 수 있어요. 이건 마치 홈랩을 위한 든든한 보험 같은 존재랄까요?

    저도 처음엔 ‘이거까지 해야 하나?’ 싶었는데, 한번 정전을 겪고 나니 이제는 홈랩의 필수 요소라고 생각합니다. 여러분도 이 가이드를 통해 성공적으로 UPS 연동을 마치시고, 마음 편히 홈랩을 즐기시길 바랍니다. 다음번에는 또 다른 흥미로운 홈랩 이야기로 찾아올게요! 그때까지 즐거운 삽질(?) 되세요! 😉

    UPS 연동의 핵심 가치: 안전한 홈랩, 데이터 보호, 그리고 마음의 평화!

  • [HomeLabs] 씬클라이언트 홈서버 구축: 저전력 미니PC 활용 완벽 가이드

    전기세 걱정 없이 24시간 서버 돌리고 싶다면?

    홈서버를 처음 구축할 때 저도 제일 먼저 든 걱정이 “이거 전기세 얼마나 나오지?”였거든요. 그때 마침 회사 IT 창고에 쌓여 있던 씬클라이언트(Thin Client) 장비들을 보면서 “이걸 집에 가져다 쓰면 어떨까?” 싶었습니다. 결론부터 말씀드리면, 씬클라이언트 홈서버 구축은 저전력 + 저비용 + 충분한 성능이라는 세 마리 토끼를 꽤 잘 잡는 선택이에요.

    요즘 미니PC 홈서버에 관심 갖는 분들이 늘어나고 있는데, 막상 어떤 장비를 고르고 어떻게 세팅해야 할지 막막하신 분들을 위해 13년간 서버실에서 일해온 경험을 정리해봤습니다.

    씬클라이언트 기반 홈랩의 전형적인 네트워크 구성도 — 공유기, 씬클라이언트 서버, NAS, 그리고 외부 접근 경로를 한눈에 볼 수 있습니다.

    씬클라이언트(Thin Client)가 뭔가요? 쉽게 풀어보면

    씬클라이언트는 원래 기업 환경에서 VDI(Virtual Desktop Infrastructure, 가상 데스크탑 인프라)나 원격 서버에 접속하기 위한 단말기로 쓰이던 장비예요. 쉽게 말해서, 자체적으로 무거운 연산은 안 하고 서버에서 처리한 결과만 화면에 뿌려주는 “얇은(Thin)” 클라이언트죠.

    이게 홈서버 용도로 매력적인 이유가 있어요.

    • 기업에서 대량으로 쓰다 교체한 중고 물량이 시장에 꽤 많이 풀림
    • 원래 설계 자체가 저전력, 저소음, 소형 폼팩터(Form Factor)
    • x86 아키텍처 기반이라 일반 리눅스 서버 OS 설치 가능
    • eMMC나 SSD가 내장된 모델이 많아 별도 저장장치 없이도 부팅 가능

    저도 처음엔 “이게 진짜 서버 역할을 할 수 있어?” 반신반의했는데, 지금은 홈랩의 핵심 노드로 잘 쓰고 있습니다 ㅎㅎ.

    씬클라이언트 vs 일반 미니PC — 뭐가 다를까?

    구분 씬클라이언트 일반 미니PC NUC 계열
    주 용도 기업 단말기 (중고 활용) 개인 사용 범용 소형 데스크탑/서버
    가격대 (중고) 매우 저렴 중간 비교적 고가
    소비 전력 매우 낮음 낮음~중간 낮음~중간
    확장성 제한적 중간 높음
    소음 매우 조용 (무팬 모델 있음) 조용한 편 모델마다 다름
    신뢰성 기업용 내구성 소비자용 높음

    💡 팁: 씬클라이언트는 원래 하루 종일 켜놓는 기업 환경에서 쓰이던 장비라 24시간 연속 운영에 강한 내구성을 가진 경우가 많습니다.

    어떤 씬클라이언트를 골라야 할까? — 선택 기준 정리

    여기서 솔직히 말씀드리면, 특정 모델을 무조건 추천하기보다는 어떤 기준으로 고를지를 아는 게 더 중요해요. 중고 시장 물량은 지역마다, 시기마다 달라지거든요.

    체크해야 할 핵심 스펙

    1. CPU 아키텍처 확인: x86_64(AMD64) 아키텍처인지 반드시 확인하세요. ARM 기반 씬클라이언트는 지원되는 소프트웨어가 제한됩니다.
    2. RAM 용량 및 확장 가능 여부: 최소 4GB, 가능하면 8GB 이상. 솔더드(Soldered, 납땜 고정) RAM인지 교체 가능한 SO-DIMM 슬롯인지 꼭 확인하세요.
    3. 저장장치 인터페이스: M.2 NVMe, M.2 SATA, 2.5인치 SATA 슬롯 여부. eMMC만 있는 모델은 확장이 어렵습니다.
    4. 네트워크 포트: 기가비트(1GbE) 이더넷 포트가 있는지 확인. 일부 구형 모델은 100Mbps에 그치기도 해요.
    5. USB 포트 수량 및 규격: USB 3.0 이상 포트가 몇 개인지 — 외장 저장장치 연결에 중요합니다.
    6. BIOS/UEFI 접근 가능 여부: 부팅 순서 변경, PXE 부팅 설정 등을 위해 BIOS에 접근할 수 있어야 합니다.
    7. 소비 전력 TDP: CPU의 TDP(Thermal Design Power, 열 설계 전력)가 낮을수록 전기세 절약.

    ⚠️ 주의: 일부 기업용 씬클라이언트는 BIOS가 잠겨 있거나, 특정 OS만 부팅되도록 제한이 걸려 있는 경우가 있어요. 중고 구입 전에 판매자에게 BIOS 접근 가능 여부를 꼭 확인하세요. 저도 한번 이걸 놓쳐서 삽질했습니다 😅.

    OS 설치 — Ubuntu Server로 시작하기

    씬클라이언트 홈서버 구축에서 OS는 Ubuntu Server LTS(Long Term Support, 장기 지원 버전)를 강력 추천합니다. 커뮤니티가 크고, 레퍼런스가 많아서 문제가 생겼을 때 해결책 찾기가 훨씬 수월하거든요.

    부팅 USB 만들기

    # balenaEtcher나 dd 명령어로 USB 부팅 디스크 생성
    # Linux/macOS에서 dd 사용 시 (주의: of= 경로 틀리면 데이터 날아갑니다!)
    sudo dd if=ubuntu-server-*.iso of=/dev/sdX bs=4M status=progress
    sync

    ⚠️ 중요: of=/dev/sdX에서 X는 여러분의 USB 드라이브 경로입니다. lsblk 명령어로 먼저 확인하고 진행하세요. 잘못된 경로 입력 시 데이터 복구 불가!

    설치 후 기본 세팅

    # 시스템 업데이트
    sudo apt update && sudo apt upgrade -y
    
    # 필수 패키지 설치
    sudo apt install -y \
      curl \
      wget \
      git \
      htop \
      net-tools \
      openssh-server \
      ufw
    
    # SSH 서비스 활성화 및 시작
    sudo systemctl enable ssh
    sudo systemctl start ssh
    
    # UFW(Uncomplicated Firewall) 기본 설정
    sudo ufw allow ssh
    sudo ufw enable
    sudo ufw status

    고정 IP 설정 — Netplan으로

    홈서버는 IP가 바뀌면 난감하니까 고정 IP(Static IP)를 잡아줘야 해요. Ubuntu 18.04 이후부터는 Netplan(네트플랜)을 씁니다.

    # /etc/netplan/00-installer-config.yaml
    network:
      version: 2
      ethernets:
        eth0:  # 실제 인터페이스명으로 변경 (ip a 명령어로 확인)
          dhcp4: no
          addresses:
            - 192.168.1.100/24  # 원하는 고정 IP
          gateway4: 192.168.1.1  # 공유기 IP
          nameservers:
            addresses:
              - 1.1.1.1
              - 8.8.8.8
    # 설정 적용
    sudo netplan apply
    
    # 적용 확인
    ip a

    Ubuntu Server 설치 완료 후 SSH로 접속한 터미널 화면 — 이 화면이 뜨면 절반은 성공입니다.

    Docker로 서비스 올리기 — 홈서버의 꽃

    저전력 서버 구축에서 Docker(도커)는 거의 필수예요. 자원을 효율적으로 쓰면서 여러 서비스를 격리해서 운영할 수 있거든요. VM(Virtual Machine, 가상 머신)보다 오버헤드가 훨씬 적어서 저전력 환경에 딱 맞습니다.

    Docker 설치

    # Docker 공식 설치 스크립트 사용
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    
    # 현재 사용자를 docker 그룹에 추가 (sudo 없이 docker 명령 사용)
    sudo usermod -aG docker $USER
    
    # 변경 사항 적용을 위해 재로그인 후 확인
    newgrp docker
    docker --version

    Docker Compose로 서비스 스택 구성

    여기서 제가 실제로 씬클라이언트 홈서버에서 돌리고 있는 기본 스택을 공유할게요. Portainer(포테이너)는 Docker 컨테이너를 웹 UI로 관리할 수 있게 해주는 도구인데, 초보자한테 정말 유용합니다.

    # docker-compose.yml
    version: '3.8'
    
    services:
      portainer:
        image: portainer/portainer-ce:latest
        container_name: portainer
        restart: unless-stopped
        ports:
          - "9000:9000"
          - "9443:9443"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - portainer_data:/data
    
      nginx-proxy-manager:
        image: jc21/nginx-proxy-manager:latest
        container_name: nginx-proxy-manager
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
          - "81:81"  # 관리자 UI
        volumes:
          - npm_data:/data
          - npm_letsencrypt:/etc/letsencrypt
    
    volumes:
      portainer_data:
      npm_data:
      npm_letsencrypt:
    # 스택 시작
    docker compose up -d
    
    # 실행 중인 컨테이너 확인
    docker compose ps
    
    # 로그 확인
    docker compose logs -f

    홈서버에서 유용한 서비스 목록

    씬클라이언트 홈서버에서 실제로 잘 돌아가는 서비스들을 정리해봤어요.

    • Portainer: Docker 관리 웹 UI
    • Nginx Proxy Manager: 리버스 프록시(Reverse Proxy) + SSL 인증서 자동 관리
    • Pi-hole: DNS 기반 광고 차단 서버
    • Uptime Kuma: 서비스 모니터링 대시보드
    • Vaultwarden: Bitwarden 호환 셀프호스팅 패스워드 매니저
    • Nextcloud: 셀프호스팅 클라우드 스토리지 (RAM이 충분할 때)
    • Home Assistant: 스마트홈 허브

    💡 팁: RAM이 4GB인 모델이라면 한 번에 너무 많은 서비스를 올리지 마세요. free -h 명령어로 메모리 사용량을 주기적으로 확인하면서 서비스를 하나씩 추가하는 게 안전합니다.

    ⚠️ 삽질 모음 — 제가 겪은 트러블슈팅

    13년 동안 서버 만지면서 느낀 건데, 홈랩은 항상 예상치 못한 곳에서 막힙니다. 제가 씬클라이언트 홈서버 구축하면서 겪은 주요 문제들을 공유할게요.

    문제 1: 부팅 후 USB 인식 안 됨

    씬클라이언트 일부 모델은 기본 BIOS 설정에서 USB 부팅이 비활성화되어 있어요. BIOS 진입 키(보통 F2, F10, Del 중 하나)를 눌러서 Boot Order(부팅 순서)에서 USB를 최우선으로 변경해야 합니다. Secure Boot(보안 부팅)도 비활성화해야 Ubuntu 설치가 잘 되더라고요.

    문제 2: 네트워크 인터페이스 이름이 이상함

    Ubuntu에서 네트워크 인터페이스 이름이 eth0이 아니라 enp2s0이나 eno1처럼 나오는 경우가 많아요. Netplan 설정할 때 실제 이름을 먼저 확인해야 합니다.

    # 실제 네트워크 인터페이스 이름 확인
    ip link show
    # 또는
    ip a

    문제 3: 전원 차단 후 자동 부팅이 안 됨

    정전이나 실수로 전원이 끊겼을 때 자동으로 다시 켜지게 하려면 BIOS에서 “Power On After Power Failure” 또는 “AC Power Recovery” 옵션을 “On” 또는 “Last State”로 설정해야 해요. 이걸 안 하면 정전 후에 서버가 죽어 있는 상황이 생깁니다.

    문제 4: Docker 컨테이너가 재시작 후 안 올라옴

    Docker 서비스가 시스템 시작 시 자동 실행되도록 설정이 필요합니다.

    # Docker 서비스 자동 시작 등록
    sudo systemctl enable docker
    sudo systemctl enable containerd
    
    # 확인
    sudo systemctl is-enabled docker

    문제 5: eMMC 저장장치 용량 부족

    내장 eMMC가 32GB 이하인 모델은 OS + Docker 이미지로 금방 꽉 차요. 외장 USB SSD나 M.2 슬롯 추가 SSD로 용량을 늘리고, Docker의 데이터 디렉터리를 변경해주는 게 좋습니다.

    # Docker 데이터 디렉터리 변경
    # /etc/docker/daemon.json 파일 생성 또는 수정
    sudo nano /etc/docker/daemon.json
    {
      "data-root": "/mnt/external-ssd/docker"
    }
    # Docker 재시작
    sudo systemctl restart docker
    
    # 확인
    docker info | grep "Docker Root Dir"

    모니터링 설정 — 서버 상태 한눈에 보기

    저전력 서버 구축을 하고 나서 “잘 돌아가고 있나?” 확인하고 싶은 게 당연하죠. Uptime Kuma(업타임 쿠마)와 Glances(글랜시스)를 같이 쓰면 꽤 만족스러운 모니터링 환경이 됩니다.

    # monitoring-stack.yml
    version: '3.8'
    
    services:
      uptime-kuma:
        image: louislam/uptime-kuma:latest
        container_name: uptime-kuma
        restart: unless-stopped
        ports:
          - "3001:3001"
        volumes:
          - uptime_kuma_data:/app/data
    
      glances:
        image: nicolargo/glances:latest
        container_name: glances
        restart: unless-stopped
        pid: host
        ports:
          - "61208:61208"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - GLANCES_OPT=-w  # 웹 서버 모드로 실행
    
    volumes:
      uptime_kuma_data:

    Uptime Kuma와 Glances로 구성한 홈서버 모니터링 화면 — 각 서비스 응답 시간과 CPU/메모리 사용률을 실시간으로 확인할 수 있습니다.

    전력 최적화 — 진짜 저전력으로 만들기

    씬클라이언트 홈서버의 장점을 최대한 살리려면 OS 레벨에서도 전력 최적화를 해주면 좋아요.

    불필요한 서비스 비활성화

    # 서버에서 불필요한 GUI 관련 서비스 비활성화
    sudo systemctl disable bluetooth
    sudo systemctl disable cups  # 프린터 서비스
    sudo systemctl disable avahi-daemon  # mDNS (필요 없다면)
    
    # 현재 실행 중인 서비스 목록 확인
    sudo systemctl list-units --type=service --state=running

    CPU 주파수 조절 (powersave 모드)

    # cpufrequtils 설치
    sudo apt install -y cpufrequtils
    
    # 현재 CPU 거버너(Governor) 확인
    cpufreq-info | grep "current policy"
    
    # powersave 모드로 변경 (저전력 우선)
    sudo cpufreq-set -g powersave
    
    # 부팅 시 자동 적용 설정
    echo 'GOVERNOR="powersave"' | sudo tee /etc/default/cpufrequtils

    홈랩 구축 결과 정리 — 이 정도면 충분합니다

    씬클라이언트 홈서버 구축을 완료하고 나면 어떤 게 가능해지는지 정리해볼게요.

    항목 씬클라이언트 홈서버 일반 데스크탑 서버
    24시간 운영 전기세 부담 매우 낮음 높음
    소음 거의 없음 (무팬 모델) 팬 소음 있음
    초기 비용 중고 시 매우 저렴 상대적으로 높음
    Docker 서비스 운영 5~10개 경량 서비스 가능 제한 없음
    확장성 제한적 높음
    공간 차지 매우 작음 큼

    🎉 드디어 됐다! 씬클라이언트 홈서버가 완성되면, Pi-hole로 집 전체 광고를 차단하고, Vaultwarden으로 패스워드를 직접 관리하고, Uptime Kuma로 모든 서비스 상태를 모니터링하는 나만의 홈랩이 완성됩니다.

    씬클라이언트 홈서버 구축 전체 과정 요약 — 장비 선택부터 OS 설치, Docker 세팅, 모니터링까지 한눈에 보는 로드맵.

    자주 묻는 질문 (FAQ)

    Q. 씬클라이언트로 NAS도 만들 수 있나요?

    가능합니다! USB 3.0 포트에 외장 HDD나 SSD를 연결하고, Samba(삼바) 또는 NFS(Network File System)를 설정하면 기본적인 NAS 기능을 구현할 수 있어요. 다만 USB 인터페이스의 속도 한계가 있으니 고성능 NAS를 원하신다면 전용 NAS 장비를 고려하시는 게 좋습니다.

    Q. RAM이 4GB인 모델에서 돌릴 수 있는 서비스 수는?

    경량 서비스 기준으로 5~8개 정도는 무리 없이 돌아가더라고요. Pi-hole, Portainer, Vaultwarden, Uptime Kuma, Nginx Proxy Manager 조합은 4GB에서도 안정적입니다.

    Q. 외부에서 접근하려면 어떻게 해야 하나요?

    Cloudflare Tunnel(클라우드플레어 터널)을 활용하면 공인 IP 없이도 안전하게 외부 접근이 가능합니다. 이 부분은 내용이 많아서 다음 글에서 자세히 다룰 예정이에요.

    Q. 씬클라이언트는 어디서 구매하나요?

    중고나라, 당근마켓, eBay 등에서 기업 방출 중고 물량을 찾을 수 있어요. 검색할 때 “씬클라이언트”, “thin client”, “기업 방출 미니PC” 키워드로 찾아보세요.

    마무리 — 작게 시작해서 크게 배우는 홈랩

    씬클라이언트 홈서버 구축, 처음엔 뭔가 복잡해 보이지만 막상 해보면 생각보다 훨씬 재미있습니다. 저도 첫 홈서버가 씬클라이언트였는데, 그게 지금 이 블로그의 시작점이 됐거든요.

    중요한 건 완벽한 장비를 기다리는 것보다 지금 있는 장비로 일단 시작하는 것입니다. 저전력 서버 구축을 통해 리눅스 명령어도 익히고, 네트워크도 배우고, Docker도 배우다 보면 어느 순간 홈랩이 내 가장 좋은 실습 환경이 되어 있을 거예요.

    • ✅ 씬클라이언트 선택 기준 이해
    • ✅ Ubuntu Server 설치 및 기본 설정
    • ✅ Docker + Compose로 서비스 운영
    • ✅ 전력 최적화로 진짜 저전력 서버 완성
    • ✅ 모니터링으로 안정적인 운영 환경 구축

    다음 글에서는 Cloudflare Tunnel을 이용한 외부 접근 설정을 다룰 예정입니다. 공인 IP 없이도 집 서버에 안전하게 접근하는 방법인데, 씬클라이언트 홈랩 구축의 완성판이라고 할 수 있어요. 기대해주세요! 😊

    혹시 구축하다가 막히는 부분 있으시면 댓글로 남겨주세요. 경험자로서 최대한 도움 드리겠습니다!

  • [HomeLabs] 홈랩 NAS OS 비교: TrueNAS, Unraid, OpenMediaVault 선택 가이드

    NAS OS, 뭘 골라야 할지 모르겠다면 — 이 글이 딱입니다

    홈랩을 처음 시작하거나, 기존 홈서버를 업그레이드하려고 할 때 가장 먼저 맞닥뜨리는 고민이 있죠. 바로 “NAS OS를 뭘 써야 하지?”라는 질문입니다.

    저도 딱 그랬거든요. 13년 전에 처음 홈랩을 꾸릴 때, 지금처럼 선택지가 많지 않았는데도 뭘 써야 할지 한참 고민했었습니다. 지금은 오히려 선택지가 너무 많아서 더 헷갈리는 상황이 됐더라고요. 홈랩 NAS OS 비교를 제대로 해놓은 한국어 글이 정말 드물어서, 제가 직접 써봤던 경험을 토대로 정리해 드리려고 합니다.

    오늘 다룰 세 가지는 TrueNAS, Unraid, OpenMediaVault(OMV)입니다. 이 셋이 현재 홈서버 커뮤니티에서 가장 널리 쓰이는 NAS 전용 OS들이에요. 각각 철학도 다르고, 강점도 다르고, 적합한 사용자 유형도 다릅니다. 끝까지 읽으시면 본인 상황에 맞는 선택이 보일 거예요.

    TrueNAS, Unraid, OpenMediaVault — 홈랩 NAS OS 3대장의 구조와 특성을 한눈에 비교한 다이어그램


    먼저 알아야 할 개념들 — NAS OS가 뭐가 다른 거야?

    일반 OS(Ubuntu, Windows)에 Samba나 NFS 서버를 올려도 NAS는 됩니다. 근데 왜 굳이 NAS 전용 OS를 쓰냐고요? 쉽게 말해서, 파일 서버에 특화된 기능들이 처음부터 내장되어 있기 때문입니다.

    • 스토리지 풀(Storage Pool): 여러 개의 디스크를 하나의 논리적 공간으로 묶는 기능
    • RAID / 패리티(Parity): 디스크 장애 시 데이터를 보호하는 기술
    • 스냅샷(Snapshot): 특정 시점의 파일 시스템 상태를 저장해두는 기능
    • SMB / NFS / AFP 공유: Windows, Linux, macOS와 파일을 주고받는 프로토콜
    • WebUI: 터미널 없이 웹 브라우저로 관리하는 인터페이스

    이런 것들을 일반 OS에서 직접 구성하려면 시간이 꽤 걸리는데, NAS OS는 이걸 다 묶어서 제공해 줍니다. 물론 각 OS마다 접근 방식이 완전히 다르거든요. 그게 핵심 차이입니다.


    TrueNAS — 기업급 신뢰성을 홈랩에

    TrueNAS가 뭔지 간단히

    TrueNAS는 iXsystems라는 회사에서 만든 오픈소스 NAS OS입니다. 예전에 FreeNAS라는 이름으로 불렸는데, 2020년에 TrueNAS CORE(FreeBSD 기반)와 TrueNAS SCALE(Linux/Debian 기반)로 분리됐어요.

    • TrueNAS CORE: FreeBSD 기반, ZFS 파일시스템, 오랜 역사와 안정성
    • TrueNAS SCALE: Linux(Debian) 기반, ZFS + 쿠버네티스(Kubernetes) 앱 지원

    핵심은 ZFS(제트파일시스템)입니다. ZFS는 데이터 무결성 검증, 스냅샷, 압축, 중복 제거 등 엔터프라이즈급 기능을 모두 갖춘 파일시스템이에요. 실제로 기업 스토리지에서도 쓰이는 기술이거든요.

    직접 써본 느낌

    제가 처음 TrueNAS CORE를 설치했을 때, 솔직히 WebUI가 좀 무겁다는 느낌을 받았습니다. 근데 한 번 익숙해지니까 이게 진짜 탄탄하더라고요. ZFS 풀을 구성하고 스냅샷 자동화 설정해두면, 데이터 보호 측면에서는 진짜 안심이 됩니다. 실제로 디스크 하나가 죽었을 때 데이터 손실 없이 교체한 경험이 있어요. 그때 TrueNAS 믿음이 생겼습니다 ㅎㅎ.

    TrueNAS 장단점

    • ✅ ZFS의 강력한 데이터 무결성 보호
    • ✅ 스냅샷, 복제(Replication) 기능이 훌륭함
    • ✅ 기업급 안정성, 오랜 커뮤니티
    • ✅ SCALE 버전은 Docker/쿠버네티스 앱 지원
    • ⚠️ ZFS 특성상 ECC 메모리 권장 (없어도 쓸 수는 있지만…)
    • ⚠️ RAM을 꽤 먹음 — ZFS ARC 캐시가 메모리를 적극 활용함
    • ⚠️ 디스크를 나중에 개별로 추가하기가 까다로움 (풀 단위로 관리)
    • ⚠️ 초보자에게는 진입 장벽이 있음

    이런 분께 추천

    데이터 보호를 최우선으로 생각하시는 분, 스냅샷과 복제를 활용한 백업 체계를 구축하고 싶은 분, 그리고 서버 하드웨어에 투자할 여유가 있는 분께 딱 맞습니다.


    Unraid — 유연함의 끝판왕

    Unraid는 왜 독특한가

    Unraid는 Lime Technology라는 회사의 상용 소프트웨어입니다. 무료가 아니에요 — 라이선스 구매가 필요합니다. 근데 홈랩 커뮤니티에서 엄청난 인기를 끌고 있는 이유가 있습니다.

    Unraid의 핵심 철학은 “다른 크기의 디스크를 자유롭게 섞어 쓸 수 있다”는 겁니다. 일반 RAID는 같은 크기의 디스크로 묶어야 하는데, Unraid는 그냥 디스크를 하나씩 배열(Array)에 추가하면 돼요. 4TB 하나, 8TB 하나, 12TB 하나 — 이렇게 섞어도 됩니다. 패리티(Parity) 디스크가 보호해주는 구조거든요.

    그리고 Docker 컨테이너와 VM(가상머신) 지원이 정말 잘 되어 있어요. Community Applications(CA)라는 앱 스토어 개념이 있어서, 클릭 몇 번으로 Plex, Jellyfin, Home Assistant 같은 앱을 설치할 수 있습니다. 처음 써봤을 때 “이거 진짜 편하다”는 생각이 절로 들더라고요.

    Unraid의 WebUI — 디스크 배열(Array), Docker 컨테이너, VM을 하나의 인터페이스에서 관리할 수 있다

    Unraid 장단점

    • ✅ 다른 크기의 디스크를 자유롭게 혼합 가능
    • ✅ 디스크 개별 추가/제거가 매우 유연함
    • ✅ Docker + VM 지원이 홈랩에 최적화
    • ✅ Community Applications(커뮤니티 앱 스토어)로 앱 설치 간편
    • ✅ WebUI가 직관적이고 초보자도 접근하기 쉬움
    • ⚠️ 유료 라이선스 필요 (USB 기반 라이선스 구조)
    • ⚠️ 배열 디스크가 개별 파일시스템(XFS/BTRFS)으로 관리됨 — ZFS 같은 통합 무결성 검증 없음
    • ⚠️ 패리티 검사(Parity Check) 중에는 성능이 떨어짐
    • ⚠️ 오픈소스가 아님

    이런 분께 추천

    다양한 크기의 디스크를 점진적으로 추가하며 스토리지를 늘리고 싶은 분, NAS + 미디어 서버 + 홈 자동화를 한 박스에서 다 해결하고 싶은 분, 그리고 설정의 편의성을 중요하게 생각하는 분께 강력 추천합니다.


    OpenMediaVault — 가볍고 오픈소스, 입문자의 친구

    OMV는 어떤 OS인가

    OpenMediaVault(이하 OMV)는 Debian Linux 기반의 완전 오픈소스 NAS OS입니다. 무료예요. FreeNAS(현 TrueNAS)의 초기 개발자 중 한 명이 만든 프로젝트라는 배경이 있습니다.

    OMV의 가장 큰 특징은 가볍다는 겁니다. 라즈베리 파이(Raspberry Pi)에도 설치할 수 있어요. 실제로 홈랩 입문자들이 라즈베리 파이 4에 OMV를 올려서 간단한 파일 서버를 구축하는 사례가 많습니다. 저도 테스트용으로 Pi에 올려봤는데, 설치 자체는 정말 간단하더라고요.

    플러그인(Plugin) 시스템으로 기능을 확장하는 구조입니다. OMV-Extras라는 서드파티 플러그인 저장소를 추가하면 Docker(Portainer), ZFS, 다양한 기능들을 추가할 수 있어요.

    OMV 장단점

    • ✅ 완전 무료 오픈소스
    • ✅ 저사양 하드웨어에서도 동작 (라즈베리 파이 포함)
    • ✅ Debian 기반이라 Linux 친숙한 분들에게 편함
    • ✅ 플러그인으로 기능 확장 가능
    • ✅ 기본 NAS 기능(SMB, NFS, FTP, rsync)은 충실하게 지원
    • ⚠️ 고급 스토리지 기능(ZFS 등)은 플러그인으로 추가해야 함
    • ⚠️ Unraid나 TrueNAS에 비해 커뮤니티 규모가 작음
    • ⚠️ Docker 환경 구성이 다른 OS에 비해 번거로울 수 있음
    • ⚠️ 대규모 스토리지 환경에는 적합하지 않을 수 있음

    이런 분께 추천

    예산이 빠듯한 입문자, 라즈베리 파이나 구형 PC를 활용하고 싶은 분, 단순 파일 공유 서버로만 쓸 분께 딱입니다. Linux를 어느 정도 다뤄본 분이라면 더욱 편하게 쓸 수 있어요.


    세 OS 한눈에 비교 — 어디서 뭐가 다른지

    TrueNAS vs Unraid vs OpenMediaVault 주요 항목 비교 — 홈랩 NAS OS 선택의 핵심 기준을 정리했다

    항목 TrueNAS CORE/SCALE Unraid OpenMediaVault
    기반 OS FreeBSD / Debian Linux Slackware Linux Debian Linux
    가격 무료 (오픈소스) 유료 (라이선스 구매 필요) 무료 (오픈소스)
    파일시스템 ZFS (기본) XFS / BTRFS (배열), ZFS(캐시) EXT4, XFS, BTRFS, ZFS(플러그인)
    디스크 혼합 어려움 (풀 단위 관리) 매우 자유로움 ⭐ 가능 (개별 마운트)
    Docker 지원 SCALE 버전 지원 기본 내장, 매우 편리 ⭐ 플러그인으로 가능
    VM 지원 SCALE 버전 지원 기본 내장 제한적
    데이터 무결성 ZFS 기반, 매우 강력 ⭐ 패리티 보호, 보통 파일시스템 의존
    최소 RAM 8GB 이상 권장 4GB 이상 권장 1GB도 가능 (Pi 등)
    진입 장벽 중~상 중 (WebUI 직관적) 하~중
    적합한 사용자 데이터 보호 중시, 중급 이상 홈랩 올인원, 중급 입문자, 저사양 환경

    실제 설치 — 이것만 알면 삽질 줄어듭니다

    TrueNAS 설치 시 주의사항

    TrueNAS는 설치 디스크(OS용)와 데이터 디스크를 반드시 분리해야 합니다. OS용으로 SSD나 USB를 별도로 쓰세요. 저도 처음에 이걸 몰라서 데이터 디스크에 OS 깔려고 했다가 낭패를 봤습니다 ㅎㅎ.

    # TrueNAS 설치 후 ZFS 풀 상태 확인
    zpool status
    
    # 풀 생성 예시 (RAIDZ1, 3개 디스크)
    zpool create tank raidz1 /dev/da1 /dev/da2 /dev/da3

    ⚠️ ZFS와 ECC 메모리 논쟁: 공식적으로 iXsystems는 ECC 메모리를 권장합니다. 단, 실제로 ECC 없이 쓰는 홈랩 유저도 많아요. 중요한 데이터라면 ECC를 갖추는 게 마음 편합니다.

    Unraid 설치 시 주의사항

    Unraid는 USB 드라이브에서 부팅하는 독특한 구조입니다. 라이선스가 USB 장치에 묶이거든요. 고품질 USB를 쓰세요 — 싸구려 USB 썼다가 부팅 안 되는 상황이 생길 수 있습니다.

    # Unraid에서 Docker 컨테이너 상태 확인 (터미널)
    docker ps
    
    # Unraid 배열 상태 확인
    mdcmd status
    
    # 디스크 목록 확인
    lsblk

    💡 팁: Unraid에서 캐시 풀(Cache Pool)을 SSD로 구성하면, 빠른 쓰기 후 배열로 이동하는 방식으로 성능을 크게 높일 수 있어요. 이걸 Mover라고 부릅니다.

    OpenMediaVault 설치 시 주의사항

    OMV는 Debian 설치하듯 진행됩니다. 라즈베리 파이에 설치할 때는 공식 스크립트를 사용해요.

    # 라즈베리 파이에 OMV 설치 스크립트 (공식 지원)
    wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
    
    # OMV-Extras 플러그인 추가 (Docker 등 확장 기능용)
    wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | sudo bash
    
    # OMV 서비스 상태 확인
    systemctl status openmediavault-engined

    ⚠️ OMV 메이저 버전 업그레이드 시 플러그인 호환성 문제가 간혹 발생합니다. 업그레이드 전에는 꼭 백업하세요.


    설치 후 기본 검증 — 이것만 확인하세요

    NAS OS 설치 완료 후 WebUI에서 스토리지 풀 상태, 공유 폴더, 서비스 상태를 확인하는 화면

    어떤 OS를 설치했든, 기본 동작 확인은 이렇게 해보세요.

    1. 스토리지 풀/배열 상태 확인: 모든 디스크가 정상적으로 인식되었는지, RAID/패리티 구성이 올바른지 확인
    2. SMB 공유(Samba) 테스트: Windows 파일 탐색기에서 \\NAS-IP\공유폴더로 접근되는지
    3. NFS 공유 테스트: Linux 클라이언트에서 마운트 확인
    4. 읽기/쓰기 속도 테스트: 대용량 파일 복사로 기본 성능 확인
    5. 스냅샷 또는 백업 설정: 데이터 보호 체계가 실제로 동작하는지
    # Linux에서 NFS 마운트 테스트
    sudo mount -t nfs NAS-IP:/mnt/pool/share /mnt/test
    df -h /mnt/test
    
    # 간단한 쓰기 속도 테스트
    dd if=/dev/zero of=/mnt/test/testfile bs=1G count=1 oflag=direct
    
    # SMB 연결 테스트 (smbclient)
    smbclient //NAS-IP/share -U username

    여기까지 다 됐다면 🎉 기본 설정은 완료입니다. 다음은 서비스별 세부 튜닝과 백업 자동화 설정이 남아 있어요. 이 부분은 다음 글에서 각 OS별로 자세히 다룰 예정입니다.


    자주 묻는 질문 (FAQ)

    Q. TrueNAS와 Unraid 중 뭐가 더 낫나요?

    데이터 보호와 스토리지 신뢰성이 최우선이면 TrueNAS, 다양한 앱을 돌리는 올인원 홈서버를 원하고 디스크를 유연하게 추가하고 싶다면 Unraid가 더 맞습니다. 둘 다 훌륭한 선택이에요.

    Q. OpenMediaVault는 홈랩에서 쓰기 부족하지 않나요?

    단순 파일 공유 목적이라면 전혀 부족하지 않습니다. 단, 고급 스토리지 기능이나 Docker 환경이 복잡해지면 다른 OS로 넘어가는 분들도 있어요. 입문용으로는 충분히 좋습니다.

    Q. 나중에 OS를 바꿀 수 있나요?

    기술적으로는 가능하지만, 데이터 마이그레이션이 필요합니다. 특히 ZFS 풀은 TrueNAS에서 Unraid로 바로 이전이 안 돼요. 처음 선택을 신중하게 하시는 게 좋습니다.

    Q. 하드웨어 최소 사양은 어떻게 되나요?

    OpenMediaVault는 라즈베리 파이 4(4GB RAM)에서도 잘 돌아갑니다. TrueNAS는 8GB RAM 이상, Unraid는 4GB 이상을 권장하는데, 실제로 Docker나 VM을 많이 돌리면 16GB 이상이 편합니다.


    마무리 — 결국 정답은 “내 상황에 맞는 것”

    13년 동안 다양한 NAS OS를 써온 결론을 한 줄로 정리하면 이렇습니다.

    “데이터 보호 최우선 → TrueNAS, 유연한 올인원 홈랩 → Unraid, 가볍게 시작 → OpenMediaVault”

    사실 어떤 OS를 선택하든, 제대로 백업 체계를 갖추는 게 가장 중요합니다. NAS OS가 아무리 좋아도 백업이 없으면 소용없거든요. 3-2-1 백업 규칙(원본 1개 + 로컬 사본 1개 + 오프사이트 사본 1개)은 어떤 OS에서든 지켜주세요.

    저는 현재 메인 NAS는 TrueNAS SCALE로, 미디어 서버 겸 실험용 박스는 Unraid로 운영하고 있습니다. 두 개를 같이 쓰는 것도 방법이에요 ㅎㅎ.

    다음 글에서는 TrueNAS SCALE에서 ZFS 스냅샷 자동화와 원격 복제 설정하는 방법을 자세히 다룰 예정입니다. 궁금한 점은 댓글로 남겨주세요. 제가 직접 경험한 범위 안에서는 최대한 답변 드리겠습니다! 😄