13년차의 서버실

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

[태그:] 홈서버

  • [NAS] Docker 컨테이너 5가지 비교 및 설치 가이드: Portainer부터 Vaultwarden까지

    NAS에 Docker 설치했는데, 뭘 올려야 할지 모르겠다고요?

    저도 처음에 딱 그랬거든요. Synology NAS에 Docker(도커, 컨테이너 기반 가상화 플랫폼)를 설치하고 나서 한참 멍하니 화면만 바라봤었어요. “이제 뭘 하지?” 하는 느낌 있잖아요. 근데 막상 하나씩 써보기 시작하니까, 진짜 NAS가 단순한 저장소에서 홈 서버로 완전히 탈바꿈하더라고요.

    이 글에서는 제가 13년 넘게 인프라를 운영하면서, 홈랩에서 실제로 돌려보고 “이건 진짜 쓸 만하다”고 느낀 NAS Docker 활용을 위한 인기 컨테이너 5가지를 비교하고 설치 방법까지 정리해 드릴게요. 특히 Docker 컨테이너를 처음 다루는 분들께 도움이 될 거예요.

    ▲ NAS 위에 Docker 컨테이너들이 올라가는 전체 구조 — 하나의 NAS가 여러 서비스를 동시에 제공합니다

    NAS Docker, 왜 써야 하나요?

    쉽게 말해, Docker는 “앱을 격리된 박스 안에 담아서 실행하는 기술”이에요. NAS에서 Docker를 활용하면 이런 게 가능해집니다:

    • 기존 NAS OS(DSM 등)에 영향 없이 별도 앱을 설치
    • 설치/삭제가 깔끔하고 충돌이 거의 없음
    • 오픈소스 서비스를 공식 패키지 없이도 자유롭게 설치
    • 업데이트, 백업, 이전이 훨씬 편함

    Synology NAS에서는 DSM의 패키지 센터에서 “Container Manager”라는 이름으로 Docker를 설치할 수 있어요. QNAP은 “Container Station”이라는 이름으로 제공하고 있고요. 둘 다 GUI(그래픽 인터페이스)를 제공하지만, 저는 개인적으로 SSH 터미널로 직접 명령어를 치는 게 훨씬 편하더라고요. 설정 파일도 관리하기 좋고요.

    NAS Docker 인기 컨테이너 5가지 비교

    일단 전체 비교를 한눈에 보고 시작하는 게 좋을 것 같아서 표로 정리했어요.

    컨테이너 카테고리 주요 용도 리소스 사용 난이도
    Portainer 관리 도구 Docker 컨테이너 GUI 관리 매우 낮음 ⭐ 쉬움
    Nginx Proxy Manager 리버스 프록시 도메인/SSL 인증서 관리 낮음 ⭐⭐ 보통
    Jellyfin 미디어 서버 영상/음악 스트리밍 중간~높음 ⭐⭐ 보통
    Nextcloud 클라우드 스토리지 자체 클라우드 저장소 구축 중간 ⭐⭐⭐ 어려움
    Vaultwarden 비밀번호 관리 Bitwarden 호환 셀프호스트 매우 낮음 ⭐⭐ 보통

    이제 하나씩 살펴볼게요. 각 컨테이너별 설치 명령어도 함께 드릴게요.

    1. Portainer — Docker 관리의 시작점

    Portainer는 Docker 컨테이너를 웹 브라우저에서 GUI로 관리할 수 있게 해주는 도구예요. NAS Docker를 시작하는 분들한테 제일 먼저 추천하는 거거든요. 설치도 제일 쉽고, 이게 있으면 나머지 컨테이너 관리가 훨씬 편해지니까요.

    실제로 써보니까, 어떤 컨테이너가 얼마나 CPU/메모리를 쓰는지 한눈에 보이고, 로그도 바로 확인할 수 있어서 문제 해결할 때 정말 유용하더라고요. 특히 컨테이너가 자동으로 재시작되지 않을 때 원인을 빨리 찾을 수 있어요.

    Portainer 설치 명령어

    # Portainer 데이터 저장용 볼륨 생성
    docker volume create portainer_data
    
    # Portainer 컨테이너 실행
    docker run -d \
      -p 8000:8000 \
      -p 9443:9443 \
      --name portainer \
      --restart=always \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v portainer_data:/data \
      portainer/portainer-ce:latest

    설치 후 https://NAS-IP:9443으로 접속하면 초기 설정 화면이 뜹니다. 관리자 계정을 만들고 나면 끝이에요. 진짜 간단해요.

    💡 팁: Synology의 Container Manager를 쓰고 있더라도 Portainer를 함께 올려놓으면 훨씬 세밀한 관리가 가능합니다. 두 도구를 병행해도 충돌이 없거든요.

    2. Nginx Proxy Manager — 도메인과 SSL을 한 방에

    이건 제가 홈랩에서 정말 애용하는 Docker 컨테이너예요. Nginx Proxy Manager는 리버스 프록시(외부 요청을 내부 서비스로 전달해주는 역할)를 GUI로 쉽게 설정하고, Let’s Encrypt SSL 인증서까지 자동으로 발급·갱신해줘요.

    처음엔 “리버스 프록시가 뭔데?” 싶었는데, 쉽게 말하면 이런 거예요. jellyfin.내도메인.com, nextcloud.내도메인.com 이렇게 서브도메인마다 다른 서비스로 연결해주는 교통 정리 역할이에요. HTTPS(암호화 통신)도 자동으로 붙여주고요.

    Nginx Proxy Manager docker-compose 설정

    version: '3.8'
    services:
      app:
        image: 'jc21/nginx-proxy-manager:latest'
        container_name: nginx-proxy-manager
        restart: unless-stopped
        ports:
          - '80:80'
          - '81:81'   # 관리 웹 UI 포트
          - '443:443'
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt

    위 내용을 docker-compose.yml 파일로 저장하고 아래 명령어를 실행하면 됩니다:

    docker compose up -d

    설치 후 http://NAS-IP:81로 접속하면 관리 UI가 뜨고요. 초기 계정은 [email protected] / changeme인데, 로그인하자마자 바로 바꿔야 해요. ⚠️ 이거 그냥 두면 정말 위험합니다. 누구나 접속해서 설정을 바꿀 수 있거든요.

    ▲ Nginx Proxy Manager에서 프록시 호스트를 추가하고 SSL 인증서를 자동 발급하는 화면

    3. Jellyfin — 나만의 미디어 서버 만들기

    Jellyfin은 오픈소스 미디어 서버예요. Plex와 비슷한데, 완전 무료에 계정 없이도 쓸 수 있다는 게 큰 장점이에요. NAS에 쌓아둔 영화, 드라마, 음악을 스마트TV, 폰, 태블릿에서 스트리밍할 수 있거든요.

    제가 직접 써보니까, 자막 자동 검색 기능이랑 메타데이터(영화 포스터, 줄거리 등) 자동 수집이 꽤 잘 되더라고요. 다만 하드웨어 트랜스코딩(영상 포맷 변환)은 NAS CPU/GPU 성능에 따라 다르니까 이 부분은 좀 알아보고 써야 해요.

    Jellyfin docker-compose 설정

    version: '3.8'
    services:
      jellyfin:
        image: jellyfin/jellyfin:latest
        container_name: jellyfin
        restart: unless-stopped
        ports:
          - '8096:8096'
        volumes:
          - ./config:/config
          - ./cache:/cache
          - /volume1/media:/media:ro  # NAS 미디어 폴더 경로로 수정하세요
        environment:
          - TZ=Asia/Seoul

    ⚠️ 주의사항: /volume1/media 경로는 본인 NAS의 실제 미디어 폴더 경로로 반드시 바꿔야 합니다. Synology 기준으로는 보통 /volume1/ 아래에 있어요.

    4. Nextcloud — 나만의 클라우드 저장소 구축

    Nextcloud는 자체 클라우드 스토리지를 구축할 수 있는 오픈소스 플랫폼이에요. 구글 드라이브, 드롭박스 같은 서비스를 내 NAS 위에 직접 올리는 거라고 보면 돼요. 파일 공유, 캘린더, 연락처, 노트 등 다양한 기능을 제공해요.

    솔직히 말하면, 다섯 가지 중에 설치가 제일 까다롭습니다. 저도 처음에 삽질을 좀 했어요. 데이터베이스(MariaDB 또는 PostgreSQL)를 함께 올려야 하거든요.

    Nextcloud + MariaDB docker-compose 설정

    version: '3.8'
    services:
      db:
        image: mariadb:10.11
        container_name: nextcloud-db
        restart: unless-stopped
        environment:
          - MYSQL_ROOT_PASSWORD=강력한루트비밀번호
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - MYSQL_PASSWORD=강력한비밀번호
        volumes:
          - ./db:/var/lib/mysql
    
      nextcloud:
        image: nextcloud:latest
        container_name: nextcloud
        restart: unless-stopped
        ports:
          - '8080:80'
        depends_on:
          - db
        environment:
          - MYSQL_HOST=db
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - MYSQL_PASSWORD=강력한비밀번호
          - TZ=Asia/Seoul
        volumes:
          - ./data:/var/www/html

    ⚠️ 꼭 확인하세요: 비밀번호는 절대 예시 그대로 쓰지 마세요. 복잡한 문자열로 바꿔야 해요. 그리고 Nextcloud는 신뢰된 도메인(trusted_domain) 설정을 별도로 해줘야 외부에서 접속이 돼요. 처음 설치하고 나서 “Access through untrusted domain” 오류가 뜨면 config/config.php 파일에서 trusted_domains 항목을 수정해줘야 합니다.

    5. Vaultwarden — 비밀번호 관리, 직접 호스팅하기

    Vaultwarden은 Bitwarden과 호환되는 비밀번호 관리 서버를 셀프호스팅할 수 있게 해주는 프로젝트예요. Bitwarden 공식 서버 대신 내 NAS에서 직접 돌리는 거라고 보면 돼요.

    이거 설치하고 나서 진짜 감탄했어요. 리소스를 엄청 적게 먹으면서도, Bitwarden 공식 앱이나 브라우저 확장 프로그램을 그대로 연결해서 쓸 수 있거든요. 비밀번호가 내 서버에만 저장되니까 보안 측면에서도 마음이 편하고요.

    Vaultwarden docker-compose 설정

    version: '3.8'
    services:
      vaultwarden:
        image: vaultwarden/server:latest
        container_name: vaultwarden
        restart: unless-stopped
        ports:
          - '8888:80'
        volumes:
          - ./vw-data:/data
        environment:
          - TZ=Asia/Seoul
          - SIGNUPS_ALLOWED=true  # 초기 계정 생성 후 false로 변경 권장

    💡 중요 포인트: Vaultwarden은 반드시 HTTPS 환경에서만 제대로 동작해요. 앞서 설치한 Nginx Proxy Manager와 조합해서 SSL을 붙여줘야 합니다. HTTP로는 브라우저 확장 프로그램 연결이 안 되더라고요. 저도 이거 몰라서 한참 헤맸었어요.

    ▲ Portainer에서 5개의 컨테이너가 모두 정상 실행(Running) 상태인 것을 확인하는 화면

    ⚠️ NAS Docker 활용 시 자주 겪는 문제들

    포트 충돌 문제

    NAS 앱 설치를 많이 해두셨다면, 포트 번호가 겹칠 수 있어요. 예를 들어 Synology의 기본 웹 서비스가 80, 443 포트를 이미 쓰고 있을 수 있거든요. 이럴 때는 컨테이너의 호스트 포트 번호를 바꿔주면 됩니다. 8080:80처럼 앞 숫자(호스트 포트)를 안 쓰는 번호로 바꿔주세요.

    볼륨 권한 문제

    NAS에서 Docker 볼륨을 마운트할 때 권한 오류가 나는 경우가 꽤 있어요. 특히 Synology에서 Permission denied 오류가 뜨면, 해당 폴더의 소유자와 권한을 확인해보세요.

    # 폴더 소유자 확인
    ls -la /volume1/docker/
    
    # 권한 수정 (예시)
    chown -R 1000:1000 /volume1/docker/nextcloud/

    메모리 부족

    NAS 램이 4GB 이하라면, 컨테이너를 너무 많이 올리면 전체 시스템이 느려질 수 있어요. 특히 Nextcloud + MariaDB 조합은 생각보다 메모리를 좀 먹거든요. 처음에는 2~3개부터 시작하는 걸 추천드려요.

    설치 전 체크리스트

    1. NAS에 Docker(Container Manager 또는 Container Station) 설치 완료 확인
    2. SSH 접속 활성화 (명령어 방식 사용 시)
    3. Docker 저장 경로 설정 — 가급적 빠른 볼륨(SSD 캐시 있는 풀)에 배치
    4. 포트 충돌 여부 사전 확인
    5. 외부 접속 필요 시 공유기 포트포워딩 설정
    6. 도메인 보유 여부 확인 (Nginx Proxy Manager, Vaultwarden 사용 시 필요)

    ▲ NAS Docker 인기 컨테이너 5가지 용도, 난이도, 리소스 사용량 한눈에 비교

    자주 묻는 질문 (FAQ)

    Q. Synology NAS에서 Docker를 못 쓰는 모델이 있나요?

    네, 있어요. Synology 기준으로 Intel/AMD x86-64 아키텍처 모델에서만 Container Manager(Docker)가 지원됩니다. ARM 기반의 일부 보급형 모델(J 시리즈 등)은 지원이 제한될 수 있으니, 설치 전에 Synology 공식 호환성 페이지에서 확인해보세요.

    Q. docker-compose 명령어가 안 먹혀요.

    최신 Docker에서는 docker-compose(하이픈 있는 구버전) 대신 docker compose(공백, 플러그인 방식)를 사용해요. 둘 다 안 된다면 Docker Compose 플러그인이 설치됐는지 확인해보세요.

    Q. 컨테이너가 재부팅 후 자동 시작이 안 돼요.

    restart: unless-stopped 옵션이 docker-compose에 들어있는지 확인하세요. 명령어 방식으로 실행했다면 --restart=unless-stopped 옵션을 추가해야 합니다.

    NAS Docker 활용, 이렇게 시작하세요

    오늘 소개한 다섯 가지 컨테이너 중에서 처음 시작하는 분들께는 이 순서를 추천드려요:

    1. Portainer 먼저 설치 → Docker 전체 현황 파악
    2. Nginx Proxy Manager 설치 → 도메인/SSL 환경 구축
    3. 그다음 원하는 서비스(Jellyfin, Nextcloud, Vaultwarden) 순서대로 추가

    처음부터 다 설치하려고 하면 꼬이기 쉬워요. 저도 처음에 욕심 부리다가 포트 다 꼬이고 한참 삽질했거든요. 하나씩 안정화시키면서 늘려가는 게 훨씬 낫더라고요.

    Docker Compose를 사용하면 설정 파일 하나로 관리가 되니까, 처음부터 compose 방식에 익숙해지는 걸 강력히 권장합니다. 나중에 마이그레이션이나 백업할 때 훨씬 편해요.

    다음 글에서는 Nginx Proxy Manager와 Let’s Encrypt를 연동해서 외부에서 안전하게 홈서버에 접속하는 방법을 더 자세히 다룰 예정이에요. 이 글에서 설치한 컨테이너들을 외부에서 HTTPS로 접근하게 만드는 실전 가이드가 될 거예요. 🎉

    궁금한 점이나 삽질 경험 있으시면 댓글로 나눠주세요. 같이 해결해봐요!

  • [HomeLabs] 라즈베리파이 5 홈랩 구축: 저전력 미니PC 활용 완전 가이드

    전기세 걱정 없는 홈서버, 라즈베리파이 5로 시작해보세요

    홈랩(Home Lab)을 처음 꾸릴 때 저도 똑같은 고민을 했거든요. “중고 서버 살까? 미니PC 살까?” 근데 막상 중고 타워 서버를 들여놨더니 소음이 장난이 아니더라고요. 한밤중에 서버실(사실 제 방 한 켠이지만) 앞을 지나갈 때마다 데이터센터 온 느낌이랄까요. 그리고 전기 요금 고지서 받아보고 진짜 식겁했습니다.

    그래서 찾게 된 게 라즈베리파이 5(Raspberry Pi 5) 홈랩이에요. 저전력 홈서버로 이만한 게 없더라고요. 처음엔 “이 작은 게 뭘 할 수 있겠어?” 싶었는데, 막상 세팅하고 나니까 놀라웠습니다. 이 글에서는 제가 직접 구축하면서 겪은 삽질과 함께, 라즈베리파이 5 홈랩을 제대로 활용하는 방법을 공유해 드릴게요.

    라즈베리파이 5 기반 홈랩의 전체 구성도 — 단일 보드 컴퓨터 하나로 이렇게 많은 서비스를 돌릴 수 있습니다.

    라즈베리파이 5가 홈랩에 적합한 이유

    라즈베리파이 시리즈는 워낙 유명하지만, 5세대로 넘어오면서 진짜 “쓸만한” 홈서버로 거듭났어요. 이전 세대와 비교하면 체감 성능 차이가 꽤 납니다.

    라즈베리파이 5의 주요 스펙을 간단히 정리하면:

    • CPU: Broadcom BCM2712, Arm Cortex-A76 쿼드코어
    • RAM: 4GB 또는 8GB LPDDR4X (홈랩용이라면 8GB 추천)
    • 스토리지 인터페이스: PCIe 2.0 슬롯 추가 (NVMe SSD 연결 가능)
    • 네트워크: 기가비트 이더넷
    • USB: USB 3.0 포트 2개, USB 2.0 포트 2개

    여기서 제가 특히 주목한 건 PCIe 슬롯이에요. 이전 세대까지는 microSD 카드에 전적으로 의존하거나 USB 방식 외장 SSD를 써야 했거든요. 5세대부터는 공식 HAT(Hardware Attached on Top, 확장 보드)나 서드파티 어댑터를 통해 NVMe SSD를 직접 연결할 수 있어요. 속도 차이가 체감상 확연합니다.

    저전력 홈서버로서의 장점

    • ✅ 소음 없음: 액티브 쿨러를 달아도 일반 PC 대비 훨씬 조용
    • ✅ 저전력: 일반 데스크탑 PC 대비 전력 소모가 현저히 낮음
    • ✅ 공간 효율: 손바닥 크기라 어디든 놓을 수 있음
    • ✅ 활발한 커뮤니티: 문제 생기면 검색하면 다 나옴 (이게 진짜 중요해요)
    • ✅ 합리적인 가격: 진입 장벽이 낮음

    물론 단점도 있어요. x86 아키텍처가 아닌 ARM이라 일부 소프트웨어는 ARM 빌드를 따로 찾아야 하고, 고성능 컴퓨팅 작업에는 한계가 있습니다. 하지만 홈랩 용도, 특히 네트워크 서비스, 모니터링, 미디어 서버, 자동화 같은 작업에는 충분하더라고요.

    준비물 체크리스트

    본격적으로 시작하기 전에 뭐가 필요한지 정리해 드릴게요. 제가 처음에 이것저것 빠뜨려서 두 번 주문했던 기억이 나서 말이에요. ㅎㅎ

    항목 필수 여부 비고
    라즈베리파이 5 (8GB 모델 권장) ✅ 필수 홈랩이라면 8GB로
    공식 전원 어댑터 (27W USB-C PD) ✅ 필수 5세대는 전원 요구사항 달라짐
    microSD 카드 (32GB 이상) 또는 NVMe SSD ✅ 필수 NVMe 강력 추천
    케이스 + 쿨러 권장 발열 관리 필요
    NVMe HAT (M.2 어댑터) 선택 NVMe SSD 쓸 경우 필요
    이더넷 케이블 권장 Wi-Fi보다 유선 안정적

    💡 팁: 라즈베리파이 5는 공식 27W USB-C PD 어댑터를 권장합니다. 전력이 부족하면 부팅 중 경고 메시지가 뜨거나 불안정해질 수 있어요. 저도 처음에 아무 충전기나 꽂았다가 낭패 봤습니다.

    OS 설치 및 초기 설정

    자, 이제 본격적으로 세팅 시작해볼게요. 생각보다 어렵지 않습니다.

    1단계: Raspberry Pi OS 설치

    가장 쉬운 방법은 Raspberry Pi Imager를 사용하는 거예요. 공식 도구라 믿을 수 있고, 설치 전에 SSH 활성화, Wi-Fi 설정, 사용자 계정 설정까지 다 할 수 있거든요.

    1. Raspberry Pi 공식 사이트에서 Raspberry Pi Imager 다운로드
    2. OS 선택: Raspberry Pi OS Lite (64-bit) — 홈서버용이라면 GUI 없는 Lite 버전이 리소스 효율적
    3. 고급 설정(⚙️ 아이콘)에서 SSH 활성화, 사용자명/비밀번호 설정
    4. microSD 또는 NVMe에 Write

    설치 완료 후 첫 부팅, SSH로 접속해서 기본 설정부터 해줍니다.

    # 시스템 업데이트 (항상 첫 번째로 해야 할 일)
    sudo apt update && sudo apt upgrade -y
    
    # 한국 타임존 설정
    sudo timedatectl set-timezone Asia/Seoul
    
    # 호스트명 변경 (나중에 여러 대 운영할 때 헷갈리지 않으려면)
    sudo hostnamectl set-hostname homelab-pi5
    
    # 자동 보안 업데이트 설치
    sudo apt install unattended-upgrades -y
    sudo dpkg-reconfigure --priority=low unattended-upgrades

    2단계: 고정 IP 설정

    홈서버는 IP가 바뀌면 진짜 골치 아파요. 라우터에서 DHCP 예약을 하거나, 직접 고정 IP를 설정해 줍니다. 저는 라우터 DHCP 예약 방식을 선호하는데, 그게 관리하기 편하더라고요.

    직접 설정하고 싶다면 NetworkManager를 씁니다.

    # 현재 연결 이름 확인
    nmcli connection show
    
    # 고정 IP 설정 (예: 192.168.1.100)
    nmcli connection modify "Wired connection 1" \
      ipv4.method manual \
      ipv4.addresses 192.168.1.100/24 \
      ipv4.gateway 192.168.1.1 \
      ipv4.dns "1.1.1.1,8.8.8.8"
    
    # 적용
    nmcli connection up "Wired connection 1"

    3단계: Docker 설치

    홈랩의 핵심은 Docker(도커, 컨테이너 기반 가상화 플랫폼)예요. 여러 서비스를 격리된 환경에서 깔끔하게 관리할 수 있거든요. ARM64 지원이 많이 좋아져서 이제는 대부분의 인기 이미지가 ARM64 빌드를 제공합니다.

    # 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

    Docker Compose도 함께 설치해 줍니다. 여러 컨테이너를 한 번에 관리할 때 필수예요.

    # Docker Compose V2는 Docker 설치 시 플러그인으로 포함됨
    # 확인
    docker compose version

    Docker 컨테이너로 구성한 홈랩 서비스 스택 — 각 서비스가 독립된 컨테이너로 동작하는 구조입니다.

    핵심 서비스 구축: 실전 Docker Compose 설정

    이제 진짜 재미있는 부분이에요. 어떤 서비스를 돌릴지가 홈랩의 핵심이거든요. 제가 실제로 운영 중인 서비스 스택을 공유해 드릴게요.

    홈랩 필수 서비스 구성

    # ~/homelab/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
    
      # Pi-hole: 네트워크 전체 광고 차단 DNS 서버
      pihole:
        image: pihole/pihole:latest
        container_name: pihole
        restart: unless-stopped
        ports:
          - "53:53/tcp"
          - "53:53/udp"
          - "8080:80/tcp"
        environment:
          TZ: 'Asia/Seoul'
          WEBPASSWORD: 'your_secure_password'  # 반드시 변경하세요!
        volumes:
          - pihole_data:/etc/pihole
          - dnsmasq_data:/etc/dnsmasq.d
        cap_add:
          - NET_ADMIN
    
      # 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:
      pihole_data:
      dnsmasq_data:
      uptime_kuma_data:
    # 서비스 시작
    cd ~/homelab
    docker compose up -d
    
    # 실행 상태 확인
    docker compose ps
    
    # 로그 확인
    docker compose logs -f

    🎉 이렇게 하면 세 가지 핵심 서비스가 한 번에 뜹니다. Portainer(포테이너)로 컨테이너를 웹에서 관리하고, Pi-hole(파이홀)로 집 안 모든 기기의 광고를 차단하고, Uptime Kuma(업타임 쿠마)로 서비스 가용성을 모니터링할 수 있어요.

    홈 미디어 서버 추가 (선택)

    미디어 서버도 많이들 구성하시는데, Jellyfin(젤리핀, 오픈소스 미디어 서버)이 ARM64 지원도 잘 되고 무료라서 추천드려요.

    # docker-compose.yml에 추가
      jellyfin:
        image: jellyfin/jellyfin:latest
        container_name: jellyfin
        restart: unless-stopped
        network_mode: host  # DLNA 사용 시 host 모드 권장
        volumes:
          - jellyfin_config:/config
          - jellyfin_cache:/cache
          - /mnt/media:/media:ro  # 미디어 파일 경로
        environment:
          - TZ=Asia/Seoul

    ⚠️ 삽질 경험담: 이것만 주의하세요

    13년 경력이라도 새 장비 세팅할 때는 항상 뭔가 하나씩 걸리더라고요. 제가 겪은 주요 문제들을 공유해 드릴게요.

    문제 1: 발열 관리

    라즈베리파이 5는 이전 세대보다 성능이 오른 만큼 발열도 있어요. 케이스 없이 쓰다가 CPU 쓰로틀링(Throttling, 과열 시 성능 제한)이 걸리는 걸 모니터링으로 발견했습니다.

    # CPU 온도 확인
    vcgencmd measure_temp
    
    # 실시간 모니터링
    watch -n 2 vcgencmd measure_temp
    
    # 쓰로틀링 여부 확인 (0x0이면 정상)
    vcgencmd get_throttled

    액티브 쿨러(팬)를 달거나, 방열판이 포함된 케이스를 사용하는 게 좋아요. 라즈베리파이 공식 액티브 쿨러 제품도 있고, 서드파티 케이스들도 많습니다.

    문제 2: ARM64 이미지 없는 경우

    가끔 원하는 Docker 이미지가 ARM64(aarch64)를 지원 안 하는 경우가 있어요. 이럴 때 확인하는 방법:

    # 이미지 아키텍처 확인
    docker manifest inspect [이미지명] | grep architecture
    
    # 만약 arm64 없으면 대안 이미지 검색 필요
    # 또는 QEMU 에뮬레이션 (성능 저하 있음)
    docker run --platform linux/amd64 [이미지명]

    ⚠️ QEMU 에뮬레이션으로 x86 이미지를 돌리면 성능이 많이 떨어집니다. 가능하면 ARM64 네이티브 이미지를 쓰세요.

    문제 3: microSD 카드 수명 문제

    Docker를 microSD에 올리고 로그를 막 쌓다 보면 카드 수명이 급격히 줄어요. 실제로 저 첫 번째 카드 6개월 만에 날렸습니다. 해결책은 두 가지예요.

    • NVMe SSD로 부팅 드라이브 변경 (가장 좋은 방법)
    • 로그 설정 최적화로 쓰기 횟수 줄이기
    # Docker 로그 크기 제한 설정
    # /etc/docker/daemon.json 생성 또는 수정
    sudo nano /etc/docker/daemon.json
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }
    # Docker 재시작으로 적용
    sudo systemctl restart docker

    운영 결과 확인: 이렇게 쓰고 있습니다

    세팅 완료 후 실제로 어떻게 돌아가는지 확인해 보는 시간이에요. 드디어 됐다! 싶은 순간이기도 하고요.

    시스템 리소스 모니터링

    # 전체 시스템 상태 한눈에 보기
    htop
    
    # Docker 컨테이너별 리소스 사용량
    docker stats
    
    # 디스크 사용량
    df -h
    
    # 메모리 상세
    free -h

    제 경우 위에 소개한 서비스들을 다 올려도 RAM 사용량이 여유 있더라고요. 8GB 모델이라면 훨씬 더 여유롭게 쓸 수 있어요.

    Uptime Kuma 모니터링 대시보드 — 홈랩의 모든 서비스 상태를 한눈에 확인할 수 있습니다.

    자동 시작 설정

    정전이나 재부팅 후에도 서비스가 자동으로 올라오도록 설정해 줍니다.

    # Docker 서비스 자동 시작
    sudo systemctl enable docker
    
    # docker-compose를 systemd 서비스로 등록
    sudo nano /etc/systemd/system/homelab.service
    [Unit]
    Description=Homelab Docker Compose
    Requires=docker.service
    After=docker.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    WorkingDirectory=/home/pi/homelab
    ExecStart=/usr/bin/docker compose up -d
    ExecStop=/usr/bin/docker compose down
    TimeoutStartSec=0
    
    [Install]
    WantedBy=multi-user.target
    # 서비스 등록 및 활성화
    sudo systemctl daemon-reload
    sudo systemctl enable homelab.service
    sudo systemctl start homelab.service

    다음 단계로 확장하기

    기본 세팅이 끝났다면 이제 더 재미있는 것들을 추가할 수 있어요. 제가 다음 글에서 다룰 예정인 주제들이기도 합니다.

    추천 확장 서비스 목록

    서비스 용도 ARM64 지원
    Nginx Proxy Manager 리버스 프록시, SSL 인증서 관리 ✅
    Grafana + Prometheus 메트릭 수집 및 시각화 대시보드 ✅
    Home Assistant 스마트홈 자동화 허브 ✅
    Vaultwarden 자체 호스팅 비밀번호 관리자 ✅
    Nextcloud 개인 클라우드 스토리지 ✅
    WireGuard VPN 서버 ✅

    💡 WireGuard(와이어가드, 경량 VPN 프로토콜)를 설정해 두면 외출 중에도 집 홈랩에 안전하게 접속할 수 있어요. 이건 다음 글에서 자세히 다루겠습니다.

    라즈베리파이 5 홈랩에서 활용 가능한 서비스 비교 — 용도에 맞게 골라서 구성해 보세요.

    자주 묻는 질문 (FAQ)

    Q. 라즈베리파이 5 홈랩, 24시간 켜놔도 되나요?

    네, 됩니다. 저도 항상 켜놓고 있어요. 다만 발열 관리(케이스 + 쿨러)와 안정적인 전원 공급이 중요합니다. UPS(무정전 전원 장치)까지 달면 더욱 안정적이에요.

    Q. microSD vs NVMe SSD, 어떤 게 낫나요?

    홈랩 용도라면 NVMe SSD를 강력히 추천드려요. 속도도 빠르고 수명도 훨씬 길거든요. 처음 세팅 비용이 조금 더 들지만, microSD 갈아 엎는 수고를 생각하면 훨씬 이득입니다.

    Q. 라즈베리파이 5 8GB vs 4GB, 뭐가 더 나을까요?

    홈랩 목적이라면 8GB를 권장합니다. Docker 컨테이너 여러 개 올리다 보면 4GB는 빠듯해질 수 있어요. 처음부터 8GB로 가는 게 나중에 후회가 없더라고요.

    마무리: 작게 시작해서 크게 배웁니다

    라즈베리파이 5 홈랩, 생각보다 어렵지 않죠? 처음엔 “이게 진짜 되겠어?” 싶었는데, 막상 세팅하고 나면 진짜 신세계가 열려요.

    제가 13년 동안 인프라 엔지니어로 일하면서 느낀 건, 홈랩이야말로 가장 빠르게 실력이 느는 방법이라는 거예요. 회사 서버는 함부로 건드릴 수 없으니까요. 집에서 마음껏 실험하고, 망가뜨려 보고, 복구해 보는 과정에서 진짜 실력이 쌓입니다.

    오늘 다룬 내용을 정리하면:

    • ✅ 라즈베리파이 5의 하드웨어 특성과 홈랩 적합성 이해
    • ✅ OS 설치 및 기본 시스템 설정
    • ✅ Docker 기반 서비스 스택 구성 (Portainer, Pi-hole, Uptime Kuma)
    • ✅ 발열, ARM64 호환성, 스토리지 수명 등 주요 이슈 해결
    • ✅ 시스템 안정성을 위한 자동 시작 설정

    다음 글에서는 Nginx Proxy Manager와 Let’s Encrypt를 활용한 HTTPS 설정을 다룰 예정이에요. 외부에서 홈랩 서비스에 안전하게 접속하는 방법인데, 이게 또 재미있거든요. 기대해 주세요! 😄

    궁금한 점이나 다른 삽질 경험이 있으시면 댓글로 공유해 주세요. 같이 고민해 봐요!

  • [NAS] SMB 다중 사용자 동시 접속 시 성능 저하 해결 방안

    [NAS] SMB 다중 사용자 동시 접속 시 성능 저하 해결 방안

    퇴근 시간에 NAS가 느려지는 이유 — SMB 다중 사용자 동시 접속 문제

    혹시 이런 경험 있으신가요? 혼자 쓸 때는 멀쩡하던 NAS가, 팀원 몇 명이 동시에 접속하는 순간부터 전송 속도가 뚝 떨어지는 상황 말이에요. 저도 처음 홈 오피스 겸 소규모 팀 환경에 NAS를 도입했을 때 딱 이 문제를 겪었거든요. 오전에는 100MB/s 넘게 잘 나오다가, 오후 2~3시에 팀원 4~5명이 동시에 파일 작업 시작하면 10MB/s도 안 나오는 상황이 반복됐어요. SMB NAS 성능 저하 문제, 생각보다 많은 분들이 겪고 계시더라고요.

    13년 동안 인프라 엔지니어로 일하면서 크고 작은 NAS 환경을 수십 곳 설계하고 운영해봤는데요, 결론부터 말씀드리면 이 문제는 하드웨어를 교체하지 않고도 SMB 설정 최적화만으로 상당 부분 해결돼요. 오늘은 그 삽질 과정을 솔직하게 공유해드릴게요.

    SMB 다중 사용자 동시 접속 시 NAS 성능 저하 발생 구간 아키텍처 개요도

    다중 사용자가 SMB 프로토콜로 NAS에 동시 접속할 때 발생하는 병목 지점 개요도. 네트워크 레이어, SMB 세션, 디스크 I/O 구간별 병목을 시각화한 다이어그램.


    SMB 성능 저하, 왜 일어나는 걸까요? — 원인부터 짚어보기

    SMB(Server Message Block)는 윈도우 파일 공유 프로토콜인데, 생각보다 꽤 복잡해요. 단순히 파일을 복사하는 것처럼 보여도, 실제로는 인증, 세션 관리, 파일 잠금(File Locking), 캐시 동기화까지 엄청난 양의 통신이 오가거든요.

    NAS 동시 접속 시 성능이 저하되는 주요 원인은 크게 다섯 가지예요.

    • Oplocks(Opportunistic Locks, 기회적 잠금) 경합: 여러 클라이언트가 같은 파일에 접근할 때 잠금 협상 과정에서 오버헤드 발생
    • SMB 서명(Signing) 오버헤드: 패킷마다 서명을 검증하는 과정이 CPU를 많이 잡아먹음
    • Max Connections 제한 및 세션 큐잉: 동시 세션 수가 제한에 걸리면 대기열이 생기면서 전체 속도가 떨어짐
    • SMB1 레거시 폴백: 오래된 클라이언트가 있으면 서버 전체가 SMB1 모드로 협상되는 경우
    • 네트워크 드라이브 속도에 영향을 주는 MTU(Maximum Transmission Unit) 설정 불일치

    저는 처음에 디스크 문제인 줄 알았어요. HDD를 SSD로 교체할 뻔 했는데, 막상 iostat으로 디스크 사용률을 확인해보니 30%도 안 됐거든요. 범인은 디스크가 아니라 SMB 설정이었어요. 🕵️


    진단 먼저 — 어디서 막히는지 확인하기

    무작정 설정을 바꾸기 전에 진단부터 해야 해요. 근거 없이 설정 건드리다가 더 망가지는 경우 정말 많거든요. 저는 주로 아래 명령어들로 현황을 파악합니다.

    현재 SMB 연결 상태 확인 (Linux/Samba 기준)

    # 현재 접속 중인 SMB 세션 확인
    smbstatus
    
    # 더 상세한 정보
    smbstatus --verbose
    
    # 현재 열린 파일 목록
    smbstatus --shares
    
    # 잠금(Lock) 상태 확인
    smbstatus --locks

    네트워크 병목 확인

    # 네트워크 인터페이스 트래픽 실시간 모니터링
    iftop -i eth0
    
    # 또는 nethogs로 프로세스별 트래픽 확인
    nethogs eth0
    
    # ss 명령어로 SMB 관련 소켓 상태 확인 (445번 포트)
    ss -tnp | grep 445

    Windows 클라이언트에서 SMB 버전 확인

    # 현재 사용 중인 SMB 버전 확인
    Get-SmbConnection
    
    # SMB 서버 설정 확인
    Get-SmbServerConfiguration
    
    # SMB 클라이언트 설정 확인
    Get-SmbClientConfiguration

    💡 팁: Get-SmbConnection 결과에서 Dialect(다이얼렉트) 컬럼을 꼭 확인하세요. 여기서 SMB 1.0이 보이면 그게 주범일 가능성이 높아요.


    SMB 설정 최적화 — 핵심 설정 변경하기

    Samba smb.conf 성능 최적화 파라미터 구성 다이어그램

    Samba smb.conf 주요 성능 최적화 파라미터 구성도. global 섹션과 share 섹션별 설정 항목을 시각적으로 구분한 다이어그램.

    1단계: SMB 버전 강제 설정 (SMB2/3으로 고정)

    가장 먼저 할 일은 SMB1을 완전히 비활성화하는 거예요. SMB1은 2017년 WannaCry 사태 이후로 사실상 퇴역 수준인데, 여전히 폴백(Fallback)으로 동작하는 경우가 있거든요.

    Linux Samba 서버 기준 (/etc/samba/smb.conf)

    [global]
       # SMB 버전 설정 - SMB2 최소, SMB3 권장
       server min protocol = SMB2
       server max protocol = SMB3
       
       # 클라이언트 최소 버전도 제한
       client min protocol = SMB2
       client max protocol = SMB3

    Windows Server 기준 (PowerShell)

    # SMB1 완전 비활성화
    Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
    
    # SMB2/3 활성화 확인
    Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
    
    # 변경 사항 확인
    Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol

    2단계: Samba 성능 최적화 파라미터 적용

    이게 핵심이에요. 제가 실제로 적용해서 효과 본 설정들입니다. 하나씩 설명해드릴게요.

    [global]
       # === 프로토콜 버전 ===
       server min protocol = SMB2
       server max protocol = SMB3
    
       # === 성능 최적화 ===
       # 소켓 옵션 - TCP 성능 향상
       socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
    
       # 읽기/쓰기 버퍼 크기 최적화 (단위: bytes)
       read raw = yes
       write raw = yes
       max xmit = 65535
    
       # 비동기 I/O 활성화
       aio read size = 16384
       aio write size = 16384
    
       # 동시 연결 수 제한 해제 (기본값이 너무 낮은 경우)
       max smbd processes = 0
    
       # === 보안 vs 성능 균형 ===
       # 내부 네트워크라면 서명 비활성화로 CPU 부하 절감
       # 주의: 외부 노출 환경에서는 절대 비활성화 금지!
       server signing = auto
       client signing = auto
    
       # === 캐시 설정 ===
       # Winbind 캐시 타임아웃
       winbind cache time = 300
    
       # getwd cache
       getwd cache = yes
    
       # === 로깅 최소화 (성능에 영향) ===
       log level = 1
       
    [공유폴더명]
       path = /data/shared
       valid users = @sambausers
       read only = no
       
       # 공유 수준 캐시 설정
       oplocks = yes
       level2 oplocks = yes
       kernel oplocks = no
       
       # 스트릭트 동기화 비활성화 (성능 향상, 단 UPS 있는 환경 권장)
       strict sync = no
       sync always = no

    ⚠️ 주의: strict sync = no와 sync always = no는 전원이 갑자기 끊길 경우 데이터 손실 위험이 있어요. UPS(무정전 전원장치)가 있는 환경에서만 사용하세요.

    3단계: Windows 클라이언트 측 최적화

    서버만 바꾼다고 끝이 아니에요. 클라이언트 설정도 같이 봐야 해요. 특히 네트워크 드라이브 속도에 직결되는 설정들이 있거든요.

    # SMB Direct (RDMA) 활성화 여부 확인
    Get-SmbClientConfiguration | Select EnableBandwidthThrottling, EnableLargeMtu, EnableMultiChannel
    
    # Large MTU 활성화 (점보 프레임 지원 네트워크 환경)
    Set-SmbClientConfiguration -EnableLargeMtu $true -Force
    
    # 멀티채널(Multi-Channel) 활성화 - NIC가 여러 개일 때 대역폭 합산
    Set-SmbClientConfiguration -EnableMultiChannel $true -Force
    
    # 읽기 선행(Read-Ahead) 크기 조정
    Set-SmbClientConfiguration -SessionTimeout 60 -Force

    4단계: Jumbo Frame (점보 프레임) 설정

    이건 스위치, NAS 서버, 클라이언트 PC 모두 지원해야 효과가 있어요. 한 곳이라도 지원 안 하면 오히려 역효과가 나요. 저도 이거 모르고 NAS만 점보 프레임 설정했다가 패킷 단편화(Fragmentation)로 더 느려진 경험이 있어요. 😅

    # Linux NAS 서버 - MTU 9000 설정
    ip link set eth0 mtu 9000
    
    # 영구 적용 (Ubuntu/Debian - netplan)
    # /etc/netplan/01-netcfg.yaml 편집
    # /etc/netplan/01-netcfg.yaml
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: true
          mtu: 9000
    # netplan 적용
    netplan apply
    
    # 확인
    ip link show eth0 | grep mtu

    ⚠️ 삽질 모음 — 실제로 겪은 문제들

    설정을 바꾸면서 제가 직접 겪은 문제들이에요. 미리 알면 시간 많이 아낄 수 있습니다.

    문제 1: Oplocks 설정 후 오피스 파일이 열리지 않는 현상

    Oplocks를 활성화했더니 Excel, Word 파일이 열릴 때 “파일이 잠겨 있습니다” 오류가 뜨는 경우가 생겼어요. 알고 보니 특정 구버전 Office와의 호환성 문제더라고요.

    # 오피스 파일 공유에는 Oplocks 비활성화 고려
    [office_docs]
       path = /data/office
       oplocks = no
       level2 oplocks = no

    문제 2: 서명(Signing) 비활성화 후 Windows 11 클라이언트 접속 거부

    Windows 11은 기본적으로 SMB 서명을 필수로 요구하도록 정책이 강화됐어요. 서버에서 서명을 꺼버리면 Windows 11 클라이언트가 아예 연결을 거부해요. 이럴 때는 auto로 설정하는 게 최선이에요.

    # 'disabled' 대신 'auto' 사용
    server signing = auto
    client signing = auto

    문제 3: max smbd processes 설정 후 메모리 폭발

    동시 접속이 많은 환경에서 max smbd processes = 0(무제한)으로 설정했더니, smbd 프로세스가 수백 개 생기면서 RAM이 꽉 차버렸어요. 적절한 상한선을 설정하는 게 맞습니다.

    # 동시 접속자 수 * 2 정도로 설정 (예: 20명이면 40)
    max smbd processes = 40

    검증 — 설정 적용 후 성능 측정하기

    SMB NAS 성능 최적화 적용 전후 동시 접속 전송 속도 비교 벤치마크 결과

    SMB 설정 최적화 적용 전후 동시 접속 성능 비교 차트. 사용자 수 증가에 따른 전송 속도 변화를 비교한 벤치마크 결과.

    CrystalDiskMark로 클라이언트 측 성능 측정

    Windows 클라이언트에서 CrystalDiskMark로 네트워크 드라이브를 대상으로 벤치마크를 돌려보세요. 설정 전후를 비교해보면 효과가 확실히 보입니다.

    iperf3로 순수 네트워크 대역폭 확인

    # NAS 서버에서 iperf3 서버 실행
    iperf3 -s
    
    # 클라이언트에서 테스트 (여러 스트림으로 병렬 테스트)
    iperf3 -c [NAS_IP] -P 4 -t 30
    
    # 점보 프레임 환경이라면
    iperf3 -c [NAS_IP] -P 4 -t 30 -M 8972

    Samba 로그로 성능 모니터링

    # Samba 로그 실시간 확인
    tail -f /var/log/samba/log.smbd
    
    # 프로파일링 활성화 (임시)
    smbcontrol smbd profilelevel 2
    smbcontrol smbd profile
    
    # 확인 후 프로파일링 비활성화
    smbcontrol smbd profilelevel 0

    제가 이 설정들을 적용하고 나서 실제로 측정한 결과, 5명 동시 접속 기준으로 평균 전송 속도가 22MB/s에서 87MB/s로 약 4배 향상됐어요. 🎉 물론 환경마다 다르겠지만, 체감 차이가 확실히 느껴졌습니다.


    SMB 버전별 성능 및 특징 비교

    구분 SMB 1.0 SMB 2.x SMB 3.x
    출시 시기 1980년대 Windows Vista/2008 Windows 8/2012
    다중 요청 처리 ❌ 순차 처리 ✅ 파이프라이닝 ✅ 멀티플렉싱
    멀티채널 ❌ 미지원 ❌ 미지원 ✅ 지원
    암호화 ❌ 없음 ⚠️ 서명만 ✅ 엔드투엔드 암호화
    동시 접속 성능 🔴 매우 낮음 🟡 보통 🟢 우수
    보안 🔴 취약 (WannaCry) 🟡 양호 🟢 강력
    권장 여부 ❌ 사용 금지 ⚠️ 최소 버전 ✅ 적극 권장

    자주 묻는 질문 (FAQ)

    Q. Synology/QNAP NAS에서도 같은 설정이 적용되나요?

    Synology는 DSM 내 제어판 > 파일 서비스 > SMB에서 최소/최대 SMB 버전을 GUI로 설정할 수 있어요. 고급 설정에서 추가 파라미터도 넣을 수 있고요. QNAP도 유사한 GUI를 제공하는데, 커스텀 smb.conf 직접 편집은 펌웨어 업데이트 시 초기화될 수 있으니 주의하세요.

    Q. SMB Multichannel(멀티채널)이 뭔가요?

    SMB 3.0에서 도입된 기능으로, NIC(Network Interface Card, 네트워크 카드)가 여러 개 있거나 NIC가 여러 포트를 가진 경우 대역폭을 합산해서 사용할 수 있어요. 예를 들어 1Gbps NIC 2개를 묶으면 이론상 2Gbps까지 나옵니다.

    Q. 설정 변경 후 Samba 재시작은 어떻게 하나요?

    # Samba 서비스 재시작
    systemctl restart smbd nmbd
    
    # 설정 문법 오류 확인 (재시작 전에 꼭!)
    testparm

    Q. Windows Server에서 SMB NAS 성능 저하가 심할 때는?

    Windows Server 환경에서는 SMB 대역폭 조절(Throttling) 기능이 활성화되어 있을 수 있어요. 아래 명령어로 확인하고 필요시 조정하세요.

    # 대역폭 조절 확인
    Get-SmbClientConfiguration | Select EnableBandwidthThrottling
    
    # 비활성화
    Set-SmbClientConfiguration -EnableBandwidthThrottling $false -Force

    마무리 — 정리하며

    SMB NAS 성능 최적화 핵심 설정 체크리스트 요약 인포그래픽

    SMB NAS 성능 최적화 핵심 체크리스트 요약 인포그래픽. 프로토콜 버전, 서명, 멀티채널, 점보프레임 등 단계별 적용 항목 정리.

    오늘 다룬 내용을 간단히 정리해볼게요.

    1. ✅ 진단 먼저: smbstatus, iperf3, Get-SmbConnection으로 현황 파악
    2. ✅ SMB1 비활성화: 보안과 성능 모두를 위해 즉시 적용
    3. ✅ 버퍼/소켓 최적화: smb.conf의 socket options, aio 설정
    4. ✅ 서명 설정: 내부망은 auto, 외부 노출 환경은 required
    5. ✅ 점보 프레임: 스위치, 서버, 클라이언트 모두 지원 시에만 적용
    6. ✅ SMB Multichannel: NIC 여러 개 환경에서 대역폭 극대화

    SMB NAS 성능 저하 문제는 하드웨어 업그레이드보다 설정 최적화가 먼저예요. 저도 처음엔 장비 탓만 했는데, 결국 설정 몇 줄 바꿔서 해결했거든요. 여러분도 오늘 소개한 방법들 적용해보시고, 효과 있으셨으면 댓글로 알려주세요!

    다음 글에서는 NFS vs SMB 성능 비교와 리눅스 클라이언트 환경에서의 마운트 최적화를 다룰 예정입니다. SMB 외에 NFS도 궁금하신 분들은 기대해주세요. 😊

    혹시 설정 적용하다가 막히는 부분 있으시면 댓글로 남겨주세요. 제가 아는 범위 내에서 최대한 도와드리겠습니다!