13년차의 서버실

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

[작성자:] admin

  • [Game] 스팀덱 OLED vs ROG Ally 비교: 휴대용 게임기 선택 가이드

    스팀덱 OLED vs ROG Ally 비교: 휴대용 게임기 선택 가이드

    휴대용 게임기 시장이 정말 흥미롭게 돌아가고 있어요. 예전에는 닌텐도 스위치가 거의 유일한 선택지였는데, 이제는 PC 게임을 그대로 들고 다닐 수 있는 핸드헬드 PC 시대가 열렸거든요. 저도 홈랩에서 이것저것 만지다 보니 자연스럽게 이 기기들에 눈길이 갔습니다. 스팀덱 OLED와 ROG Ally를 직접 써본 경험을 바탕으로, 어떤 분께 어떤 기기가 맞는지 솔직하게 정리해볼게요.

    처음 ROG Ally를 받았을 때 “이게 진짜 포터블 PC야?” 싶었거든요. 그러다 스팀덱 OLED를 써보면서 두 기기의 철학 자체가 다르다는 걸 느꼈어요. 단순히 스펙 비교로 결론 낼 수 있는 문제가 아니더라고요.

    스팀덱 OLED(왼쪽)와 ROG Ally(오른쪽)를 나란히 놓고 비교한 모습. 크기와 디자인 철학의 차이가 한눈에 보입니다.

    두 기기, 어떤 배경에서 나왔을까요?

    두 기기의 탄생 배경을 이해하면 선택이 훨씬 쉬워져요.

    스팀덱 OLED는 Valve가 만든 휴대용 게임 PC입니다. 스팀 라이브러리를 그대로 휴대하자는 게 핵심 목표였고, 운영체제도 SteamOS(리눅스 기반)를 사용해요. 2023년 11월에 출시된 OLED 모델은 기존 LCD 모델의 아쉬운 점이었던 화면 품질을 대폭 개선했습니다. 배터리 용량도 늘어나고, 디스플레이도 확 좋아졌죠.

    ROG Ally는 ASUS의 Republic of Gamers 브랜드에서 만든 기기예요. Windows 11을 그대로 올려서 PC 게임 생태계를 완전히 활용하겠다는 전략이에요. AMD의 Ryzen Z1 시리즈 프로세서를 탑재했고, 2023년에 출시되었습니다.

    디스플레이: 스팀덱 OLED의 압승이지만…

    화면 이야기부터 해볼게요. 이름에 OLED가 들어간 만큼 스팀덱 OLED의 디스플레이는 정말 인상적이에요.

    • 스팀덱 OLED: 7.4인치 OLED 패널, HDR 지원, 90Hz 주사율
    • ROG Ally: 7인치 IPS LCD 패널, 120Hz 주사율, FHD(1920×1080) 해상도

    OLED 특유의 깊은 검은색과 선명한 색감은 스팀덱 OLED가 확실히 앞서요. 어두운 던전 탐험이나 분위기 있는 RPG를 즐길 때 체감 차이가 꽤 나더라고요. 반면 ROG Ally는 120Hz라는 더 높은 주사율 덕분에 빠른 액션 게임에서 부드러움이 장점입니다.

    💡 팁: 디스플레이 품질을 최우선으로 생각한다면 스팀덱 OLED가 확실히 낫습니다. 하지만 FPS처럼 주사율이 중요한 장르를 주로 즐긴다면 ROG Ally의 120Hz도 매력적이에요.

    성능 비교: 스펙보다 실제 경험이 중요합니다

    여기서 중요한 포인트! 스펙 시트만 보면 ROG Ally가 우세해 보일 수 있는데, 실제 사용 경험은 좀 달랐어요.

    항목 스팀덱 OLED ROG Ally (Z1 Extreme 기준)
    프로세서 AMD APU (Zen 2 + RDNA 2) AMD Ryzen Z1 Extreme (Zen 4 + RDNA 3)
    메모리 16GB LPDDR5 16GB LPDDR5
    운영체제 SteamOS 3 (Linux 기반) Windows 11 Home
    저장공간 512GB NVMe SSD (OLED 기본) 512GB NVMe SSD
    디스플레이 7.4인치 OLED, 90Hz 7인치 IPS, 120Hz, FHD
    무게 약 640g 약 608g

    ROG Ally의 Z1 Extreme은 최신 아키텍처 기반이라 순수 연산 성능은 앞서요. 그런데 스팀덱은 SteamOS 최적화가 잘 되어 있어서, 스팀 게임 한정으로는 체감 차이가 생각보다 크지 않더라고요. 오히려 TDP(Thermal Design Power, 열설계전력) 관리를 잘 하면 스팀덱도 꽤 준수한 성능을 냅니다.

    두 기기의 게임 성능 비교 개념도. 순수 스펙은 ROG Ally가 앞서지만, 최적화된 환경에서의 실제 게임 경험은 다를 수 있습니다.

    소프트웨어 생태계: 가장 중요한 차이점

    개인적으로 이 부분이 두 휴대용 게임기의 가장 큰 차이라고 생각해요.

    스팀덱 OLED: SteamOS의 세계

    SteamOS는 리눅스 기반이라 처음엔 낯설 수 있어요. 저도 처음에 “이거 리눅스인데 게임이 제대로 돌아가나?” 싶었는데, Proton(프로톤)이라는 호환 레이어 덕분에 스팀 게임 대부분이 잘 돌아갑니다. Valve가 게임 호환성 데이터베이스를 꾸준히 관리하고 있어서, ProtonDB(프로톤DB)에서 내가 하려는 게임이 잘 돌아가는지 미리 확인할 수도 있어요.

    • ✅ 스팀 게임 최적화 인터페이스 기본 제공
    • ✅ 소파에서 컨트롤러로 모든 조작 가능한 Big Picture 모드
    • ✅ 배터리 효율이 상대적으로 좋음
    • ⚠️ 스팀 외 플랫폼(Epic, Game Pass 등) 사용이 번거로움
    • ⚠️ 온라인 안티치트가 적용된 일부 게임은 미지원

    ROG Ally: Windows 11의 자유와 혼돈

    ROG Ally는 Windows 11을 그대로 써요. 이론상 PC에서 돌아가는 모든 것이 된다는 뜻이죠. Epic 게임즈 스토어, Xbox Game Pass, Battle.net 등 어디서 산 게임이든 실행 가능합니다. 근데 여기서 문제가 생기더라고요.

    Windows는 원래 마우스·키보드 환경에 맞춰져 있잖아요. 작은 화면에서 Windows 설정을 건드리거나 파일 탐색기를 조작하는 게 처음엔 좀 불편했어요. ASUS가 Armoury Crate SE(아머리 크레이트 SE)라는 런처를 제공하긴 하는데, 스팀덱의 게임 모드만큼 자연스럽지는 않더라고요.

    • ✅ 스팀, Epic, Game Pass 등 모든 플랫폼 지원
    • ✅ 온라인 게임 안티치트 호환성 좋음
    • ✅ 일반 PC처럼 활용 가능 (오피스 작업 등)
    • ⚠️ 배터리 소모가 스팀덱 대비 빠른 편
    • ⚠️ Windows 업데이트 등 관리 포인트 증가
    • ⚠️ 소파에서 컨트롤러로 Windows 조작이 불편할 수 있음

    배터리: 실사용에서 느끼는 차이

    휴대용 기기에서 배터리는 정말 중요하죠. 이 부분도 솔직하게 얘기해볼게요.

    스팀덱 OLED는 배터리 용량이 기존 LCD 모델보다 늘어났고, SteamOS의 전력 관리 최적화 덕분에 가벼운 게임을 TDP를 낮춰서 하면 꽤 오래 버텨요. 반면 ROG Ally는 Windows 자체의 백그라운드 프로세스와 더 높은 성능 요구 때문에 배터리가 더 빨리 닳는 편이에요.

    물론 게임 종류나 설정에 따라 달라지기 때문에 정확한 수치를 단정 짓기는 어렵습니다만, 외출 시 장시간 충전 없이 쓸 계획이라면 스팀덱 OLED 쪽이 유리하더라고요.

    ⚠️ 실제 사용 중 겪은 주의사항들

    두 기기를 쓰면서 실제로 겪었던 불편함들을 공유해볼게요. 이런 내용은 리뷰에서 잘 안 다루더라고요.

    스팀덱 OLED 주의사항

    • Proton 호환성 확인 필수: 하고 싶은 게임이 있다면 반드시 ProtonDB에서 호환성을 먼저 확인하세요. 잘 되는 게임이 대부분이지만 일부는 문제가 있어요.
    • 안티치트 이슈: EAC(Easy Anti-Cheat)나 BattlEye(배틀아이) 같은 안티치트가 적용된 온라인 게임 중 일부는 SteamOS에서 안 됩니다. 꼭 하고 싶은 온라인 게임이 있다면 사전 확인 필수예요.
    • 데스크톱 모드 학습 필요: 추가 앱 설치나 세부 설정을 위해 데스크톱 모드(리눅스 KDE Plasma)를 쓸 일이 생기는데, 리눅스가 낯설면 처음에 당황할 수 있어요.

    ROG Ally 주의사항

    • 발열 관리: 고성능 모드에서는 발열이 꽤 나요. 장시간 고부하 게임 시 팬 소음도 신경 쓰이더라고요.
    • Windows 업데이트: 가끔 게임 하려고 켰는데 업데이트 중인 상황이 발생합니다. 삽질 좀 했어요 ㅎㅎ
    • microSD 슬롯 이슈: 초기 모델에서 일부 microSD 슬롯 관련 문제가 보고된 바 있어요. 구매 전 최신 정보를 확인해보세요.
    • Armoury Crate SE 의존성: TDP 조절이나 팬 컨트롤을 위해 ASUS 자체 소프트웨어에 의존해야 합니다.

    휴대용 게임 PC의 그립감과 인체공학적 설계는 장시간 사용 시 중요한 요소예요. 직접 손에 쥐어보는 것을 권장합니다.

    가격과 가성비: 어느 쪽이 합리적일까요?

    가격은 시장 상황에 따라 변동이 있어서 정확한 수치를 단정 짓기 어렵지만, 대략적인 포지셔닝은 이렇습니다.

    스팀덱 OLED는 Valve가 가격을 상당히 공격적으로 책정했어요. 게임 생태계를 키우려는 Valve의 전략적 판단이 반영된 거죠. ROG Ally는 ASUS의 게이밍 브랜드 프리미엄과 Windows 라이선스 비용이 포함되어 있어 상대적으로 가격이 높습니다.

    단순히 기기값만 보면 스팀덱 OLED가 유리하고, 여기에 스팀 세일을 활용하면 게임 라이브러리를 저렴하게 구성할 수 있다는 장점도 있어요.

    이런 분께 추천합니다

    결론적으로 두 휴대용 게임기 모두 훌륭한 제품입니다. 다만 사용 패턴에 따라 맞는 기기가 다르더라고요.

    스팀덱 OLED를 추천하는 경우

    • 스팀 라이브러리가 이미 풍부한 분
    • 배터리 지속 시간을 중요시하는 분
    • OLED 화면의 화질을 최우선으로 생각하는 분
    • 리눅스/오픈소스에 거부감이 없는 분
    • 가성비를 중시하는 분
    • 싱글플레이 RPG, 인디 게임 위주로 즐기는 분

    ROG Ally를 추천하는 경우

    • Game Pass나 Epic 등 다양한 플랫폼 게임을 즐기는 분
    • 온라인 멀티플레이 게임(안티치트 필요)을 주로 하는 분
    • Windows 환경에 익숙하고 그대로 쓰고 싶은 분
    • 최신 AAA 게임의 높은 성능을 원하는 분
    • 가끔 업무용 PC로도 활용하고 싶은 분

    어떤 기기가 나에게 맞는지 판단하는 기준을 정리한 선택 가이드. 사용 목적과 우선순위에 따라 결정이 달라집니다.

    자주 묻는 질문 (FAQ)

    Q. 스팀덱 OLED에서 스팀 외 게임도 할 수 있나요?

    A. 가능해요. 데스크톱 모드로 전환하면 Heroic Games Launcher(헤로익 게임즈 런처)를 통해 Epic 게임즈나 GOG 게임도 실행할 수 있습니다. 다만 스팀만큼 편리하지는 않고, 게임별로 호환성 확인이 필요해요.

    Q. ROG Ally에 SteamOS를 설치할 수 있나요?

    A. 커뮤니티에서 시도한 사례들이 있지만, 공식 지원은 아닙니다. 드라이버 호환성 등 기술적 난관이 있어서 일반 사용자에게는 권장하지 않아요.

    Q. 두 기기 모두 TV에 연결해서 쓸 수 있나요?

    A. 네, 둘 다 독(Dock) 또는 USB-C를 통해 외부 디스플레이 연결이 가능합니다. 스팀덱은 공식 독을 별도 구매해야 하고, ROG Ally도 전용 독이 있어요.

    Q. 어느 쪽이 더 오래 지원될까요?

    A. 스팀덱은 Valve가 SteamOS를 꾸준히 업데이트하고 있고, Proton 호환성도 지속적으로 개선 중입니다. ROG Ally는 Windows 지원 정책을 따르게 돼요. 장기 지원 면에서는 두 기기 모두 나름의 장점이 있습니다.

    마무리: 결국 정답은 내 게임 라이브러리에 있다

    13년 동안 인프라 엔지니어로 일하면서 배운 게 하나 있다면, 어떤 도구든 “목적에 맞는 것”이 최고라는 거예요. 스팀덱 OLED와 ROG Ally도 마찬가지입니다.

    스팀덱 OLED는 스팀 게이머를 위한, 스팀 게임에 최적화된 휴대용 게임기예요. OLED 화면과 배터리 효율, 그리고 Valve의 지속적인 소프트웨어 지원이 강점이에요. ROG Ally는 Windows PC를 그대로 들고 다니고 싶은 분들을 위한 기기입니다. 플랫폼 제약 없이 자유롭게 쓰고 싶다면 ROG Ally가 맞아요.

    저는 개인적으로 스팀 라이브러리가 방대하고 인디 게임을 즐겨 하는 편이라 스팀덱 OLED를 더 자주 손에 쥐게 되더라고요. 근데 Game Pass 게임을 즐기거나 멀티플레이 위주라면 ROG Ally가 더 편할 거라고 생각합니다.

    🎉 어떤 기기를 선택하든, 이제 PC 게임을 어디서든 즐길 수 있다는 사실 자체가 정말 좋은 시대에 살고 있다는 증거 아닐까요? 다음 글에서는 스팀덱을 홈랩 서버와 연동하는 방법도 다뤄볼 예정입니다. 기대해주세요!

    혹시 두 기기 중 어느 쪽을 선택하셨거나, 다른 기기를 쓰고 계신 분들도 댓글로 경험 공유해 주시면 좋겠어요. 👋

  • [Game] 팔월드 전용 서버 구축: SteamCMD부터 포트포워딩까지 완벽 가이드

    친구들과 팔월드 멀티플레이하는데 렉이 심할 때

    팔월드가 출시됐을 때 저도 꽤 빠져들었습니다. 근데 문제가 생겼어요. 친구들과 함께 멀티플레이를 켰더니 렉이 장난이 아니더라고요. 호스트 역할을 맡은 친구 PC 사양이 딸리기도 했고, 친구가 게임을 꺼버리면 서버도 같이 꺼지는 구조라서 지속적인 플레이가 불가능했거든요.

    그래서 결국 저 직접 팔월드 전용 서버를 구축하기로 했습니다. 처음엔 “이거 어렵겠지”라고 생각했는데, 막상 해보니까 생각보다 할 만하더라고요. 물론 삽질도 좀 했습니다 ㅎㅎ. 이 글에서는 제가 직접 겪은 과정을 바탕으로 팔월드 전용 서버 구축 방법을 처음부터 끝까지 안내해 드릴게요.

    팔월드 전용 서버의 전체 구성 개요 — 클라이언트, 서버, 포트포워딩의 관계를 한눈에 볼 수 있습니다.

    팔월드 멀티플레이 방식, 어떤 게 있나요?

    팔월드 멀티플레이를 하는 방법은 크게 세 가지입니다.

    • 인게임 멀티플레이(Co-op): 게임 내에서 바로 초대하는 방식. 가장 간단하지만 호스트가 꺼지면 서버도 꺼집니다.
    • 팔월드 전용 서버(Dedicated Server): 별도 서버 프로세스를 24시간 운영. 호스트 없이 언제든 접속 가능합니다.
    • 서버 호스팅 업체 이용: 돈 내고 업체에 맡기는 방식. 편하지만 월 비용이 발생합니다.

    저는 직접 제어하고 싶기도 했고, 비용도 아끼고 싶어서 두 번째 방법인 팔월드 전용 서버를 직접 구축하는 방향을 선택했습니다. 집에 굴러다니는 리눅스 서버가 있어서 더 좋았고요.

    팔월드 서버 사양은 어느 정도가 필요할까?

    팔월드 공식 권장 사양이 있는데, 실제로 써보니 최소 사양 이상은 맞춰줘야 쾌적하더라고요. 아래 표로 정리했습니다.

    항목 최소 사양 권장 사양
    CPU 4코어 8코어 이상
    RAM 16GB 32GB
    저장공간 20GB 이상 SSD 40GB 이상
    OS Ubuntu 20.04 LTS 이상 / Windows Server Ubuntu 22.04 LTS
    네트워크 100Mbps 1Gbps

    💡 팁: 친구 4~5명 정도 소규모로 즐긴다면 16GB RAM에 4코어도 충분했습니다. 10명 이상이 접속한다면 넉넉하게 잡는 게 좋아요.

    팔월드 전용 서버 구축 — 단계별 가이드 (Linux 기준)

    저는 Ubuntu 22.04 LTS 기반으로 진행했습니다. Windows도 방식은 비슷하지만, 리눅스가 서버 운영에는 훨씬 안정적이더라고요. 자, 시작해볼게요.

    1단계: SteamCMD 설치

    팔월드 서버 파일은 Steam의 서버 전용 CLI 도구인 SteamCMD를 통해 다운로드합니다. Steam 클라이언트 없이 서버 파일만 받을 수 있는 커맨드라인 도구예요.

    # 32비트 라이브러리 및 SteamCMD 설치
    sudo apt-get update
    sudo apt-get install -y lib32gcc-s1 steamcmd
    

    설치가 끝나면 SteamCMD를 실행해서 팔월드 서버 파일을 받아옵니다.

    # SteamCMD 실행
    steamcmd
    
    # SteamCMD 내부 명령어
    login anonymous
    force_install_dir /home/palworld-server
    app_update 2394010 validate
    quit
    

    여기서 2394010은 팔월드 전용 서버의 Steam App ID입니다. 다운로드가 좀 걸리니까 커피 한 잔 하고 오시면 돼요 ☕

    2단계: 팔월드 서버 설정 파일 수정

    서버 파일이 다운로드됐으면 설정 파일을 손봐야 합니다. 처음 실행 전에는 설정 파일이 없으니, 일단 서버를 한 번 실행해서 기본 파일을 생성해줘야 해요. 저도 이 부분에서 처음에 헷갈렸습니다.

    # 서버 폴더로 이동
    cd /home/palworld-server
    
    # 첫 실행 (설정 파일 생성 목적)
    ./PalServer.sh
    

    몇 초 실행하다가 Ctrl+C로 종료하면 설정 파일이 생성됩니다. 이제 설정 파일을 열어볼게요.

    nano Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
    

    아래는 제가 실제로 사용하는 핵심 설정값들입니다.

    [/Script/Pal.PalGameWorldSettings]
    OptionSettings=(
        Difficulty=None,
        DayTimeSpeedRate=1.000000,
        NightTimeSpeedRate=1.000000,
        ExpRate=1.000000,
        PalCaptureRate=1.000000,
        ServerPlayerMaxNum=32,
        ServerName="13년차의 서버실 팔월드",
        ServerDescription="친구들만 접속 가능",
        AdminPassword="여기에_관리자_비밀번호",
        ServerPassword="여기에_서버_입장_비밀번호",
        PublicPort=8211,
        PublicIP="",
        RCONEnabled=False,
        RCONPort=25575
    )
    

    ⚠️ 주의: AdminPassword와 ServerPassword는 반드시 설정하세요. 비워두면 누구나 관리자 권한을 얻거나 접속할 수 있습니다. 저도 처음에 이 부분을 빼먹었다가 모르는 사람이 접속해서 당황했었거든요 ㅎㅎ

    PalWorldSettings.ini 설정 파일 수정 및 공유기 포트포워딩 설정 화면 예시입니다.

    3단계: 방화벽 및 포트 개방

    팔월드 서버는 기본적으로 UDP 8211 포트를 사용합니다. 방화벽에서 이 포트를 열어줘야 외부에서 접속이 가능해요.

    # UFW 방화벽 포트 개방
    sudo ufw allow 8211/udp
    sudo ufw allow 8211/tcp
    sudo ufw reload
    
    # 방화벽 상태 확인
    sudo ufw status
    

    집 서버를 사용한다면 공유기에서도 포트포워딩 설정이 필요합니다. 공유기 관리 페이지(보통 192.168.1.1 또는 192.168.0.1)에 접속해서 UDP 8211 포트를 서버 내부 IP로 연결해주면 됩니다. 공유기마다 UI가 다르니까 제조사 이름 + “포트포워딩” 검색하시면 바로 나와요.

    4단계: systemd 서비스로 자동 실행 설정

    서버를 매번 수동으로 켜는 건 너무 불편하죠. systemd에 서비스로 등록하면 서버가 재부팅돼도 자동으로 팔월드 서버가 켜집니다. 이거 설정하고 나서 진짜 편해졌어요.

    sudo nano /etc/systemd/system/palworld.service
    
    [Unit]
    Description=Palworld Dedicated Server
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    WorkingDirectory=/home/palworld-server
    ExecStart=/home/palworld-server/PalServer.sh
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
    # 서비스 등록 및 시작
    sudo systemctl daemon-reload
    sudo systemctl enable palworld
    sudo systemctl start palworld
    
    # 서비스 상태 확인
    sudo systemctl status palworld
    

    ✅ Active: active (running)이 뜨면 팔월드 전용 서버가 정상 실행 중인 겁니다!

    실제로 겪은 트러블슈팅

    솔직히 말하면 처음 설정할 때 한 번에 됐던 건 아니었습니다. 제가 겪었던 문제들과 해결법을 공유할게요.

    문제 1: 서버는 켜졌는데 접속이 안 돼요

    가장 흔한 문제입니다. 체크리스트를 순서대로 확인해보세요.

    1. 방화벽에서 UDP 8211 포트가 열려 있는지 확인
    2. 공유기 포트포워딩이 올바르게 설정됐는지 확인
    3. 서버의 공인 IP 주소를 정확히 입력했는지 확인 (내부 IP가 아닌 외부 IP)
    4. sudo systemctl status palworld로 서버 프로세스가 살아있는지 확인

    제 경우엔 포트포워딩을 TCP로만 설정하고 UDP를 빠뜨려서 한참 헤맸습니다. UDP 꼭 챙기세요!

    문제 2: 서버가 자꾸 크래시돼요

    메모리 부족이 원인인 경우가 많습니다. free -h 명령어로 메모리 여유를 확인해보세요. 16GB 이하라면 스왑(Swap) 메모리를 추가해주는 게 좋습니다.

    # 4GB 스왑 파일 생성
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
    # 재부팅 후에도 유지되게 fstab에 추가
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

    문제 3: 시간이 지나면 팔월드 서버가 느려져요

    팔월드 서버는 장시간 운영하면 메모리 누수가 발생하는 경우가 있습니다. 임시방편이지만 새벽에 자동으로 재시작하도록 크론탭(crontab)을 설정해두면 훨씬 쾌적해져요.

    crontab -e
    
    # 매일 새벽 4시에 팔월드 서버 재시작
    0 4 * * * sudo systemctl restart palworld
    

    팔월드 서버 접속 확인 및 결과

    설정이 다 끝났으면 팔월드 게임을 실행하고 접속해봐야겠죠. 방법은 간단합니다.

    1. 팔월드 실행 후 “멀티플레이 참가” 선택
    2. “IP 주소로 접속” 클릭
    3. 서버 공인 IP 주소와 포트 입력: 123.456.789.0:8211 형식
    4. 설정한 서버 비밀번호 입력
    5. 🎉 입장!

    처음 접속했을 때 친구가 “오, 렉 없다!”라고 했을 때의 그 쾌감이란… 진짜 보람 있더라고요. 서버 상태를 실시간으로 모니터링하고 싶다면 journalctl -u palworld -f 명령어로 로그를 실시간으로 볼 수 있습니다.

    팔월드 전용 서버 접속 성공 화면과 터미널에서 확인하는 서버 실시간 로그입니다.

    홈 서버 vs 클라우드 서버 — 어떤 걸 선택할까?

    혹시 집에 굴러다니는 서버가 없다면 클라우드 서버를 쓰는 방법도 있습니다. 각각 장단점이 있으니 상황에 맞게 선택하세요.

    항목 홈 서버 클라우드 서버 (AWS, GCP 등)
    초기 비용 장비 구매 필요 없음 (사용량 과금)
    월 운영비 전기세만 발생 인스턴스 비용 발생
    네트워크 안정성 ISP 품질에 의존 데이터센터급 안정성
    유지보수 직접 해야 함 인프라는 업체가 관리
    확장성 하드웨어 한계 필요할 때 바로 확장 가능
    추천 대상 이미 서버 있는 분, 홈랩 운영자 빠르게 시작하고 싶은 분

    저는 홈랩 서버가 있어서 그냥 집에서 돌리고 있는데, 만약 처음 시작하신다면 AWS Lightsail이나 Oracle Cloud Free Tier 같은 서비스를 써보는 것도 방법이에요. Oracle Cloud는 무료 티어가 꽤 넉넉하거든요.

    자주 묻는 질문 (FAQ)

    Q. 팔월드 전용 서버를 돌리려면 팔월드를 구매해야 하나요?

    A. 서버 전용 파일은 SteamCMD로 무료로 다운로드 가능합니다. 하지만 접속하는 클라이언트(플레이어)는 각자 팔월드를 구매해야 합니다.

    Q. 서버를 24시간 켜두면 전기세가 많이 나오나요?

    A. 서버 사양과 전력 소비량에 따라 다르지만, 일반 미니 PC 계열이라면 월 몇 천 원 수준입니다. 고성능 타워 서버라면 더 나올 수 있어요.

    Q. 친구가 접속할 때 제 IP 주소를 알려줘야 하나요?

    A. 네, 공인 IP 주소를 알려줘야 합니다. 보안이 걱정된다면 서버 비밀번호를 반드시 설정하고, 필요하다면 VPN을 활용하는 방법도 있습니다. 다음 글에서 팔월드 서버에 VPN을 적용하는 방법도 다뤄볼 예정이에요.

    Q. 팔월드 서버 파일 업데이트는 어떻게 하나요?

    A. SteamCMD로 동일하게 app_update 2394010 validate를 실행하면 됩니다. 업데이트 전에 서버를 먼저 종료하는 게 좋아요.

    팔월드 전용 서버 구축 방법 선택 가이드 — 홈 서버, 클라우드, 호스팅 업체 비교 요약입니다.

    마무리 — 팔월드 전용 서버 구축, 어렵지 않아요

    팔월드 전용 서버 구축, 생각보다 어렵지 않죠? 핵심을 정리하면 이렇습니다.

    • ✅ SteamCMD로 팔월드 서버 파일 다운로드
    • ✅ PalWorldSettings.ini 설정 (서버 이름, 비밀번호 필수)
    • ✅ 방화벽 + 포트포워딩으로 UDP 8211 포트 개방
    • ✅ systemd 서비스 등록으로 자동 실행
    • ✅ 친구들과 공인 IP:8211로 접속

    처음 설정할 때 포트포워딩 때문에 한 시간 넘게 헤맸던 기억이 나네요. 근데 그 과정이 있었기에 지금은 이런 글을 쓸 수 있는 거겠죠 ㅎㅎ. 혹시 설정하다가 막히는 부분이 있으시면 댓글로 남겨주세요. 제가 아는 선에서 최대한 도와드리겠습니다.

    다음 글에서는 팔월드 서버에 백업 자동화를 적용하는 방법을 다뤄볼 예정입니다. 열심히 키운 팰들을 날려먹지 않으려면 백업은 필수거든요. 즐거운 팔월드 생활 되세요! 🎉

  • [Nas] Tailscale을 이용한 NAS 외부 접속 가이드: 포트 포워딩 없는 보안 설정

    [Nas] Tailscale을 이용한 NAS 외부 접속 가이드: 포트 포워딩 없는 보안 설정

    [인프라] Tailscale을 이용한 NAS 외부 접속 가이드: 포트 포워딩 없는 보안 설정

    안녕하세요, 13년차 인프라 엔지니어로 일하며 집에서는 소박하게(?) 홈랩을 운영 중인 ‘서버실’ 주인장입니다. 여러분, 혹시 밖에서 내 NAS(나스)에 접속하고 싶을 때 어떻게 하시나요? 예전 같으면 공유기 설정 페이지에서 포트 포워딩 설정을 하고, DDNS를 맞추느라 삽질하던 게 일상이었거든요. 하지만 보안이 중요해진 지금, 포트를 외부에 그대로 노출하는 건 ‘제발 해킹해주세요’라고 광고하는 것과 다름없더라고요.

    실제로 제 지인 중 한 명은 시놀로지 기본 포트를 열어두었다가 랜섬웨어 공격을 받아 수년간 모은 사진 데이터를 날린 적이 있어요. 그때 제가 멘토로서 권해준 솔루션이 바로 오늘 소개해 드릴 Tailscale(테일스케일)입니다. 오늘은 복잡한 설정 없이, 그리고 보안 구멍 하나 없이 쾌적하게 NAS 외부 접속 환경을 만드는 법을 제 경험을 담아 공유해 보겠습니다.

    Tailscale 메쉬 VPN 작동 원리 다이어그램, NAS 외부 접속 구조

    ▲ 외부 노출 없이 기기 간에 가상의 랜 케이블을 연결하는 Tailscale의 작동 원리

    1. 왜 포트 포워딩 대신 Tailscale인가?

    인프라 엔지니어 관점에서 볼 때, 전통적인 방식의 외부 접속은 몇 가지 치명적인 단점이 있어요.

    • 보안 취약점: 특정 포트(예: 5000, 5001)가 열려 있으면 전 세계 해커들의 스캐닝 대상이 됩니다.
    • CGNAT(통신사 공유 IP) 문제: 요즘 일부 아파트나 원룸 인터넷은 공인 IP를 주지 않아 포트 포워딩 자체가 불가능한 경우가 많아요.
    • 설정의 번거로움: 기기가 늘어날 때마다 일일이 포트를 할당해야 하는 번거로움이 있거든요.

    Tailscale은 WireGuard(와이어가드) 프로토콜을 기반으로 한 Mesh VPN(메쉬 가상 사설망) 서비스예요. 쉽게 말해, 내 스마트폰과 NAS 사이에 전 세계 어디서든 연결되는 ‘보이지 않는 긴 랜 케이블’을 하나 꽂는다고 생각하시면 됩니다. NAT Traversal(NAT 트래버설, NAT 우회) 기술을 사용하기 때문에 포트 포워딩을 단 하나도 할 필요가 없다는 게 이 솔루션의 가장 큰 매력이거든요.

    2. 시놀로지 NAS에서 Tailscale 설정하기

    제가 메인으로 사용하는 시놀로지 NAS를 기준으로 설명해 드릴게요. 정말 놀라울 정도로 간단해서 “이게 끝이야?” 싶으실 거예요.

    1. 패키지 센터 설치: 시놀로지 DSM 패키지 센터에서 ‘Tailscale’을 검색합니다. 예전엔 수동으로 SPK 파일을 설치했는데, 이제 정식 패키지로 등록되어 정말 편해졌더라고요.
    2. 로그인 및 인증: 설치 후 실행 버튼을 누르면 브라우저 창이 뜨면서 로그인을 요청해요. 구글이나 MS 계정으로 로그인하고 ‘Authorize(승인)’ 버튼만 누르면 끝입니다.
    3. 상태 확인: 시놀로지 제어판의 터미널이나 Tailscale Admin Console(관리자 콘솔)에서 내 NAS에 할당된 100.x.x.x 대역의 IP를 확인하세요.
    시놀로지 DSM 패키지 센터에서 Tailscale 설치 화면 컨셉

    ▲ 패키지 센터에서 클릭 몇 번이면 보안 접속 준비가 완료됩니다.

    3. TrueNAS와 리눅스 서버에서의 Tailscale 설정

    TrueNAS를 사용하거나 별도의 리눅스 서버를 운영하시는 분들도 계시죠? 저도 홈랩 한 켠에서 TrueNAS SCALE을 돌리고 있는데, TrueNAS 외부 접속도 정말 간단해요. App(앱) 메뉴를 통해 바로 설치할 수 있거든요.

    # 일반 리눅스 서버에서 명령어로 설치할 때
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up

    명령어 한 줄이면 설치가 끝나고, 출력되는 URL을 복사해서 브라우저에 붙여넣기만 하면 인증이 완료돼요. 제가 직접 해보니 Docker 컨테이너로 올리는 것보다 호스트에 직접 설치하는 게 네트워크 성능 면에서 더 잘 나오더라고요.

    4. 포트 포워딩 vs Tailscale 비교표

    인프라 쟁이답게 한눈에 보기 편하게 비교표를 만들어 봤습니다. 왜 제가 Tailscale을 고집하는지 감이 오실 거예요.

    항목 포트 포워딩 Tailscale
    보안성 낮음 (포트 노출) 매우 높음 (종단간 암호화)
    설정 난이도 중간 (공유기 설정 필요) 매우 낮음 (로그인 방식)
    CGNAT 환경 불가 완벽 지원
    속도 직결 (최상) 근접 (WireGuard 가속)

    5. ⚠️ 실제 겪은 트러블슈팅: 연결이 안 될 때?

    설정은 다 했는데 가끔 접속이 안 될 때가 있어요. 제가 삽질하며 배운 팁 몇 가지 드릴게요.

    • Key Expiry(키 만료) 주의: 기본적으로 Tailscale 노드 키는 6개월마다 만료돼요. NAS처럼 365일 켜져 있어야 하는 기기는 관리자 콘솔에서 Disable Key Expiry 설정을 꼭 해주세요.
    • 방화벽 설정: 시놀로지 자체 방화벽에서 Tailscale 인터페이스의 트래픽을 차단하고 있지 않은지 확인해 보세요.
    • MagicDNS 활용: IP 주소 외우기 힘들죠? Tailscale의 MagicDNS 기능을 켜면 <code>http://mynas/ 처럼 기기 이름으로 바로 접속할 수 있어요.
    Tailscale 관리자 콘솔 대시보드 기기 목록 시각화

    ▲ 관리자 콘솔에서 기기 이름과 연결 상태를 한눈에 관리할 수 있습니다.

    6. 보너스: Exit Node(출구 노드) 기능 활용하기

    이건 진짜 꿀팁인데, 해외 출장을 가거나 보안이 취약한 공용 와이파이를 쓸 때 NAS를 Exit Node(출구 노드)로 설정해 보세요. 내 모든 인터넷 트래픽이 집 NAS를 거쳐 나가기 때문에, 해외에서도 한국 IP로 뱅킹을 하거나 넷플릭스를 볼 수 있어요. 인프라 엔지니어가 추천하는 최고의 기능 중 하나죠!

    7. 마무리하며

    지금까지 포트포워딩 없이 NAS에 안전하게 접속하는 가장 스마트한 방법인 Tailscale 설정을 알아봤습니다. 처음엔 “남의 서버를 거치는 거 아냐?”라고 의심했는데, 실제 데이터는 Peer-to-Peer(P2P, 기기 간 직접 연결) 방식으로 흐르고 인증만 거치는 구조라 안심하고 쓰고 있어요.

    복잡한 네트워크 설정 때문에 스트레스받지 마시고, 오늘 바로 Tailscale로 안전한 NAS 라이프를 시작해 보세요. 혹시 설정하다 막히는 부분이 있으면 댓글 남겨주세요. 13년 차 짬밥으로 함께 고민해 드리겠습니다!

    스마트폰에서 LTE망을 이용해 NAS 데이터에 접속하는 모습

    ▲ 외부에서도 LTE/5G로 우리 집 NAS에 안전하게 접속된 모습입니다. 🎉

    다음 글에서는 Tailscale을 활용해 여러 대의 서버를 하나로 묶는 Site-to-Site VPN 구축기를 다뤄볼 예정이니 기대해 주세요!

  • [Game] 에뮬레이터 성능 최적화: RetroArch 1.22 및 PCSX2 2.6 설정 가이드

    [Game] 에뮬레이터 성능 최적화: RetroArch 1.22 및 PCSX2 2.6 설정 가이드

    13년차 엔지니어가 에뮬레이션에 진심인 이유

    안녕하세요! 서버실에서 장비들과 씨름한 지 벌써 13년이 된 인프라 엔지니어입니다. 낮에는 수십 대의 서버와 네트워크 장비를 만지지만, 퇴근 후에는 거실 한구석에 마련한 홈랩(Home Lab)에서 고전 게임을 즐기는 게 제 유일한 낙이거든요. 그런데 말입니다, 최신 사양의 PC를 맞췄음에도 불구하고 예전 게임들이 버벅이거나 화면이 찢어지는 현상을 겪어보신 적 없으신가요? 저도 처음엔 ‘아니, 이 사양에 이게 왜 안 돌아가?’라며 당황하며 삽질을 좀 했습니다 ㅎㅎ

    결국 인프라 엔지니어답게 원인을 분석하고 최적화 옵션을 하나하나 건드려 보면서 해결책을 찾았는데요. 이번에는 2026년 8월 기준으로 내용을 다시 손봤습니다. 현재 기준으로는 RetroArch 1.22.2, PCSX2 2.6.0 안정판과 최근 Nightly 계열 흐름을 반영해, 에뮬레이터 성능 최적화, 입력 지연 줄이기, Vulkan 설정, PS2 에뮬레이터 업스케일링 포인트를 중심으로 정리해 볼게요. 자, 저와 함께 서버 튜닝하는 기분으로 세팅하러 가보시죠!

    에뮬레이터 성능 최적화를 위한 하드웨어 추상화 계층 구조도

    에뮬레이션이 호스트 하드웨어에서 어떻게 작동하는지 보여주는 추상화 개념도입니다.

    에뮬레이터 성능, 왜 내 컴퓨터에서도 버벅일까?

    에뮬레이션의 핵심: 하드웨어 추상화와 오버헤드

    우선 간단한 개념부터 짚고 갈게요. 쉽게 말해 에뮬레이션은 ‘A라는 기계의 하드웨어를 B라는 기계 위에서 소프트웨어로 흉내 내는 과정’입니다. 이 과정에서 필연적으로 Overhead(오버헤드, 처리 시간 지연)가 생기게 되죠. 예를 들어, 옛날 콘솔의 CPU 명령어를 지금 우리 PC의 CPU가 이해할 수 있는 언어로 실시간 번역(JIT Recompilation)해야 하거든요. 이게 생각보다 CPU 자원을 엄청나게 잡아먹습니다.

    게다가 단순한 연산 성능뿐만 아니라 그래픽 렌더링 방식의 차이, 오디오 동기화 문제, 디스플레이 주사율 차이까지 고려할 게 정말 많습니다. 우리가 흔히 겪는 ‘렉’은 대부분 이 Sync(동기화) 과정에서 병목 현상이 생기기 때문에 나타나요. 이걸 해결하려면 하드웨어 자원을 효율적으로 분배하는 최적화 설정이 반드시 필요하거든요.

    RetroArch(레트로아크) 최적화: 인풋렉과 티어링 잡기

    RetroArch는 수많은 에뮬레이터 코어를 관리하는 훌륭한 Frontend(프런트엔드)인데요, 기본 설정만 가지고는 100% 성능을 내기가 쉽지 않아요. 특히 최근 버전에서는 Latency(지연 시간)와 Video(비디오) 설정이 더 세분화돼서, 예전처럼 무턱대고 옵션을 다 켜기보다 내 모니터 환경에 맞춰 조절하는 게 중요해졌습니다.

    1. 비디오 및 싱크(Sync) 설정의 정석

    먼저 비디오 드라이버부터 확인해야 합니다. 현재 RetroArch에서는 메뉴 경로가 Settings > Drivers > Video 또는 스킨에 따라 Settings > Video > Output > Video로 보일 수 있는데요, 최근 그래픽 카드라면 여전히 Vulkan(벌칸)이 가장 먼저 시도할 만한 선택지입니다.

    • Settings > Drivers > Video: vulkan으로 설정
    • Settings > Video > Synchronization: VSync(수직 동기화)는 기본적으로 켜는 편이 좋습니다. 티어링 방지와 프레임 페이싱 안정화에 유리하거든요.
    • Hard GPU Sync / Max Swapchain Images / Waitable Swapchains: 인풋렉을 더 줄이고 싶을 때 손대는 옵션입니다. 다만 이건 만능이 아니라, CPU나 GPU 여유가 부족하면 오히려 오디오 지직거림이나 스터터링이 생길 수 있어요.
    • VRR 모니터 사용 시: G-Sync나 FreeSync를 쓰신다면 Sync to Exact Content Framerate 옵션이 더 잘 맞는 경우가 많습니다. 이 경우 60Hz 고정보다 체감이 더 자연스럽더라고요.

    2. Latency(지연 시간)의 혁명: Run-Ahead 기능

    이건 여전히 정말 꿀팁인데요, RetroArch의 Run-Ahead(런어헤드) 기능은 실제 콘솔보다 더 빠른 반응 속도를 보여주기도 합니다. 게임의 프레임을 미리 계산해서 인풋렉을 상쇄하는 기술이죠. 다만 최근에는 Automatic Frame Delay나 Run Pre-Emptive Frames 같은 옵션도 함께 보이기 때문에, 전부 한 번에 과하게 켜기보다는 하나씩 테스트하는 걸 추천드립니다.

    # RetroArch 설정 내 주요 레이턴시 옵션 경로
    Settings -> Latency -> Run-Ahead to Reduce Lag: On
    Number of Frames to Run-Ahead: 1 (보통 1~2프레임이 적당해요)
    Automatic Frame Delay: 필요할 때만 소폭 조정
    Run Pre-Emptive Frames: 특정 코어에서만 신중하게 테스트
    

    특히 런어헤드는 세이브스테이트 기반이라 코어 호환성 영향을 받습니다. 프레임이 흔들리거나 이상한 롤백 느낌이 난다면 숫자를 더 올리는 게 아니라, 오히려 1프레임으로 낮추거나 끄는 쪽이 정답일 때가 많아요.

    RetroArch 설정 메뉴에서 벌칸 렌더러를 선택하는 화면

    RetroArch에서 Vulkan 렌더러와 인풋렉 방지 설정을 적용하는 메뉴 화면입니다.

    PCSX2(PS2 에뮬레이터) 최적화: 고해상도로 즐기는 고전 게임

    PS2 에뮬레이터 PCSX2는 사양을 꽤 타는 편이거든요. 특히 3D 게임이 많아서 그래픽 설정이 성능을 좌우하죠. 예전에는 1.7.0 Nightly 기준으로 설명하는 글이 많았지만, 이제는 PCSX2 2.6.0 안정판이 기준선이라고 보시면 됩니다. Nightly는 2.7.x 계열로 계속 업데이트되고 있지만, 대부분의 분들에게는 안정판부터 맞추는 게 덜 피곤해요.

    1. 그래픽 렌더러와 내부 해상도(Internal Resolution) 설정

    기본 해상도(Native)로 돌리면 화면이 너무 뭉개져서 볼품없거든요. 여기서 우리는 Upscaling(업스케일링)의 힘을 빌려야 하거든요. 다만 요즘 PCSX2는 그래픽 API 선택도 예전보다 똑똑해져서, 무조건 하나만 고집할 필요는 없어졌습니다.

    1. Graphics API: 잘 모르겠다면 Automatic이 먼저입니다. 수동 선택이 필요하면 보통 Vulkan을 우선 추천하지만, Intel iGPU에서 불안정하면 Direct3D 11/12로 바꿔보는 게 더 낫습니다.
    2. Internal Resolution: 1080p 모니터라면 3x Native(1080p), 1440p면 4x, 4K라면 6x 전후가 무난합니다. 욕심내서 너무 올리면 GPU 사용률만 치솟고 프레임 타임이 망가질 수 있어요.
    3. Texture Preloading: 게임 중 스터터링이 거슬리면 Full (Hash Cache)를 시도해 볼 만합니다. 다만 게임과 시스템에 따라 기본값이 더 나을 때도 있으니, 이것도 역시 고정 정답은 아닙니다.

    2. 스피드핵(Speedhacks)과 사이클 레이트 조절

    성능이 부족하다면 Speedhacks를 만지고 싶어지는데요, 요즘 PCSX2는 기본 설정 자체가 예전보다 훨씬 좋아져서 무턱대고 언더클럭부터 거는 건 오히려 독이 될 때가 많습니다. 제 경험상 요즘은 기본값 유지를 먼저 해보고, 그다음에 정말 부족할 때만 한 단계씩 조정하는 편이 훨씬 안정적이더라고요.

    옵션명 권장 접근 효과
    EE Cycle Rate 기본값에서 시작, 부족할 때만 -1 단계 수준으로 테스트 가상 CPU 부하를 조절해 프레임 확보
    EE Cycle Skip 가능하면 0 유지, 정말 안 될 때만 Mild Skip(1) 연산량이 많을 때 프레임을 스킵해 속도 유지

    특히 특정 게임에서만 느리다면 글로벌 설정을 바꾸기보다 Game Properties로 게임별 프로파일을 따로 두는 게 훨씬 깔끔합니다. 요즘 PCSX2는 이 방식이 정말 편해졌거든요.

    PCSX2 네이티브 해상도와 4K 업스케일링 품질 비교

    저해상도 네이티브 화면과 4K 업스케일링 화면의 퀄리티 차이를 보여주는 비교 이미지입니다.

    2026년 업데이트: VRR, Automatic 렌더러, OSD로 병목 찾기

    최근 들어 제 체감상 가장 큰 변화는 무조건 이 옵션 하나보다 자동화와 계측이 더 중요해졌다는 점입니다. 최신 버전의 RetroArch와 PCSX2는 예전보다 기본값이 꽤 똑똑해졌고, 병목을 눈으로 확인할 수 있는 도구도 좋아졌거든요.

    • RetroArch + VRR: G-Sync, FreeSync, VRR 모니터를 쓰신다면 Sync to Exact Content Framerate를 먼저 점검해 보세요. 144Hz나 165Hz 모니터에서 60Hz로 억지 고정하는 것보다 프레임 페이싱이 훨씬 자연스러운 경우가 많습니다.
    • RetroArch + 오디오 싱크: Audio Latency를 너무 낮추면 오히려 지직거림이 생길 수 있습니다. 35ms~64ms 전후에서 안정성을 먼저 확보하는 게 체감상 더 낫더라고요.
    • PCSX2 + Automatic: 그래픽 API를 잘 모르겠다면 Automatic으로 시작하는 게 요즘은 정답에 가깝습니다. 성능보다 안정성을 먼저 잡아주거든요.
    • PCSX2 + OSD: Settings > Graphics > OSD에서 카운터를 켜면 Readbacks, Texture Uploads, Texture Copies 같은 병목을 볼 수 있습니다. 막연히 해상도만 낮추는 것보다 훨씬 빠르게 원인을 찾을 수 있어요.
    • 노트북 사용자: NVIDIA WhisperMode나 절전 전원 계획 때문에 40FPS 근처에서 묶이는 경우가 아직도 많습니다. 의외로 설정 하나 때문에 고생하는 분들이 많더라고요.

    ⚠️ 직접 겪은 트러블슈팅: 사운드 지직거림과 화면 찢어짐

    설정을 다 마쳤는데 소리가 지직거리거나 화면이 잘린다면? 저도 처음엔 사운드 카드 문제인 줄 알았는데, 사실 에뮬레이션 속도가 100%가 안 나와서 생기는 현상이더라고요.

    • Audio Crackling: 프레임 드랍이나 과도한 저지연 세팅이 원인일 때가 많습니다. RetroArch라면 Run-Ahead, Frame Delay, Audio Latency를 한꺼번에 욕심내지 말고 하나씩 되돌려 보세요.
    • Screen Tearing: VSync를 켜거나, VRR을 제대로 활성화하거나, TV라면 반드시 Game Mode를 켜는 게 가장 확실해요.
    • Shaders(쉐이더) 스터터링: 처음 실행 시 셰이더 컴파일 때문에 잠깐 끊길 수 있습니다. 특히 4K에서 무거운 CRT 쉐이더를 올리면 프레임 페이싱이 무너질 수 있으니 단계적으로 올려보세요.
    • PCSX2 저속 구동: ISO를 USB 외장 저장장치에서 바로 읽으면 체감 성능이 크게 떨어질 수 있습니다. 가능하면 SATA SSD나 NVMe 쪽에 두는 편이 낫습니다.

    최적화 전후 성능 비교 데이터

    제가 홈랩에서 직접 테스트한 결과입니다. 확실히 설정을 만진 후가 만족도가 높네요!

    항목 최적화 전 (기본) 최적화 후 (Vulkan + 튜닝)
    평균 프레임 (FPS) 45 FPS 60 FPS (고정)
    인풋렉 (Input Lag) 85ms 15ms
    화면 품질 SD (480i) FHD (1080p) 업스케일
    에뮬레이터 성능 최적화 전후 FPS 및 지연 시간 비교 인포그래픽

    FPS 향상과 지연 시간 감소를 한눈에 보여주는 요약 차트입니다.

    마무리하며: 쾌적한 레트로 라이프를 위하여

    오늘 제가 준비한 내용은 여기까지입니다. 13년 차 인프라 엔지니어로 살면서 느낀 건, 서버든 게임 에뮬레이터든 결국 환경에 맞는 적절한 자원 배분이 핵심이라는 점입니다. 그리고 2026년 기준으로는 한 가지 정답을 외우는 것보다, 내 디스플레이 환경, 내 GPU 특성, 내가 돌리는 코어와 게임에 맞춰 미세 조정하는 쪽이 훨씬 중요해졌습니다.

    처음엔 옵션들이 복잡해 보일 수 있지만, 하나씩 바꿔보며 최적의 값을 찾아가는 과정 자체가 또 하나의 즐거움이 아닐까 싶네요. 혹시 설정하시다가 막히는 부분이 있거나, 특정 게임에서만 발생하는 문제가 있다면 댓글로 남겨주세요! 저도 같이 고민해 보고 해결책을 찾아보겠습니다. 그럼 모두 즐거운 레트로 게임 라이프를 즐기셨으면 좋겠어요. 감사합니다!

    🔄 마지막 업데이트: 2026년 08월

  • [3D Printer] 3D프린터 베드 레벨링 완벽 가이드: 출력 실패 줄이는 핵심 설정

    [3D Printer] 3D프린터 베드 레벨링 완벽 가이드: 출력 실패 줄이는 핵심 설정

    3D프린터 베드 레벨링 완벽 가이드: 출력 실패 줄이는 핵심 설정

    안녕하세요, 13년차 서버실 지킴이, 그리고 홈랩에서 다양한 장비들을 굴려보는 인프라 엔지니어입니다. 오늘은 3D프린터 사용자라면 한 번쯤은 겪어봤을, 아니 어쩌면 매일매일 씨름하고 있을 바로 그 문제! 3D프린터 베드 레벨링(Bed Leveling)에 대해 이야기해보려고 합니다. 3D프린터 출력 실패의 가장 큰 원인 중 하나가 바로 이 베드 레벨링이 제대로 안 되어 베드 안착(Bed Adhesion)에 문제가 생기는 거거든요. 저도 처음엔 ‘이게 뭐야, 그냥 인쇄 버튼 누르면 되는 거 아니야?’ 했다가 수많은 출력물을 쓰레기통으로 보냈던 경험이 있습니다. 이 삽질을 통해 얻은 노하우를 오늘 아낌없이 풀어볼게요.

    베드에서 떨어져 실패한 3D프린터 출력물과 엉킨 필라멘트

    3D 프린터 출력 실패의 흔한 모습, 베드 레벨링이 잘못되면 이렇게 됩니다.

    베드 레벨링, 왜 그렇게 중요할까요? (핵심 개념 이해하기)

    쉽게 말해, 베드 레벨링(Bed Leveling)은 3D프린터의 노즐(Nozzle)과 출력물이 안착될 베드(Bed) 사이의 거리를 균일하게 맞춰주는 작업입니다. 이 거리가 너무 멀면 출력물이 베드에 제대로 붙지 못하고, 너무 가까우면 노즐이 베드를 긁거나 필라멘트가 제대로 압출되지 못하죠. 결국, 첫 번째 레이어(First Layer)가 안정적으로 베드에 안착(Adhesion)하는 것이 3D프린팅 성공의 8할이라고 봐도 무방할 정도로 중요하거든요. 첫 단추를 잘 꿰어야 옷이 완성되듯이 말이죠.

    베드 레벨링은 크게 두 가지 방식으로 나뉩니다.

    • 수동 레벨링(Manual Leveling): 사용자가 직접 베드 아래의 조절 나사를 돌려 수평을 맞추는 방식입니다. 가장 기본적인 방법이죠.
    • 오토 레벨링(Auto Leveling): 센서(예: BLTouch, CR-Touch 등)를 이용해 베드의 높이 편차를 자동으로 측정하고, 소프트웨어적으로 보정해주는 방식입니다. 사용자 편의성이 훨씬 좋지만, 초기 설정은 필요해요.

    실전 구현: 꼼꼼한 수동 레벨링 따라하기

    대부분의 3D프린터는 처음 세팅할 때 수동 레벨링을 먼저 해줘야 합니다. 저는 Ender 3나 Anycubic Vyper 같은 프린터들을 처음 사용할 때 이 과정을 거쳤는데요, 생각보다 어렵지 않으니 차근차근 따라 해보세요.

    준비물:

    • 일반 A4 용지 한 장 (또는 0.1mm 필러 게이지(Feeler Gauge))
    • 청결한 프린터 베드 (알코올 등으로 닦아주면 좋아요)
    1. 베드와 노즐 예열(Preheat): 프린팅 시 설정할 온도로 노즐과 베드를 예열해주세요. 금속은 온도가 변하면 미세하게 팽창/수축하므로, 실제 작업 환경과 동일하게 맞춰주는 것이 중요합니다.
    2. 노즐 초기 위치 이동: 프린터 메뉴에서 ‘Auto Home‘ 또는 ‘Home All Axes’를 실행하여 노즐을 원점(0,0,0)으로 이동시킵니다.
    3. 베드 코너로 노즐 이동: 프린터 메뉴나 G-code(G0 X20 Y20 Z0 같은)를 이용해 노즐을 베드의 왼쪽 하단 코너(corner) 근처로 이동시킵니다. 너무 끝으로 가면 클립에 걸릴 수 있으니 살짝 안쪽으로 이동하는 것이 좋아요.
    4. A4 용지로 간격 확인: 노즐과 베드 사이에 A4 용지를 넣고 움직여봅니다. 이때 종이가 약간의 저항(slight drag)을 느끼며 움직여야 합니다. 너무 뻑뻑하면 노즐이 너무 낮은 것이고, 너무 헐거우면 노즐이 너무 높은 것입니다.
    5. 베드 조절 나사 조정: 해당 코너 아래에 있는 베드 조절 나사를 돌려 높이를 맞춰줍니다. 노즐이 낮으면 나사를 시계 반대 방향으로 돌려 베드를 낮추고, 노즐이 높으면 시계 방향으로 돌려 베드를 높입니다.
    6. 나머지 코너 반복: 노즐을 오른쪽 하단, 오른쪽 상단, 왼쪽 상단 코너 순서로 이동시키면서 4~5단계를 반복합니다.
    7. 중앙 확인 및 재확인: 네 코너를 모두 맞춘 후에는 베드 중앙(center)에서도 동일하게 간격을 확인해줍니다. 그리고 다시 처음 코너부터 한 바퀴 더 반복하여 미세 조정을 해주는 것이 좋습니다. 한 코너를 맞추면 다른 코너에 영향을 줄 수 있거든요.
    3D프린터 노즐과 베드 사이에 A4 용지를 넣고 베드 레벨링 나사를 조절하는 손

    수동 레벨링의 핵심, A4 용지를 이용한 간격 조절입니다. 너무 빡빡하지도, 너무 헐겁지도 않게!

    실전 구현: 똑똑한 오토 레벨링 활용하기

    최근에는 오토 레벨링(Auto Leveling) 기능이 있는 프린터가 많아서 훨씬 편리해졌습니다. 저도 BLTouch나 CR-Touch 같은 센서가 달린 프린터를 써보고는 ‘와, 이거 진짜 편하네!’ 싶었거든요. 하지만 오토 레벨링도 마법은 아닙니다. 기본적인 수동 레벨링이 어느 정도 되어 있어야 더 정확한 보정을 해주죠.

    1. 센서 장착 및 펌웨어 설정: 오토 레벨링 센서(예: BLTouch)를 장착하고, 해당 센서에 맞는 펌웨어(firmware)를 프린터에 업로드해야 하는데, 이 과정은 프린터 모델마다 조금씩 달라서 해당 매뉴얼을 꼼꼼히 확인하는 게 중요합니다.
    2. Z-Offset 설정: 센서는 베드의 높이를 측정하지만, 실제 노즐 끝과의 거리는 다르죠. 이 차이를 Z-Offset(Z 오프셋)으로 설정해줘야 하는데, 노즐을 베드에 거의 닿게 내린 후 A4 용지 한 장이 간신히 들어갈 정도로 Z-Offset 값을 조절하면 됩니다. 이 값이 정말 중요한데, 이게 조금만 벗어나도 출력 결과가 확 달라진다니까요!
    3. 베드 메시(Bed Mesh) 생성: 프린터 메뉴에서 ‘Auto Level’ 또는 ‘Measure Bed’ 기능을 실행합니다. 센서가 베드의 여러 지점을 자동으로 측정하여 베드 메시(Bed Mesh), 즉 베드의 높이 지도를 생성합니다.
    4. 메시 저장 및 활성화: 생성된 베드 메시를 저장하고, 프린팅 시 이 메시를 활성화하는 G-code(예: G28 후 G29 또는 M420 S1)를 시작 G-code에 추가해줍니다.

    💡 팁: 오토 레벨링 센서를 사용하더라도, 베드 조절 나사를 너무 느슨하게 두지 말고 어느 정도 수평을 맞춰두는 것이 좋습니다. 센서가 보정할 수 있는 범위에는 한계가 있거든요.

    BLTouch 센서가 3D프린터 베드를 자동으로 측정하며 오토 레벨링하는 모습

    BLTouch 센서가 베드를 꼼꼼히 측정하여 베드 메시를 생성하는 모습입니다.

    ⚠️ 삽질 경험 공유: 흔한 출력 실패 원인과 해결책

    저도 3D프린터 출력 실패를 숱하게 겪으면서 다양한 삽질을 했는데요, 베드 레벨링과 관련하여 가장 많이 겪었던 문제들을 몇 가지 공유해봅니다.

    문제 1: 출력물이 자꾸 베드에서 떨어져요 (Poor Adhesion)

    • 원인: 노즐이 베드에서 너무 높거나, 베드가 오염되었거나, 베드 온도가 너무 낮을 때 발생합니다.
    • 해결책:
      1. 레벨링 재조정: 노즐과 베드 간격이 너무 멀지 않은지 다시 한번 확인합니다. A4 용지가 살짝 저항을 느끼며 움직이는 그 미묘한 간격이 중요합니다.
      2. 베드 청소: 지문, 기름때 등이 베드에 묻어 있으면 접착력이 떨어집니다. 이소프로필 알코올(IPA)이나 따뜻한 물과 주방 세제로 깨끗하게 닦아주세요.
      3. 베드 온도 조절: 사용하는 필라멘트(Filament)에 권장되는 베드 온도를 확인하고 충분히 예열될 시간을 줍니다. PLA는 50~60°C, ABS는 90~110°C 정도가 일반적입니다.
      4. 베드 안착 보조제 사용: 글루 스틱(Glue Stick), 헤어 스프레이(Hair Spray), PEI 시트(PEI Sheet) 등 베드 안착을 돕는 보조제를 사용해보세요. 저는 PEI 시트 위에 글루 스틱을 바르는 조합을 자주 썼는데, 이게 베드 안착에는 최고더라고요.

    문제 2: 첫 레이어가 너무 얇거나 노즐이 베드를 긁어요 (Nozzle Too Low)

    • 원인: 노즐이 베드에 너무 가까워서 필라멘트가 제대로 압출되지 못하거나 노즐이 베드를 긁는 소리가 납니다.
    • 해결책:
      1. 레벨링 재조정: 베드 조절 나사를 시계 방향으로 돌려 베드를 미세하게 낮추거나, Z-Offset 값을 양수(+) 방향으로 조정합니다.
      2. Z-Offset 확인: 오토 레벨링을 사용하는 경우, Z-Offset 값이 정확한지 다시 한번 확인하고 조정이 필요할 수 있습니다.
    노즐 높이에 따른 3D프린터 첫 레이어 비교: 너무 높음, 너무 낮음, 완벽

    잘못된 베드 레벨링으로 인한 첫 레이어의 문제점과 완벽한 첫 레이어의 비교 이미지입니다.

    출력 전 베드 안착 재료들 (Bed Adhesion Materials)

    완벽한 베드 레벨링 후에도 가끔은 출력을 꽉 잡아줄 무언가가 필요할 때가 있습니다. 특히 서포트(Support)가 많은 복잡한 모델이나 수축(Warping)이 심한 재료를 쓸 때 유용하죠. 제가 써본 몇 가지를 소개해드릴게요.

    • 글루 스틱 (Glue Stick): 가장 흔하고 저렴합니다. 출력 후 물로 쉽게 닦아낼 수 있어요.
    • 헤어 스프레이 (Hair Spray): 접착력이 좋고 넓은 면적에 빠르게 뿌릴 수 있습니다.
    • PEI 시트 (PEI Sheet): 내열성이 좋고 접착력이 뛰어나서 많이 사용됩니다. 저도 PEI 시트를 정말 좋아합니다.
    • 유리 베드 (Glass Bed): 표면이 매우 평평하고 깔끔한 바닥면을 얻을 수 있지만, 접착력은 보조제가 필요할 수 있습니다.

    검증 및 결과: 완벽한 첫 레이어 확인하기

    레벨링이 잘 되었는지 확인하는 가장 좋은 방법은 첫 레이어 테스트 출력(First Layer Test Print)을 해보는 것입니다. 단순한 사각형이나 원 여러 개를 프린팅해서, 각 부분의 필라멘트 안착 상태와 두께를 확인하는 거죠.

    • ✅ 완벽한 첫 레이어: 베드에 필라멘트가 균일하게 잘 붙어 있고, 너무 얇지도 두껍지도 않게 적당히 납작하게 압출되어 보입니다. 옆 라인들과 빈틈없이 매끄럽게 연결되는 것이 이상적입니다.
    • ⚠️ 너무 높은 노즐: 라인들이 서로 연결되지 않고 둥글게 보이며, 베드에서 쉽게 떨어집니다.
    • ⚠️ 너무 낮은 노즐: 라인들이 너무 납작하게 눌리거나, 노즐이 베드를 긁는 소리가 나고, 필라멘트가 제대로 나오지 않아 중간에 끊길 수 있습니다.

    성공적인 첫 레이어를 보면 정말 기분이 좋더라고요! 🎉

    완벽하게 안착된 첫 레이어 테스트 출력물입니다. 이 정도면 출력 성공은 따놓은 당상이죠!

    마무리하며: 꾸준함이 답이다

    오늘은 3D프린터 베드 레벨링에 대해 자세히 알아봤습니다. 3D프린터 출력 실패의 주범인 베드 안착 문제를 해결하는 가장 기본적이면서도 중요한 과정이죠. 처음에는 조금 귀찮고 어렵게 느껴질 수 있지만, 몇 번 해보면 금방 익숙해질 겁니다. 저처럼 삽질을 줄이고 성공적인 출력물을 얻기 위해서는 꾸준한 관리와 레벨링 확인이 필수라는 점, 꼭 기억해주세요!

    다음번에는 3D프린터 출력물의 뒤틀림(Warping)이나 스트링잉(Stringing) 같은 다른 흔한 문제 해결법에 대해서도 다뤄보겠습니다. 혹시 궁금한 점이나 공유하고 싶은 삽질 경험이 있다면 언제든지 댓글로 남겨주세요!

  • [Cloud] AWS 비용 최적화: EC2, S3, RDS 절감 전략 및 Cost Explorer 활용 가이드

    [Cloud] AWS 비용 최적화: EC2, S3, RDS 절감 전략 및 Cost Explorer 활용 가이드

    클라우드 비용, 왜 통제해야 할까요? 13년차 서버실의 AWS 비용 최적화 이야기

    안녕하세요! 13년차 인프라 엔지니어, “13년차의 서버실” 운영자입니다. 클라우드를 오래 사용하다 보면 다들 한 번쯤 겪는 일이 있죠. “이번 달 AWS 요금이 왜 이렇게 많이 나왔지?” 하고 깜빡 놀라는 순간 말이에요. 저도 처음엔 이게 뭔가 싶었는데, 실제 운영 환경뿐만 아니라 제 홈랩에서 다양한 서비스를 돌리면서도 종종 이런 경험을 하더라고요. 클라우드가 편리한 건 맞지만, 비용 관리에 소홀하면 예상치 못한 지출이 발생하기 십상입니다.

    오늘은 제가 13년간 쌓아온 경험을 바탕으로 AWS 비용 최적화를 위한 실질적인 전략들을 공유해볼까 합니다. 특히 많은 분들이 사용하는 EC2, S3, RDS 서비스의 비용 절감 방안과 함께, 우리 돈이 어디로 새고 있는지 파악할 수 있는 AWS Cost Explorer 활용 가이드까지 자세히 알려드릴게요. 클라우드 비용 때문에 밤잠 설치셨던 분들이라면, 오늘 글이 정말 유용할 거예요! ✅

    AWS 클라우드 비용 증가 추이와 효율적인 최적화 전략 필요성을 보여주는 다이어그램

    AWS 클라우드 비용 증가 추이와 효율적인 최적화 전략 필요성을 보여주는 다이어그램

    AWS 비용 최적화의 핵심 개념: “쓰는 만큼 낸다”의 함정

    AWS를 포함한 클라우드의 가장 큰 장점 중 하나는 바로 Pay-as-you-go(사용한 만큼 지불) 모델이에요. 필요한 만큼만 쓰고, 쓴 만큼만 비용을 내니 얼마나 합리적인가요? 하지만 이 “합리적”이라는 말 뒤에는 무서운 함정이 숨어있습니다. 바로 “쓰고 있는지도 모르게 계속 돈이 나간다”는 거죠. 저도 처음엔 이게 참 헷갈리더라고요.

    클라우드 비용 최적화(Cost Optimization)는 단순히 요금을 줄이는 것을 넘어, 우리가 지불하는 비용 대비 최대 가치(Value)를 얻는 것을 목표로 합니다. 이걸 요즘은 FinOps(Financial Operations)라고 부르기도 하죠. 핵심은 크게 세 가지입니다:

    • Right-sizing (적정 크기 조정): 워크로드에 맞는 최적의 리소스 크기를 찾는 거예요. 너무 과하게 프로비저닝하면 돈 낭비겠죠?
    • Discount Programs (할인 프로그램 활용): 예약 인스턴스(Reserved Instances, RI)나 세이빙 플랜(Savings Plans)처럼 장기 약정을 통해 할인을 받는 방법입니다.
    • Automation (자동화): 사용하지 않는 리소스는 자동으로 중지하거나 종료해서 불필요한 비용을 줄이는 거죠.

    이 개념들을 잘 이해하고 적용하는 게 중요합니다. 저도 처음엔 무조건 싸게만 하려다가 성능 이슈로 삽질 좀 했습니다. ㅎㅎ

    EC2 비용 절감 전략: 인스턴스 유형 선택부터 예약 인스턴스까지

    AWS EC2(Elastic Compute Cloud)는 클라우드 컴퓨팅의 핵심 서비스인 만큼, 여기서 나가는 비용이 전체 청구서의 상당 부분을 차지할 때가 많습니다. EC2 비용을 줄이는 몇 가지 실질적인 방법을 소개할게요.

    1. Right-sizing (적정 크기 조정)

    가장 기본적이면서도 중요한 전략입니다. 제가 홈랩에서 이것저것 실험하다 보면, 처음에 테스트용으로 큰 인스턴스를 띄워놓고 나중에 줄이는 걸 깜빡하는 경우가 많아요. 😅

    1. 모니터링 데이터 분석: CloudWatch 같은 도구를 활용해서 EC2 인스턴스의 CPU 사용률, 메모리 사용량, 네트워크 I/O 등을 꾸준히 확인하면 돼요.
    2. 불필요한 리소스 식별: 평균 CPU 사용률이 10~20% 미만으로 계속 유지된다면, 더 작은 인스턴스 타입으로 변경할 여지가 크다는 뜻입니다.
    3. Auto Scaling (오토 스케일링) 활용: 워크로드 변동이 심한 서비스라면, 트래픽에 따라 자동으로 인스턴스 개수를 조절하는 Auto Scaling 그룹을 구성하는 게 훨씬 효율적입니다.

    2. 구매 옵션 활용

    EC2는 다양한 구매 옵션을 제공하는데, 이를 잘 활용하면 비용을 크게 아낄 수 있어요.

    • On-Demand Instances (온디맨드 인스턴스): 가장 유연하지만 가장 비싼 옵션이에요. 단기적인 사용이나 예측 불가능한 워크로드에 적합합니다.
    • Reserved Instances (예약 인스턴스, RI): 1년 또는 3년 약정을 통해 온디맨드 가격 대비 최대 75%까지 할인받을 수 있죠. 꾸준히 사용량이 있는 베이스라인 워크로드에는 정말 좋아요. 저도 프로덕션 환경에서는 거의 RI를 사용합니다.
    • Savings Plans (세이빙 플랜): RI보다 더 유연한 할인 모델입니다. 컴퓨팅 사용량(시간당 $X)을 약정하면 EC2, Fargate, Lambda 등 다양한 컴퓨팅 서비스에 할인이 적용되거든요.
    • Spot Instances (스팟 인스턴스): AWS의 여유 컴퓨팅 자원을 경매 방식으로 저렴하게 구매하는 옵션이에요. 온디맨드 대비 최대 90%까지 저렴하지만, AWS가 자원이 필요하면 언제든지 회수해갈 수 있습니다. 배치 작업, 개발/테스트 환경처럼 중단되어도 괜찮은 워크로드에 정말 좋아요.

    3. 사용하지 않는 리소스 중지/종료

    이건 정말 중요합니다! 개발/테스트용 인스턴스를 퇴근할 때 중지(Stop)하거나, 아예 필요 없으면 종료(Terminate)하는 습관을 들여야 해요. 중지된 인스턴스는 컴퓨팅 비용은 나가지 않지만, EBS(Elastic Block Store) 볼륨 비용은 계속 청구되니 주의해야 합니다. 제가 예전에 개발팀에서 테스트용으로 띄워놓은 인스턴스들을 정리 안 해서 비용이 꽤 많이 나온 적이 있었죠. 😅

    S3 비용 절감 전략: 스토리지 클래스와 수명 주기 정책 활용

    AWS S3(Simple Storage Service)는 무제한에 가까운 스토리지 서비스를 제공하지만, 데이터를 어떻게 저장하고 관리하느냐에 따라 비용이 천차만별이에요. 저도 처음엔 무조건 S3 Standard에 다 때려 박았다가 나중에 후회했었죠. ㅎㅎ

    1. S3 Storage Classes (스토리지 클래스) 활용

    S3는 데이터 접근 빈도와 복원 요구 사항에 따라 다양한 스토리지 클래스를 제공합니다. 데이터의 특성에 맞춰 올바른 클래스를 선택하는 게 핵심이에요.

    여기 주요 S3 스토리지 클래스를 비교한 표가 있습니다. 💡

    AWS S3 스토리지 클래스별 비용, 성능, 사용 사례를 비교한 표

    AWS S3 스토리지 클래스별 비용, 성능, 사용 사례를 비교한 표

    스토리지 클래스 주요 특징 적합한 용도 비용 (상대적)
    S3 Standard 자주 액세스, 높은 처리량 웹사이트 콘텐츠, 모바일/게임 앱, 빅데이터 분석 높음
    S3 Standard-IA (Infrequent Access) 자주 액세스하지 않지만 필요 시 빠르게 검색 재해 복구 백업, 장기 아카이빙 중간
    S3 One Zone-IA IA와 유사하나 단일 AZ 저장, 가용성 낮음 보조 백업, 재생성 가능한 데이터 Standard-IA보다 약간 낮음
    S3 Glacier 장기 아카이빙, 몇 분~몇 시간 내 검색 규제 준수 아카이브, 의료 기록 낮음
    S3 Glacier Deep Archive 가장 저렴한 장기 아카이빙, 몇 시간~12시간 내 검색 법적 보존, 미디어 아카이브 매우 낮음

    2. Lifecycle Policies (수명 주기 정책) 설정

    이건 정말 제가 강력하게 추천하는 기능입니다! 수명 주기 정책(Lifecycle Policies)을 사용하면, 특정 기간이 지난 객체를 자동으로 더 저렴한 스토리지 클래스로 전환하거나 아예 삭제할 수 있어요. 예를 들어, 30일이 지난 로그 파일은 S3 Standard-IA로, 90일이 지나면 Glacier로 옮기고, 1년이 지나면 영구 삭제하는 식이죠. 이걸 설정하고 나면 정말 비용이 확 줄어드는 걸 경험하실 수 있을 거예요. 🎉

    예를 들어, 30일 후 STANDARD_IA로 전환하고 365일 후 만료시키는 정책은 아래와 같은 JSON으로 정의하면 돼요. AWS CLI를 사용하면 정말 간단하게 적용할 수 있습니다.

    {\n  "Rules": [\n    {\n      "ID": "TransitionToIAAndExpire",\n      "Filter": {\n        "Prefix": "logs/"\n      },\n      "Status": "Enabled",\n      "Transitions": [\n        {\n          "Days": 30,\n          "StorageClass": "STANDARD_IA"\n        }\n      ],\n      "Expiration": {\n        "Days": 365\n      }\n    }\n  ]\n}
    aws s3api put-bucket-lifecycle-configuration \\\n  --bucket your-bucket-name \\\n  --lifecycle-configuration file://lifecycle-policy.json

    RDS 비용 절감 전략: 데이터베이스 최적화와 예약 인스턴스

    AWS RDS(Relational Database Service)는 관리형 데이터베이스 서비스로, 많은 분들이 편리함 때문에 사용하죠. 하지만 데이터베이스도 EC2 못지않게 비용이 많이 나갈 수 있어요. 특히 Multi-AZ(다중 AZ) 설정은 가용성을 높여주지만 비용도 그만큼 증가하죠.

    1. Right-sizing (적정 크기 조정)

    EC2와 마찬가지로, RDS 인스턴스도 워크로드에 맞는 적절한 크기를 선택하는 것이 정말 중요해요. CloudWatch 지표(CPU, 메모리, Read/Write IOPS)를 분석해서 불필요하게 큰 인스턴스를 사용하고 있지는 않은지 확인하세요. 특히 개발/테스트 환경에서는 작은 인스턴스 타입을 사용하고, 필요할 때만 잠시 스케일 업(Scale Up)하는 전략도 효과적입니다.

    2. Reserved Instances (예약 인스턴스, RI) 활용

    RDS도 EC2처럼 예약 인스턴스를 구매할 수 있어요. 1년 또는 3년 약정을 통해 온디맨드 가격 대비 최대 70% 이상 할인받을 수 있거든요. 프로덕션 데이터베이스처럼 꾸준히 운영해야 하는 서비스에는 정말 필수적인 전략입니다. 저도 운영 중인 모든 프로덕션 RDS는 RI로 구매해서 사용하고 있어요.

    3. 개발/테스트용 RDS 인스턴스 중지/시작

    이건 정말 꿀팁입니다! ⚠️ RDS는 EC2와 달리 “중지(Stop)” 기능이 없었는데, 이제는 최대 7일까지 중지할 수 있게 됐어요. 개발/테스트용 데이터베이스라면 업무 시간 외에는 중지해두고, 필요할 때만 다시 시작(Start)해서 컴퓨팅 비용을 아낄 수 있습니다. (스토리지 비용은 계속 발생하긴 해요)

    콘솔에서 해당 RDS 인스턴스를 선택하고 ‘작업(Actions)’ 메뉴에서 ‘중지(Stop)’를 클릭하면 끝입니다. 저도 홈랩에서 테스트하는 DB들은 이 기능을 적극 활용하고 있어요. 💡

    4. 백업 및 스냅샷 보존 정책 최적화

    RDS는 자동 백업과 스냅샷을 제공하는데, 이 보존 기간이 길어질수록 스토리지 비용이 증가해요. 필요 없는 백업은 삭제하고, 보존 기간을 합리적으로 설정해서 불필요한 비용 지출을 막아야 합니다.

    AWS Cost Explorer 활용 가이드: 우리 돈은 어디로 새고 있을까?

    아무리 전략을 잘 세워도, 우리 비용이 어디서 어떻게 발생하는지 모르면 AWS 비용 최적화는 불가능합니다. 이때 필요한 것이 바로 AWS Cost Explorer(코스트 익스플로러)예요. 저도 처음엔 이 복잡한 대시보드가 뭔가 싶었는데, 몇 번 써보니 정말 편하더라고요.

    1. Cost Explorer 접속 및 기본 사용법

    1. AWS Management Console에 로그인 한 후, 검색창에 “Cost Explorer”를 입력하면 접속할 수 있어요.
    2. 기본적으로 지난 12개월 또는 현재 월의 비용 추이를 그래프로 보여줍니다.

    2. 비용 분석 필터 및 그룹화

    Cost Explorer의 강력한 기능은 바로 필터링(Filtering)과 그룹화(Grouping)입니다. 이걸 활용하면 비용을 다양한 관점에서 분석할 수 있거든요.

    • Service (서비스): EC2, S3, RDS 등 서비스별로 비용을 확인할 수 있어요.
    • Region (리전): 특정 리전에서 발생하는 비용을 분석할 수 있습니다.
    • Usage Type (사용 유형): 데이터 전송(Data Transfer), 스토리지(Storage) 등 세부 사용 유형별로 비용을 볼 수 있어요.
    • Tag (태그): 가장 유용한 기능 중 하나입니다. 여러분이 리소스에 “Project”, “Environment”, “Owner” 같은 태그를 잘 붙여놓았다면, 태그별로 비용을 그룹화해서 어떤 프로젝트가 비용을 많이 쓰는지, 어떤 팀이 비용 효율적인지 파악할 수 있어요. “태그는 사랑입니다!” 제가 늘 강조하는 부분이죠.
    • Linked Account (연결된 계정): AWS Organizations를 사용한다면, 각 계정별 비용을 분석할 수 있습니다.

    이 필터들을 조합해서 “지난달 us-east-1 리전에서 실행된 개발 환경 EC2 인스턴스의 비용” 같은 복잡한 쿼리도 쉽게 만들 수 있어요.

    AWS Cost Explorer 대시보드에서 서비스별 비용을 분석하는 화면 예시

    AWS Cost Explorer 대시보드에서 서비스별 비용을 분석하는 화면 예시

    3. 예산(Budgets) 설정 및 알림

    비용을 분석하는 것만큼 중요한 것이 예산(Budgets) 설정입니다. Cost Explorer에서 특정 서비스나 태그, 또는 전체 계정에 대한 월별 예산을 설정하고, 예산의 일정 비율(예: 80%, 100%)에 도달했을 때 이메일이나 SNS 알림을 받도록 설정할 수 있어요. 이걸 설정해두면 “이번 달 AWS 요금이 왜 이렇게 많이 나왔지?” 하고 당황할 일이 훨씬 줄어들 거예요. 🔔

    저도 홈랩에서 예상치 못한 비용이 나가는 걸 막기 위해 예산을 빡빡하게 설정해두고 사용합니다. 드디어 됐다! 하고 뿌듯할 때도 많아요. 🎉

    삽질 경험 공유 및 주의사항: 제가 겪었던 실수들

    13년차 엔지니어도 삽질은 합니다! 저도 AWS 비용 최적화를 하면서 여러 실수를 겪었는데요, 여러분은 저 같은 실수를 하지 않으시길 바라며 몇 가지 공유해봅니다. ⚠️

    • 개발/테스트 인스턴스 종료 누락: 가장 흔한 실수예요. 퇴근할 때 인스턴스 중지/종료하는 걸 깜빡해서 주말 내내 돈이 나가는 경우가 많았어요. ㅠㅠ Lambda나 Step Functions를 활용해서 특정 시간에 자동으로 중지/시작하는 스케줄러를 만들면 정말 좋습니다.
    • 데이터 전송(Egress) 비용 무시: AWS에서 외부(인터넷)로 데이터를 전송하는 비용은 생각보다 커요. S3에서 대량의 데이터를 다운로드 받거나, EC2에서 외부로 스트리밍하는 경우 Egress 비용이 폭탄이 될 수 있거든요. CDN(Content Delivery Network, 예: CloudFront)을 사용하면 비용을 줄일 수 있는 경우가 많습니다.
    • 스냅샷/백업 관리 소홀: RDS나 EBS 스냅샷은 데이터 양이 많아지면 비용도 상당해져요. 주기적으로 오래된 스냅샷을 삭제하거나, 보존 정책을 잘 설정해야 합니다.
    • RI/Savings Plans 잘못된 약정: “할인율 높으니까 무조건 길게” 생각했다가, 나중에 워크로드가 변경되거나 서비스가 종료될 때 약정 비용을 계속 내야 하는 경우가 있어요. 충분히 예측 가능한 워크로드에만 적용하고, 유연성이 더 필요하다면 Savings Plans를 고려하는 게 좋습니다.

    절감 효과 검증 및 지속적인 관리: 돈 아끼고 뿌듯함 느끼기!

    AWS 비용 최적화는 한 번 하고 끝나는 일이 아니에요. 지속적인 모니터링과 개선이 필요합니다. Cost Explorer를 통해 변경 사항 적용 전후의 비용을 비교하고, 실제로 얼마나 절감되었는지 확인하는 과정을 거쳐야 합니다.

    1. 정기적인 Cost Explorer 검토: 매주 또는 매월 Cost Explorer를 확인해서 이상 비용이 없는지, 최적화 전략이 잘 작동하는지 점검하세요.
    2. AWS Trusted Advisor (트러스티드 어드바이저) 활용: Trusted Advisor는 AWS 계정을 분석해서 비용 최적화, 성능, 보안 등에 대한 권장 사항을 제공해요. 특히 비용 최적화 탭에서 “Idle EC2 Instances”나 “Underutilized EBS Volumes” 같은 항목을 확인하면 개선할 점을 찾아낼 수 있습니다.
    3. 비용 지표 대시보드 구축: Grafana나 CloudWatch 대시보드를 활용해서 핵심 비용 지표들을 한눈에 볼 수 있도록 대시보드를 구축하는 것도 효과적이에요.

    이렇게 꾸준히 관리하면, 여러분의 클라우드 운영 비용은 분명히 줄어들 거예요. 그리고 무엇보다, 돈을 아끼는 만큼 회사(또는 나의 홈랩!)의 ROI(Return On Investment)도 높아지는 거니까요! 뿌듯함은 덤입니다. 😊

    EC2, S3, RDS 등 AWS 서비스별 주요 비용 최적화 전략을 요약한 인포그래픽

    EC2, S3, RDS 등 AWS 서비스별 주요 비용 최적화 전략을 요약한 인포그래픽

    마무리: 클라우드 비용, 이제는 ‘관리’의 영역입니다.

    오늘은 13년차 인프라 엔지니어의 시선으로 AWS 비용 최적화의 다양한 전략들을 살펴봤습니다. EC2의 적정 크기 조정부터 예약 인스턴스 활용, S3 스토리지 클래스와 수명 주기 정책, 그리고 RDS의 효율적인 운영 방법까지. 마지막으로 AWS Cost Explorer를 통한 비용 분석과 예산 설정의 중요성도 강조했죠. 사실 제가 겪었던 삽질 경험들을 솔직하게 공유하면서, 여러분은 같은 실수를 반복하지 않으셨으면 하는 바람도 있었습니다.

    클라우드는 무궁무진한 가능성을 제공하지만, 그만큼 제대로 관리하지 않으면 예상치 못한 비용으로 돌아올 수 있어요. 이제 클라우드 비용은 단순히 “사용료”가 아니라, 적극적으로 “관리”해야 하는 중요한 영역이 되었다고 생각합니다. 오늘 다룬 내용들을 바탕으로 여러분의 AWS 비용을 효율적으로 관리하고, 더 나아가 클라우드 인프라 운영의 고수로 거듭나시길 응원합니다! 💪

    혹시 궁금한 점이 있으시거나, 다른 서비스의 비용 최적화 전략에 대해 알고 싶으시다면 댓글로 알려주세요. 다음 글에서는 또 다른 흥미로운 인프라 이야기로 찾아뵙겠습니다. 감사합니다!

  • [3D Printer] OctoPrint 완벽 가이드: 3D 프린터 원격 제어 및 모니터링 설정

    3D 프린터 옆에 계속 붙어 있어야 했던 그 시절

    홈랩에 3D 프린터를 들인 지 얼마 안 됐을 때 얘기인데요. 처음엔 정말 신기해서 출력 내내 옆에서 지켜봤거든요. 근데 현실은 긴 출력물은 6시간, 길면 12시간씩 걸리잖아요. 그걸 매번 옆에서 볼 수도 없고, 그렇다고 자리 비웠다가 필라멘트 엉켜서 출력 실패하면… 그 허탈감이란. 😅

    그러다 알게 된 게 바로 OctoPrint입니다. 처음 들었을 때 “이게 뭐지, 문어 인쇄?” 했는데 막상 써보니까 3D 프린터 생활이 완전히 바뀌더라고요. 이 글에서는 OctoPrint 설치부터 3D 프린터 원격 제어, 모니터링 설정까지 직접 구축하면서 겪은 삽질과 노하우를 공유해 드릴게요.

    ▲ OctoPrint 전체 구성도: 라즈베리파이가 3D 프린터와 PC/스마트폰을 연결하는 허브 역할을 합니다.

    OctoPrint란? 3D 프린터 원격 제어의 핵심

    OctoPrint는 3D 프린터를 웹 브라우저로 원격 제어하고 모니터링할 수 있게 해주는 오픈소스 소프트웨어예요. 쉽게 말하면, 3D 프린터에 스마트 두뇌를 달아주는 거죠.

    보통 라즈베리파이(Raspberry Pi)에 설치해서 사용하는데, 라즈베리파이가 3D 프린터 옆에 항상 켜져 있으면서 USB로 프린터와 연결되고, 우리는 어디서든 웹 브라우저로 접속해서 출력을 시작하거나 멈추거나, 카메라로 실시간 확인을 할 수 있는 구조랍니다.

    OctoPrint로 할 수 있는 주요 기능

    • ✅ 웹 브라우저에서 G-code 파일 업로드 및 출력 시작/정지
    • ✅ 노즐(Nozzle) 온도, 베드(Bed) 온도 실시간 모니터링 및 제어
    • ✅ 웹캠 연결 시 실시간 영상 스트리밍 및 타임랩스(Timelapse) 촬영
    • ✅ 출력 진행률, 남은 시간 확인
    • ✅ 플러그인(Plugin) 시스템으로 기능 무한 확장
    • ✅ 스마트폰 앱 연동 (OctoEverywhere, OctoApp 등)

    저 처음에 온도 그래프가 실시간으로 그려지는 거 보고 진짜 감탄했었거든요. 인프라 엔지니어 감성으로 보면 Grafana 대시보드 느낌이라 바로 마음에 들었습니다 ㅎㅎ.

    OctoPrint 시작하기: 준비물 체크리스트

    본격적으로 OctoPrint 설치에 들어가기 전에 필요한 것들을 정리했습니다. 제가 직접 사용한 구성 기준이에요.

    항목 권장 사양 비고
    라즈베리파이 Raspberry Pi 3B+ 이상 Pi 4 추천 (웹캠 스트리밍 쾌적)
    MicroSD 카드 8GB 이상 (Class 10) 16GB 이상 권장
    USB 케이블 프린터-라즈베리파이 연결용 데이터 통신 가능한 케이블 필수
    전원 어댑터 라즈베리파이 공식 어댑터 불안정한 전원은 SD 카드 손상 원인
    웹캠 (선택) USB 웹캠 모니터링 강화 시 추가

    ⚠️ 주의: USB 케이블은 충전 전용이 아닌 데이터 통신이 가능한 케이블을 써야 해요. 이걸 몰라서 처음에 한참 헤맸거든요. 케이블 바꾸니까 바로 인식됐습니다.

    OctoPrint 설치: OctoPi 이미지로 빠르게 시작하기

    OctoPrint를 라즈베리파이에 설치하는 가장 쉬운 방법은 OctoPi 이미지를 사용하는 거예요. OctoPi는 라즈베리파이 OS 위에 OctoPrint가 미리 설치된 커스텀 이미지라 처음부터 직접 설치하는 것보다 훨씬 편합니다.

    1단계: OctoPi 이미지 다운로드 및 SD 카드 굽기

    1. 공식 사이트(octoprint.org)에서 OctoPi 이미지를 다운로드합니다.
    2. Raspberry Pi Imager를 실행하세요.
    3. “OS 선택”에서 “Use custom”을 선택하고 다운받은 OctoPi 이미지를 선택합니다.
    4. SD 카드를 선택하고 굽기 전에 ⚙️ 고급 설정을 열어 Wi-Fi와 SSH를 미리 설정해 두세요.

    💡 팁: Raspberry Pi Imager의 고급 설정에서 Wi-Fi SSID와 비밀번호, SSH 활성화, 사용자 이름/비밀번호를 미리 설정해두면 나중에 별도 작업 없이 바로 SSH 접속이 돼요. 이거 모르면 모니터 연결해서 설정해야 하는데, 알면 훨씬 편합니다.

    2단계: Wi-Fi 설정 확인 (선택사항)

    Raspberry Pi Imager에서 미리 설정했다면 이 단계는 건너뛰어도 괜찮아요. 추가 설정이 필요하면 SD 카드 루트 디렉토리의 octopi-wpa-supplicant.txt 파일을 편집할 수도 있습니다.

    # octopi-wpa-supplicant.txt 예시
    network={
      ssid="YOUR_WIFI_SSID"
      psk="YOUR_WIFI_PASSWORD"
    }

    3단계: 라즈베리파이 부팅 및 SSH 접속

    SD 카드를 꽂고 전원을 연결하면 부팅이 시작돼요. 1~2분 기다린 후 SSH로 접속해 보세요.

    # SSH 접속 (기본 호스트명은 octopi.local)
    ssh [email protected]
    
    # 또는 IP 주소로 접속
    ssh [email protected]

    접속이 되면 절반은 성공한 거예요! 🎉

    4단계: OctoPrint 초기 설정 마법사

    SSH 접속이 확인됐으면 이제 웹 브라우저에서 http://octopi.local 또는 라즈베리파이 IP 주소로 접속하세요. 처음 접속하면 Setup Wizard(설정 마법사)가 뜨는데, 순서대로 따라가면 돼요.

    1. Access Control(접근 제어): 관리자 계정 생성
    2. Connectivity Check: 인터넷 연결 확인
    3. Plugin Blacklist: 보안 블랙리스트 활성화 (그냥 켜두세요)
    4. Printer Profile: 3D 프린터 정보 입력

    프린터 프로파일(Printer Profile) 설정 시 프린터 제조사 홈페이지나 매뉴얼에서 베드 크기, 노즐 직경 등을 확인해서 입력하면 돼요.

    ▲ OctoPrint 웹 대시보드: 온도 그래프, 출력 진행률, 카메라 피드가 한 화면에 표시됩니다.

    3D 프린터 원격 제어 핵심 기능 설정하기

    프린터 USB 연결 및 인식 확인

    라즈베리파이와 3D 프린터를 USB 케이블로 연결하고 OctoPrint 웹 화면 왼쪽 상단의 Connect 버튼을 누르세요. 포트(Port)와 Baudrate(통신 속도)를 설정해야 하는데, 대부분의 경우 AUTO로 두면 자동으로 잡혀요.

    # 라즈베리파이에서 연결된 USB 장치 확인
    ls /dev/ttyUSB* /dev/ttyACM*
    
    # 예시 출력
    /dev/ttyACM0   # 대부분의 3D 프린터가 이 포트로 잡힙니다

    가끔 권한 문제가 생기더라고요. pi 계정에 dialout 그룹 권한이 없으면 포트에 접근을 못합니다.

    # dialout 그룹에 pi 사용자 추가
    sudo usermod -a -G dialout pi
    
    # 적용을 위해 재부팅
    sudo reboot

    웹캠 연동으로 실시간 모니터링 강화

    웹캠을 연결하면 출력 중 실시간으로 프린터 상태를 볼 수 있어서 진짜 편해요. OctoPi에는 기본적으로 mjpg-streamer가 포함되어 있어서 별도 설치 없이 웹캠만 꽂으면 됩니다.

    # 웹캠 인식 확인
    ls /dev/video*
    
    # mjpg-streamer 서비스 상태 확인
    sudo service webcamd status

    OctoPrint 설정 → Webcam & Timelapse 메뉴에서 Stream URL을 확인하세요. 기본값은 보통 http://octopi.local/webcam/?action=stream입니다.

    💡 타임랩스(Timelapse) 기능: OctoPrint는 레이어 변경 시마다 사진을 찍어 자동으로 타임랩스 영상을 만들어 줘요. 출력 완료 후 설정 메뉴에서 렌더링된 영상을 다운받을 수 있어요. 이거 처음 만들어봤을 때 진짜 신기했습니다.

    꼭 설치해야 할 OctoPrint 플러그인 추천

    OctoPrint의 진짜 매력은 플러그인 생태계예요. Settings → Plugin Manager → Get More에서 검색해서 설치할 수 있습니다.

    플러그인 이름 기능 추천 이유
    Bed Visualizer 베드 레벨링 시각화 베드 평탄도를 3D 그래프로 확인
    PrintTimeGenius 출력 시간 예측 개선 기본 시간 예측보다 훨씬 정확함
    Telegram Notifications 텔레그램 알림 출력 완료/실패 시 스마트폰 알림
    Filament Manager 필라멘트 재고 관리 남은 필라멘트 양 추적
    OctoEverywhere 외부 네트워크 접속 VPN 없이 외부에서 안전하게 접속

    저는 특히 Telegram Notifications 플러그인을 강력 추천해요. 출력이 완료되거나 실패했을 때 텔레그램으로 사진이랑 같이 알림이 오거든요. 다른 일 하다가 알림 받고 가서 확인하면 되니까 정말 편합니다.

    ⚠️ 자주 겪는 문제와 해결법

    OctoPrint 구축하면서 겪은 문제들과 해결법을 정리했어요. 저만 겪은 게 아닐 거라 생각합니다.

    문제 1: 프린터가 연결됐다가 끊겼다가 반복

    원인은 대부분 두 가지예요. 첫째는 케이블 문제, 둘째는 라즈베리파이 전원 불안정입니다. USB 허브를 사용한다면 전원 공급이 되는 허브인지 확인하세요. 라즈베리파이 전원 어댑터는 공식 어댑터를 쓰는 게 정말 중요해요. 저도 저렴한 어댑터 쓰다가 한참 고생했거든요.

    # 라즈베리파이 전원 상태 확인 (under-voltage 경고 확인)
    dmesg | grep -i voltage
    
    # 또는
    vcgencmd get_throttled
    # 0x0이면 정상, 다른 값이면 전원 문제

    문제 2: 웹캠 화면이 안 나옴

    웹캠이 USB 3.0 포트에서 인식이 안 되는 경우가 있어요. USB 2.0 포트로 바꿔서 꽂아보세요. 라즈베리파이 Pi 4에서는 USB 포트별로 전력 공급이 달라서 포트를 바꾸는 것만으로 해결되기도 합니다.

    # 웹캠 인식 여부 확인
    lsusb
    
    # v4l2 장치 목록 확인
    v4l2-ctl --list-devices

    문제 3: 외부에서 접속이 안 됨

    집 밖에서 OctoPrint에 접속하려면 포트 포워딩이나 VPN, 또는 OctoEverywhere 같은 서비스를 써야 해요. 보안 때문에 OctoPrint를 인터넷에 직접 노출하는 건 권장하지 않습니다. 저는 이미 홈랩에 VPN 서버가 있어서 VPN 연결 후 내부 IP로 접속하는 방식을 써요.

    ⚠️ 보안 경고: 라우터에서 OctoPrint 포트를 직접 외부에 포워딩하는 건 절대 하지 마세요. OctoEverywhere 같은 보안 터널 서비스나 VPN을 사용하세요.

    ▲ OctoPrint 플러그인 매니저와 텔레그램 알림 설정 화면 예시.

    설정 완료! 3D 프린터 원격 제어 활용하기

    모든 설정이 완료되면 이런 것들이 가능해져요. 드디어 됐다! 🎉

    • 집 어디서든 Wi-Fi 연결 상태에서 3D 프린터 원격 제어 가능
    • 스마트폰 브라우저에서도 OctoPrint 대시보드 접속 가능
    • 출력 중 자리를 비워도 카메라로 실시간 확인
    • 출력 완료/실패 시 텔레그램 알림 수신
    • 출력물마다 예쁜 타임랩스 영상 자동 생성

    심화 활용: G-code 스크립트 자동화

    OctoPrint에서는 출력 시작 전/후에 자동으로 실행할 G-code를 설정할 수 있어요. Settings → Printer Profiles 또는 Settings → GCODE Scripts에서 설정합니다.

    # 출력 시작 전 G-code 예시 (베드 자동 레벨링 후 시작)
    G28 ; 홈 포지션으로 이동
    G29 ; 자동 베드 레벨링 (ABL 지원 프린터)
    G92 E0 ; 익스트루더 초기화
    
    # 출력 완료 후 G-code 예시
    G91 ; 상대 좌표 모드
    G1 Z10 F3000 ; Z축 10mm 올리기
    G90 ; 절대 좌표 모드
    G1 X0 Y200 F3000 ; 베드를 앞으로 이동 (출력물 꺼내기 쉽게)
    M84 ; 모터 끄기

    이런 자동화 스크립트를 잘 설정해두면 출력 시작 전 베드 레벨링을 자동으로 하거나, 출력 완료 후 베드가 자동으로 앞으로 나와서 출력물 꺼내기도 편해져요. 실제로 써보니까 이게 진짜 편하더라고요.

    OctoPrint 설치 방법 비교: OctoPi vs 수동 설치

    구분 OctoPi 이미지 사용 기존 라즈베리파이 OS에 수동 설치
    설치 난이도 쉬움 ⭐ 보통 ⭐⭐⭐
    설치 시간 15~30분 1시간 이상
    웹캠 지원 기본 포함 별도 설정 필요
    다른 서비스 공존 제한적 자유롭게 구성 가능
    추천 대상 OctoPrint 전용 라즈베리파이 기존 라즈베리파이에 추가 설치

    처음 시작하시는 분들께는 무조건 OctoPi 이미지를 추천해요. 저도 처음엔 수동 설치로 삽질하다가 결국 OctoPi로 갈아탔거든요 ㅎㅎ.

    ▲ OctoPrint 설치 옵션 비교 및 핵심 기능 체크리스트 요약.

    자주 묻는 질문 (FAQ)

    Q. 라즈베리파이 없이 OctoPrint를 쓸 수 있나요?

    네, 가능해요. Windows나 macOS, Linux PC에도 설치할 수 있습니다. 다만 24시간 켜두기엔 라즈베리파이가 전기세 면에서 훨씬 유리해요. 항상 켜두는 용도라면 라즈베리파이를 강력히 추천합니다.

    Q. OctoPrint 설치 후 슬라이서(Slicer) 소프트웨어는 필요 없나요?

    아니요, 슬라이서는 여전히 필요해요. OctoPrint는 G-code를 프린터에 전송하고 제어하는 역할이고, G-code 파일 자체는 Cura, PrusaSlicer 같은 슬라이서로 만들어야 합니다. 슬라이서에서 만든 G-code 파일을 OctoPrint에 업로드해서 출력하는 방식이에요.

    Q. OctoPrint가 무료인가요?

    OctoPrint 자체는 완전히 무료 오픈소스 소프트웨어예요. 라즈베리파이 하드웨어 비용만 들고, OctoEverywhere 같은 부가 서비스는 유/무료 플랜이 있습니다.

    마무리: 3D 프린터 옆에서 해방됐습니다

    OctoPrint 덕분에 정말 3D 프린터 생활이 달라졌어요. 이제는 출력 시작해 놓고 다른 일 하다가 텔레그램 알림 오면 확인하는 식으로 써요. 처음 설정할 때 케이블 문제, 권한 문제로 삽질 좀 했지만 한 번 잘 잡아두면 정말 편합니다.

    정리하면 이렇습니다:

    • ✅ OctoPi 이미지로 라즈베리파이에 설치 (가장 쉬운 방법)
    • ✅ USB 데이터 케이블 + 안정적인 전원 어댑터 필수
    • ✅ dialout 그룹 권한 설정 잊지 말기
    • ✅ 웹캠 연결로 3D 프린터 원격 모니터링 강화
    • ✅ Telegram Notifications 플러그인으로 알림 설정
    • ✅ 외부 접속은 VPN 또는 OctoEverywhere 사용 (보안 중요!)

    다음 글에서는 OctoPrint와 Home Assistant(홈 어시스턴트)를 연동해서 스마트홈과 3D 프린터를 통합하는 방법을 다뤄볼 예정입니다. 혹시 궁금한 점이나 다른 삽질 경험 있으시면 댓글로 공유해 주세요! 😊

  • [3D Printer] 3D 프린터 베드 레벨링 완벽 가이드: 수동·자동 센서 활용법

    첫 레이어가 안 붙는다고요? 베드 레벨링이 문제입니다

    3D 프린팅을 처음 시작했을 때 제일 많이 겪는 좌절이 뭔지 아세요? 바로 첫 레이어가 안 붙는 문제입니다. 분명히 설정도 맞추고, 필라멘트도 잘 나오는데 출력물이 베드에서 떨어져 나가거나, 반대로 너무 꽉 눌려서 노즐이 베드를 긁는 경우죠. 저도 처음엔 이게 왜 그런지 몰라서 몇 시간짜리 출력을 여러 번 날려먹었어요.

    결론부터 말씀드리면, 3D 프린터 베드 레벨링(Bed Leveling)이 제대로 안 되어 있어서 그렇습니다. 베드 레벨링은 단순히 ‘수평 맞추기’가 아니라, 노즐과 베드 사이의 간격을 정밀하게 설정하는 작업이거든요. 이게 0.1mm만 틀려도 출력 품질이 확 달라집니다.

    오늘은 13년 동안 서버실과 홈랩을 운영하면서 틈틈이 3D 프린터도 굴려온 제가, 수동 레벨링부터 오토 레벨링 센서 활용까지 직접 해본 경험을 바탕으로 정리해 드릴게요. 삽질 경험도 솔직하게 다 풀어드릴 테니, 끝까지 읽어보시면 분명 도움이 될 겁니다.

    베드 레벨링의 핵심은 노즐과 베드 사이의 균일한 간격 유지입니다. 간격이 너무 넓거나 좁으면 첫 레이어 안착이 실패합니다.


    베드 레벨링(Bed Leveling)이 뭔가요? 개념부터 잡고 가기

    쉽게 말해, 베드 레벨링은 프린터 노즐이 베드 위를 움직일 때 어느 위치에서든 노즐-베드 간격이 동일하도록 맞추는 작업입니다. 베드가 완벽하게 평평하고 프린터 프레임도 완벽하다면 한 번만 맞추면 되겠지만, 현실은 그렇지 않죠.

    제가 쓰는 프린터도 왼쪽 앞은 괜찮은데 오른쪽 뒤가 살짝 높아서, 같은 설정으로 출력해도 위치에 따라 첫 레이어 두께가 달라지더라고요. 이런 불균일한 베드 표면을 보정해주는 게 바로 레벨링의 핵심입니다.

    왜 첫 레이어(First Layer)가 이렇게 중요한가요?

    • 접착력: 첫 레이어가 베드에 제대로 눌려야 출력물이 중간에 떨어지지 않아요
    • 치수 정확도: 첫 레이어가 찌그러지면 전체 출력물 높이와 치수가 틀어집니다
    • 표면 품질: 바닥면 품질이 나쁘면 윗 레이어에도 영향을 줍니다
    • 출력 성공률: 장시간 출력일수록 첫 레이어가 생명입니다

    노즐과 베드 사이의 이상적인 간격은 보통 0.1~0.2mm 정도입니다. 종이 한 장 두께가 약 0.1mm니까, 종이가 살짝 끼워지면서 저항이 느껴지는 정도가 딱 맞는 거예요.


    수동 레벨링(Manual Leveling): 손으로 직접 맞추는 방법

    자동 센서가 없는 프린터라면 수동 레벨링을 해야 합니다. 귀찮아 보이지만, 원리를 이해하고 나면 생각보다 어렵지 않아요. 저도 처음엔 30분씩 걸렸는데, 지금은 5분이면 끝납니다.

    준비물

    • A4 용지 1장 (두께 약 0.1mm)
    • 프린터 베드 레벨링 나사 (보통 네 귀퉁이에 있는 손나사)
    • 프린터 제어 소프트웨어 (Pronterface, OctoPrint, 또는 프린터 자체 LCD 메뉴)

    단계별 수동 레벨링 방법

    1. 홈 포지션 이동: 프린터를 홈(Home)으로 이동시킵니다. LCD 메뉴나 G-code 명령어로 G28을 실행하세요.
    2. 베드 온도 예열: 실제 출력 온도로 베드를 예열합니다. 열팽창 때문에 차가운 상태에서 맞추면 나중에 틀어져요. 저도 이거 몰라서 한참 삽질했습니다.
    3. 첫 번째 코너 이동: 노즐을 베드 왼쪽 앞 코너로 이동합니다.
    4. 종이 테스트: 노즐 아래에 A4 용지를 넣고 손나사를 돌려서 종이가 살짝 저항을 느끼며 움직일 수 있는 높이로 맞춥니다.
    5. 네 귀퉁이 반복: 나머지 세 코너도 같은 방법으로 맞춥니다.
    6. 중앙 확인: 마지막으로 베드 중앙에서도 종이 테스트를 해서 균일한지 확인합니다.
    7. 2~3회 반복: 한 귀퉁이를 조정하면 다른 귀퉁이에 영향을 줄 수 있어서, 전체를 2~3바퀴 반복해서 확인하는 게 좋습니다.
    # 수동 레벨링 시 유용한 G-code 명령어들
    G28          ; 모든 축 홈 이동 (Home All)
    G29          ; 자동 베드 레벨링 실행 (센서 있는 경우)
    G1 Z0 F300  ; Z축을 0으로 이동
    M851 Z-1.5  ; Z 오프셋(Z Offset) 설정 (값은 프린터마다 다름)
    M500         ; EEPROM에 설정 저장

    💡 팁: 베드 레벨링 나사 조정 방향 외우기

    “오른쪽으로 돌리면 베드가 올라간다(노즐과 가까워진다), 왼쪽으로 돌리면 내려간다”고 기억하세요. 헷갈리면 나사 머리에 화살표를 스티커로 붙여두는 것도 방법입니다. 저는 그렇게 했어요.


    오토 레벨링(Auto Leveling): 센서로 자동 보정하기

    수동 레벨링이 귀찮다면, 자동 레벨링 센서를 사용하는 방법이 있습니다. 요즘 중급 이상 프린터에는 기본 탑재된 경우가 많고, 별도로 구매해서 달 수도 있어요. 제가 홈랩에서 굴리는 프린터에도 달아봤는데, 진짜 편하더라고요.

    주요 오토 레벨링 센서 종류

    센서 종류 작동 방식 장점 단점
    BLTouch 물리적 핀이 베드에 닿아 감지 정확도 높음, 유리/금속 베드 모두 사용 가능 핀 내구성 이슈, 가격대 있음
    CR Touch 광학 센서 + 물리적 핀 BLTouch 개선 버전, 내구성 향상 호환 프린터 제한적
    유도형 센서 (Inductive) 금속 베드의 자기장 변화 감지 내구성 강함, 저렴함 금속 베드에서만 사용 가능
    용량형 센서 (Capacitive) 정전용량 변화 감지 다양한 베드 재질 지원 온도/습도 영향 받음

    BLTouch 센서가 베드 여러 지점을 측정하여 메시(Mesh) 데이터를 생성하고, 이를 바탕으로 출력 경로를 자동 보정하는 과정입니다.

    Marlin 펌웨어에서 BLTouch 설정하기

    BLTouch를 달았다면 펌웨어 설정도 맞춰줘야 합니다. Marlin 펌웨어 기준으로 설명할게요. 처음엔 이 부분에서 좀 헤맸는데, 핵심 설정 몇 가지만 건드리면 됩니다.

    // Configuration.h 파일에서 수정할 주요 설정들
    
    // BLTouch 활성화
    #define BLTOUCH
    
    // 센서 오프셋 설정 (노즐 기준 센서 위치, mm 단위)
    // X, Y는 센서가 노즐에서 얼마나 떨어져 있는지
    // Z는 Z 오프셋 (실제 출력 시 미세 조정 필요)
    #define NOZZLE_TO_PROBE_OFFSET { -44, -9, 0 }  // 프린터마다 다름!
    
    // 자동 베드 레벨링 메시(Mesh) 방식 활성화
    #define AUTO_BED_LEVELING_BILINEAR
    
    // 메시 포인트 수 (3x3부터 시작, 익숙해지면 5x5도 OK)
    #define GRID_MAX_POINTS_X 5
    #define GRID_MAX_POINTS_Y 5
    
    // 레벨링 데이터 EEPROM 저장 활성화
    #define EEPROM_SETTINGS
    #define EEPROM_AUTO_INIT

    슬라이서(Slicer) Start G-code 설정

    펌웨어 설정 후에는 슬라이서의 시작 G-code도 수정해야 합니다. 이게 빠지면 레벨링 데이터가 실제 출력에 적용이 안 되거든요. 저도 이걸 몰라서 한참 헤맸습니다.

    # 슬라이서 Start G-code 예시 (Cura 기준)
    G28 ; 홈 이동
    G29 ; 자동 베드 레벨링 실행
    M500 ; 레벨링 데이터 저장
    G92 E0 ; 익스트루더 리셋
    G1 Z0.3 F3000 ; 시작 높이로 이동
    G1 X10 Y20 F3000 ; 시작 위치로 이동

    또는 EEPROM에 저장된 레벨링 데이터를 재사용하고 싶다면:

    # 저장된 레벨링 데이터 불러오기 (매번 G29 생략 가능)
    G28 ; 홈 이동
    M420 S1 ; 저장된 베드 레벨링 데이터 활성화
    G1 Z0.3 F3000

    ⚠️ 자주 겪는 문제와 해결법: 실제 삽질 경험 공유

    이론은 이론이고, 실전은 또 다르죠. 제가 직접 겪었던 문제들과 해결 방법을 솔직하게 정리해 봤습니다.

    문제 1: 레벨링은 맞췄는데 첫 레이어가 계속 안 붙어요

    원인: Z 오프셋(Z Offset)이 맞지 않는 경우가 대부분입니다. 레벨링은 상대적 수평을 맞추는 거고, Z 오프셋은 절대적인 노즐-베드 간격을 결정합니다.

    해결법: 실시간으로 Z 오프셋을 미세 조정하면서 첫 레이어 상태를 확인하세요. 필라멘트가 베드에 눌려서 약간 납작해 보이는 게 정상입니다. 동그랗게 솟아있으면 너무 높은 거죠.

    # Z 오프셋 실시간 조정 (출력 중에도 가능)
    M851 Z-1.8  ; Z 오프셋을 -1.8mm로 설정 (음수가 일반적)
    M500        ; 저장

    문제 2: 오토 레벨링 후에도 베드 한쪽이 뜨거나 눌려요

    원인: 수동 레벨링이 너무 틀어져 있으면 오토 레벨링의 보정 범위를 넘어섭니다. 오토 레벨링은 미세 보정이지, 큰 오차를 완전히 커버하지는 못해요.

    해결법: 수동 레벨링으로 먼저 대략적인 수평을 맞춘 뒤, 오토 레벨링으로 미세 보정하는 2단계 접근이 가장 효과적입니다.

    문제 3: BLTouch 핀이 배포되지 않아요

    원인: 대부분 배선 문제이거나 펌웨어 설정 오류입니다. 저도 처음에 배선 순서를 잘못 연결해서 한참 고생했어요.

    해결법: BLTouch 배선은 5핀 커넥터를 사용하며, 서보 신호선과 Z-min 신호선을 정확히 연결해야 합니다. 제조사 공식 배선도를 반드시 확인하세요.

    문제 4: 매번 출력 전에 G29를 실행하면 너무 오래 걸려요

    해결법: 앞서 설명한 M420 S1을 Start G-code에 넣어서 저장된 레벨링 데이터를 재사용하세요. 베드를 건드리지 않는 이상 자주 재측정할 필요 없습니다. 저는 베드를 분리했다 다시 달거나, 프린터를 이동한 경우에만 G29를 새로 실행합니다.

    레벨링 전후 첫 레이어 품질 비교. 왼쪽(레벨링 불량)은 필라멘트가 뭉치거나 떠 있고, 오른쪽(레벨링 정상)은 균일하게 눌려 있습니다.


    베드 안착(Bed Adhesion)을 높이는 추가 팁

    레벨링을 완벽히 맞췄어도 재료나 환경에 따라 안착이 안 될 수 있어요. 레벨링과 함께 챙겨야 할 베드 안착 팁도 드릴게요.

    베드 표면 관리

    • 유리 베드: 헤어스프레이나 글루스틱을 얇게 도포하면 안착력이 올라갑니다
    • PEI 시트: 요즘 가장 많이 쓰는 방식. 온도만 맞으면 별도 처리 없이도 잘 붙고, 식으면 자연스럽게 떨어집니다. 정말 편해요
    • 빌드택(BuildTak): 접착력이 강해서 ABS 같은 수축이 심한 재료에 유용합니다
    • 베드 청결 유지: 이소프로필 알코올(IPA) 70% 이상으로 출력 전 베드를 닦아주세요. 손기름이 안착력을 크게 떨어뜨립니다

    슬라이서 설정으로 안착 보조

    • Brim: 출력물 주변에 얇은 테두리를 추가해서 접촉 면적을 늘립니다. 다리가 가는 출력물에 특히 효과적이에요
    • Raft: 출력물 아래에 두꺼운 받침대를 깝니다. 안착이 극히 어려운 경우 최후 수단입니다
    • First Layer Speed: 첫 레이어 속도를 20~30mm/s로 느리게 설정하면 안착력이 올라갑니다
    • First Layer Height: 첫 레이어 두께를 0.2~0.3mm로 약간 두껍게 설정하면 안착이 잘 됩니다

    레벨링 결과 확인: 이렇게 생겼으면 성공입니다

    레벨링이 잘 됐는지 확인하는 가장 좋은 방법은 직접 출력해보는 거예요. 간단한 테스트 파일로 확인해 보세요.

    첫 레이어 테스트 방법

    1. 슬라이싱 소프트웨어에서 얇은 정사각형 패드 모델을 준비합니다 (20x20x0.2mm 정도)
    2. 출력하면서 첫 레이어 상태를 눈으로 확인합니다
    3. 아래 기준으로 판단하세요
    첫 레이어 상태 의미 조치
    필라멘트가 납작하게 눌리며 균일하게 퍼짐 ✅ 정상 그대로 출력 진행
    필라멘트가 동그랗게 솟아있음 노즐이 너무 높음 Z 오프셋 낮추기 (음수 방향)
    필라멘트가 너무 얇거나 베드에 긁힘 노즐이 너무 낮음 Z 오프셋 높이기 (양수 방향)
    한쪽은 붙고 반대쪽은 뜸 베드 기울어짐 수동 레벨링 재조정
    중앙이 뜨고 가장자리가 붙음 베드 중앙 처짐 메시 레벨링 포인트 늘리기

    드디어 첫 레이어가 균일하게 눌리면서 베드에 착 붙는 걸 보는 순간, 정말 뿌듯합니다. 저는 그 순간을 아직도 기억해요.


    정리 및 자주 묻는 질문

    수동 레벨링과 오토 레벨링의 특징을 한눈에 비교한 요약 인포그래픽입니다.

    수동 vs 오토 레벨링, 뭘 선택해야 하나요?

    구분 수동 레벨링 오토 레벨링
    비용 추가 비용 없음 센서 구매 비용 발생
    정확도 숙련도에 따라 다름 일관되게 높은 정확도
    편의성 매번 손으로 조정 필요 출력 전 자동 측정
    베드 왜곡 보정 평면 보정만 가능 메시(Mesh) 기반 곡면 보정 가능
    권장 대상 입문자, 저가 프린터 중급 이상, 정밀 출력 필요한 경우

    자주 묻는 질문 (FAQ)

    Q. 레벨링은 얼마나 자주 해야 하나요?
    A. 프린터를 이동하거나 베드를 탈착한 경우, 또는 출력 품질이 갑자기 나빠진 경우에 하시면 됩니다. 안정적인 환경에서 매일 출력해도 주 1회 정도면 충분한 경우가 많아요.

    Q. 오토 레벨링이 있으면 수동 레벨링 안 해도 되나요?
    A. 수동 레벨링으로 대략적인 수평을 맞춘 뒤 오토 레벨링으로 미세 보정하는 게 가장 좋습니다. 오토 레벨링이 모든 오차를 커버하지는 못거든요.

    Q. Z 오프셋 설정값이 계속 바뀌어요
    A. 베드 온도가 달라지거나, 핫엔드(노즐 부분)를 교체한 경우 Z 오프셋이 달라질 수 있습니다. 출력 온도를 고정하고, 예열 후 Z 오프셋을 맞추는 습관을 들이세요.

    마무리: 레벨링은 3D 프린팅의 기초 중의 기초

    3D 프린터 베드 레벨링, 처음엔 귀찮고 어렵게 느껴지지만 익숙해지면 5분이면 끝나는 작업입니다. 이 기초를 제대로 잡아야 나머지 출력 품질 최적화도 의미가 있어요.

    수동 레벨링으로 시작해서 원리를 이해하고, 여유가 되면 BLTouch 같은 센서를 달아서 편의성을 높이는 방향을 추천합니다. 저도 그 순서로 왔거든요.

    다음 글에서는 필라멘트 종류별 출력 온도 및 설정 최적화를 다룰 예정입니다. 레벨링을 잡았다면 다음 단계는 재료별 설정이니까요. 궁금한 점은 댓글로 남겨주세요!

  • [Proxmox VE] VM 백업 및 복구 완벽 가이드: 데이터 손실 방지 전략

    [Proxmox VE] VM 백업 및 복구 완벽 가이드: 데이터 손실 방지 전략

    [Proxmox VE] VM 백업 및 복구 완벽 가이드: 데이터 손실 방지 전략

    안녕하세요, 13년차의 서버실 주인장입니다. 오늘은 Proxmox VE(Virtual Environment) 환경에서 VM(Virtual Machine) 백업과 복구에 대한 이야기를 좀 해볼까 합니다. 서버실에서 13년을 굴러보니, 데이터만큼 중요한 게 없더라고요. 한 번의 실수로 데이터가 날아가면 정말 아찔하죠. 특히 홈랩(Home Lab)을 운영하면서 이것저것 실험하다 보니 백업의 중요성을 뼈저리게 느끼게 됩니다. 😱

    저도 예전에 백업을 소홀히 했다가 중요한 설정 파일이나 프로젝트 데이터가 통째로 날아간 경험이 있거든요. 그때의 허탈함이란… 그래서 Proxmox VE VM 백업은 선택이 아니라 필수라고 항상 강조합니다. 오늘은 제가 직접 홈랩에서 Proxmox를 운영하며 겪었던 경험을 바탕으로, 어떻게 하면 안전하게 Proxmox 백업을 설정하고, 위기 상황에서 VM 복구를 할 수 있는지, 그 데이터 손실 방지 전략을 완벽하게 알려드릴게요. 저와 함께 Proxmox 스냅샷을 포함한 다양한 데이터 보호 방법을 알아봅시다!

    Proxmox VE VM 백업 및 복구 전체 아키텍처 다이어그램

    Proxmox 백업, 진짜 왜 중요할까요? (개념 설명)

    쉽게 말해, Proxmox VE 환경에서 VM 백업은 우리 집의 귀한 물건들을 금고에 넣어두는 것과 같습니다. 언제든 문제가 생기면 금고에서 다시 꺼내 쓸 수 있도록 말이죠. Proxmox는 기본적으로 아주 강력한 백업 기능을 제공하고 있거든요.

    VZDump: Proxmox의 핵심 백업 도구

    Proxmox에는 vzdump라는 백업 툴이 내장되어 있습니다. 이 툴로 VM(QEMU/KVM)과 LXC 컨테이너를 효율적으로 백업할 수 있거든요. 백업 시점에 VM의 모든 상태(디스크 이미지, 설정 파일 등)를 하나의 파일로 만들어주고, 나중에 복구할 때 사용하죠.

    스냅샷(Snapshot)과 백업(Backup)의 차이

    여기서 많은 분들이 헷갈리시는 게 스냅샷과 백업입니다. 저도 처음엔 이게 뭔가 싶었거든요. 간단히 비유하자면:

    • 스냅샷(Snapshot): 책갈피 같은 거예요. 특정 시점의 VM 상태를 빠르게 저장하고, 문제가 생겼을 때 그 시점으로 되돌아갈 수 있게 해줍니다. 하지만 스냅샷은 원본 VM과 같은 스토리지에 존재하기 때문에, 스토리지 자체가 손상되면 스냅샷도 같이 날아갈 위험이 있어요.
    • 백업(Backup): 책 전체를 복사해서 다른 안전한 장소에 보관하는 거라고 생각하시면 됩니다. 원본 VM과는 완전히 분리된 별도의 백업 스토리지에 저장되므로, 원본 VM이 손상되더라도 안전하게 복구할 수 있죠.

    결론적으로, 스냅샷은 빠른 롤백(Rollback)에 좋고, 백업은 데이터 손실 방지와 재해 복구(Disaster Recovery, DR)에 필수적입니다.

    어떤 백업 스토리지를 사용할까?

    Proxmox는 다양한 백업 스토리지를 지원하거든요. 제가 홈랩에서 주로 쓰는 방식은 NFS(Network File System)나 SMB/CIFS(Server Message Block/Common Internet File System) 공유 스토리지를 사용하는 겁니다. 아니면 Proxmox Backup Server(PBS)를 구축해서 쓰는 방법도 있는데, 이건 정말 끝판왕이라고 할 수 있죠.

    Proxmox VE VM 백업 및 복구 실전 구현 (단계별 가이드)

    자, 이제 실전입니다. 제가 직접 쓰는 방법들을 단계별로 보여드릴게요. Proxmox 웹 GUI를 주로 활용하겠지만, CLI(Command Line Interface) 명령어 몇 가지도 함께 알아두시면 좋습니다.

    1단계: 백업 스토리지 추가하기 (NFS 예시)

    가장 먼저 백업 파일을 저장할 공간을 Proxmox에 연결해야 합니다. 저는 NAS(Network Attached Storage)에 NFS 공유 폴더를 만들어서 사용하고 있거든요.

    1. Proxmox 웹 GUI에 접속합니다.
    2. 좌측 메뉴에서 Datacenter > Storage로 이동합니다.
    3. Add 버튼을 클릭하고 NFS를 선택합니다.
    4. 다음 정보를 입력합니다:

      • ID: backup-nfs (원하는 이름)
      • Server: 192.168.1.100 (NAS IP 주소)
      • Export: /volume1/proxmox-backup (NAS의 NFS 공유 경로)
      • Content: VZDump backup file (필수!)
    5. Add 버튼을 눌러 추가를 완료합니다.

    CLI로 직접 마운트하는 방법도 있어요. 예를 들어, /etc/fstab에 추가해서 부팅 시 자동 마운트되도록 설정할 수 있습니다.

    
    # /etc/fstab
    192.168.1.100:/volume1/proxmox-backup /mnt/pve/backup-nfs nfs defaults 0 0
    

    그리고 mount -a 명령어로 바로 적용해줍니다. 그 후 Proxmox GUI에서 Storage를 추가하면 되는데, 이 방법이 좀 더 안정적이더라고요.

    Proxmox VE 웹 GUI 백업 작업 설정 화면

    2단계: 백업 작업 생성 및 스케줄링

    스토리지를 연결했으니 이제 Proxmox 백업 작업을 만들어볼까요?

    1. Datacenter > Backup으로 이동합니다.
    2. Add 버튼을 클릭하여 새 백업 작업을 생성합니다.
    3. 백업 설정:

      • Node: 백업할 VM이 있는 Proxmox 노드 선택 (All도 가능)
      • Storage: 1단계에서 추가한 backup-nfs 선택
      • Schedule: Daily (매일), Weekly (매주) 등 원하는 주기로 설정합니다. 저는 새벽 2시에 매일 돌리도록 설정해놓았어요.
      • VMs: 백업할 VM 선택 (All 또는 특정 VM ID)
      • Mode: Snapshot (가장 권장하는 방식입니다. VM 운영 중에도 백업 가능)
      • Compression: Zstd (최신 알고리즘으로 압축률과 속도 모두 좋습니다)
      • Email notification: 백업 결과 알림을 받을 이메일 주소 설정 (필수!)
      • Retention: 백업본 유지 기간. 저는 보통 7일로 설정해서 일주일치 백업본을 가지고 있습니다.
    4. Create 버튼을 눌러 백업 작업을 완료합니다.

    이렇게 하면 설정한 스케줄에 따라 자동으로 Proxmox VE VM 백업이 진행돼요. 정말 편하더라고요!

    3단계: VM 복구하기

    불의의 사고로 VM이 날아갔다거나, 특정 시점으로 되돌리고 싶을 때 VM 복구는 필수입니다. Proxmox는 복구도 아주 간단하게 할 수 있게 해줍니다.

    1. 좌측 메뉴에서 Datacenter > Storage > backup-nfs (백업 스토리지를 선택)로 이동합니다.
    2. 중앙 패널에서 백업된 파일 목록을 볼 수 있어요. 복구하려는 VM의 백업 파일을 선택합니다.
    3. Restore 버튼을 클릭합니다.
    4. 복구 설정:

      • Target Storage: VM이 복구될 스토리지 선택 (예: local-lvm)
      • VM ID: 새 VM ID를 지정하거나, 기존 VM ID로 덮어쓸 수 있습니다. 기존 ID로 덮어쓸 경우 기존 VM은 삭제되니 주의하세요!
      • Start after restore: 복구 완료 후 바로 VM을 시작할지 여부
    5. Restore 버튼을 눌러 복구를 시작합니다.

    CLI로 복구하는 방법도 있어요. 만약 웹 GUI에 접근할 수 없는 상황이라면 유용하겠죠?

    
    # 백업 파일 경로 확인 (예: /mnt/pve/backup-nfs/dump/vzdump-qemu-100-2023_10_26-02_00_01.vma.zst)
    # 새 VM ID 101로 복구 (기존 VM ID와 겹치지 않게)
    qmrestore /mnt/pve/backup-nfs/dump/vzdump-qemu-100-2023_10_26-02_00_01.vma.zst 101 --storage local-lvm
    
    # 만약 기존 VM ID 100에 덮어쓰려면 (기존 VM 삭제 후)
    # qmrestore /mnt/pve/backup-nfs/dump/vzdump-qemu-100-2023_10_26-02_00_01.vma.zst 100 --storage local-lvm --force
    

    --force 옵션은 기존 VM을 삭제하고 복구하는 거라서 정말 신중하게 사용해야 합니다!

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

    제가 13년 동안 삽질하면서 배웠던 Proxmox 데이터 보호에 대한 몇 가지 팁과 주의사항을 공유합니다. 홈랩이든 실제 서버든 똑같더라고요.

    백업 스토리지 용량 부족

    저도 처음엔 무작정 백업 돌렸다가 백업 스토리지가 꽉 차서 난리 났었죠. 😅 정기적으로 백업 스토리지 용량을 확인하고, Retention 정책을 잘 설정해서 오래된 백업본은 자동으로 삭제되도록 해야 합니다. 아니면 Proxmox Backup Server(PBS)를 쓰면 중복 제거(Deduplication) 기능 덕분에 용량 효율이 훨씬 좋아지더라고요. 이건 나중에 기회가 되면 더 자세히 다뤄볼게요.

    백업 일관성 (Consistency) 문제

    Snapshot 모드로 백업하면 VM이 실행 중인 상태에서 백업이 이루어지기 때문에 편리해요. 하지만 이 방식은 파일 시스템 일관성(Filesystem-consistent)은 보장하지만, 애플리케이션 일관성(Application-consistent)은 보장하지 못할 수 있거든요. 예를 들어, 데이터베이스 서버 같은 경우 백업 시점에 트랜잭션이 진행 중이었다면, 복구 후 데이터베이스에 문제가 생길 수도 있습니다. 중요한 서비스라면 백업 전에 잠시 서비스를 중단하거나, VM 내부에서 VSS(Volume Shadow Copy Service) 등을 활용하는 방법을 고려해야 합니다.

    네트워크 대역폭과 복구 시간

    백업이나 복구 시 네트워크 대역폭이 충분하지 않으면 시간이 오래 걸릴 수 있어요. 특히 대용량 VM을 복구할 때는 정말 답답하더라고요. 10GbE(기가비트 이더넷) 같은 고속 네트워크를 구축해두면 훨씬 쾌적합니다.

    VM ID 충돌

    복구 시 새 VM ID를 지정하지 않고, 이미 사용 중인 ID로 복구하려고 하면 에러가 발생해요. qmrestore 명령어를 쓸 때는 반드시 기존에 사용하지 않는 VM ID를 지정하거나, 정말 덮어써야 할 경우에만 --force 옵션을 사용해야 합니다.

    백업 및 복구 결과 확인 (검증)

    백업이 잘 됐는지, 복구된 VM이 제대로 작동하는지 확인하는 게 진짜 중요해요. 저는 예전에 백업은 잘 했는데, 복구 테스트를 안 해봤다가 나중에 문제가 생겨서 애먹었던 적이 있거든요. 백업만큼이나 복구 검증도 필수입니다!

    1. 백업 로그 확인: Proxmox 웹 GUI의 Datacenter > Task Log에서 백업 작업의 성공 여부를 확인할 수 있습니다. 오류가 발생했다면 로그를 자세히 살펴보세요.
    2. 복구된 VM 정상 작동 확인: 복구된 VM을 시작하고, 서비스가 정상적으로 올라오는지, 네트워크 연결은 잘 되는지, 데이터는 모두 유효한지 꼼꼼히 확인해야 합니다. 가능하다면 주기적으로 복구 테스트를 진행해보는 게 좋습니다.

    Proxmox VE 백업 작업 로그 및 성공 기록 확인 화면

    Proxmox 백업 모드별 장단점 비교

    Proxmox에서 VM 백업 시 선택할 수 있는 주요 모드들의 장단점을 정리해봤습니다. 어떤 상황에 어떤 모드를 쓰는 게 좋을지 판단하는 데 도움이 되실 거예요.

    백업 모드 (Mode) 설명 장점 단점
    Snapshot VM이 실행 중인 상태에서 스냅샷을 찍고 백업합니다. VM 서비스 중단 없음, 가장 편리함. 애플리케이션 일관성 보장 어려움, 스냅샷 생성/삭제 오버헤드.
    Suspend VM을 잠시 일시 중지(Suspend)한 후 백업합니다. 파일 시스템 일관성 보장, 스냅샷보다 안전. VM 서비스가 잠시 중단됨 (수 초 ~ 수십 초).
    Stop VM을 완전히 중지(Stop)한 후 백업합니다. 가장 높은 데이터 일관성 보장. VM 서비스가 백업 시간 동안 완전히 중단됨.

    대부분의 홈랩이나 중요도가 아주 높지 않은 서비스는 Snapshot 모드로도 충분해요. 하지만 금융 시스템처럼 데이터 일관성이 절대적으로 중요한 곳에서는 Stop 모드를 고려하거나, VM 내부에서 정교한 백업 스크립트를 돌려야 하겠죠.

    Proxmox VE 백업 모드별 장단점 비교 인포그래픽

    마무리: 데이터 보호는 기본 중의 기본입니다!

    오늘은 Proxmox VE 환경에서 VM 백업 및 복구에 대해 자세히 알아봤습니다. 제가 13년간 서버실에서 일하며 느낀 점은, 기술이 아무리 발전해도 데이터 보호의 중요성은 변치 않는다는 거예요. 백업은 주기적으로, 복구는 빠르게! 이 두 가지 원칙만 잘 지키면 소중한 데이터를 안전하게 지킬 수 있습니다.

    오늘 다룬 내용이 여러분의 Proxmox 환경 데이터 보호 전략을 세우는 데 큰 도움이 되었기를 바랍니다. 다음번에는 Proxmox Backup Server(PBS)를 활용한 더 강력한 백업 전략이나, Proxmox 클러스터 구성에 대한 이야기로 찾아올게요. 혹시 궁금한 점이나, 제가 겪었던 삽질 경험 중 더 듣고 싶은 이야기가 있다면 언제든 댓글로 남겨주세요! 😊

  • [Nas] Docker Compose로 NAS에 앱 배포 및 관리하기: Synology, TrueNAS SCALE 가이드

    [Nas] Docker Compose로 NAS에 앱 배포 및 관리하기: Synology, TrueNAS SCALE 가이드

    13년차 서버실: Docker Compose로 NAS 앱 배포 및 관리 – Synology, TrueNAS SCALE 실전 가이드

    안녕하세요! 13년차 인프라 엔지니어입니다. 오늘은 많은 분들이 궁금해하실 주제를 다뤄볼게요. 바로 Docker Compose를 활용해서 NAS(Network Attached Storage)에 다양한 애플리케이션을 배포하고 관리하는 방법인데요. Synology와 TrueNAS SCALE 환경에서 직접 경험했던 내용을 바탕으로 실전 팁을 공유해드리겠습니다. 혹시 NAS를 파일 저장소로만 쓰고 계신가요? Docker Compose와 함께라면 여러분의 NAS가 훨씬 더 똑똑한 홈랩 서버로 변신합니다! 😉

    NAS 환경에서 Docker Compose를 활용한 애플리케이션 배포 및 관리 아키텍처 개요

    왜 NAS에 Docker Compose를 써야 할까요?

    NAS를 운영하다 보면 언젠가는 ‘파일 저장소 말고 다른 기능도 쓰고 싶은데…’ 하는 생각이 들게 돼요. 개인 블로그를 운영하고 싶거나, 영화·음악 스트리밍 서버를 구축하고 싶을 때 말이죠. 예전 같으면 복잡한 설치 과정과 설정 때문에 망설였겠지만, Docker와 Docker Compose를 알게 된 후로는 정말 달라졌어요.

    Docker는 애플리케이션을 컨테이너라는 격리된 환경에 담아 실행하는 기술입니다. 덕분에 운영체제나 다른 프로그램과의 충돌 걱정 없이 원하는 앱을 쉽게 설치하고 실행할 수 있죠. 다만 여러 개의 컨테이너를 묶어서 관리하려면 일일이 명령어를 입력해야 해서 번거로울 때가 많아요. 이때 등장하는 것이 바로 Docker Compose입니다!

    쉽게 말해, Docker Compose는 YAML이라는 설정 파일을 사용해서 여러 컨테이너로 구성된 애플리케이션을 한 번에 정의하고 실행할 수 있게 해주는 도구예요. 마치 오케스트라의 지휘자처럼 여러 악기(컨테이너)들이 조화롭게 연주(실행)되도록 지휘하는 역할을 하는 거죠.

    Docker Compose를 NAS에서 사용하면 좋은 점은 다음과 같아요:

    • ✅ 간편한 배포: 복잡한 설정 과정을 YAML 파일 하나로 정의하고, 단 한 번의 명령어로 여러 컨테이너를 한 번에 띄울 수 있어요.
    • ✅ 쉬운 관리: 컨테이너의 시작, 중지, 재시작, 삭제 등을 Compose 명령어로 간단하게 관리할 수 있습니다.
    • ✅ 재현성: 동일한 YAML 설정 파일만 있으면 언제 어디서든 똑같은 환경을 구축할 수 있어요. 개발, 테스트, 운영 환경 간의 차이로 인한 문제를 줄여주거든요.
    • ✅ 포트 충돌 방지: 각 컨테이너가 사용할 포트(Port)를 명확하게 지정하여 충돌을 피할 수 있습니다.
    • ✅ 확장성: 필요에 따라 컨테이너 수를 늘리거나 줄이기가 정말 쉬워요.

    Synology와 TrueNAS SCALE, Docker Compose 활용법

    Synology DSM과 TrueNAS SCALE은 각기 다른 방식으로 Docker 환경을 제공하지만, Docker Compose를 활용하는 기본 원리는 동일합니다. 핵심은 docker-compose.yml 파일을 작성하고 실행하는 거죠.

    1. Synology NAS에서 Docker Compose 사용하기

    Synology NAS에서는 ‘Docker’ 패키지를 설치하면 Docker Compose 기능을 사용할 수 있어요. DSM의 ‘패키지 센터’에서 Docker를 검색하여 설치해주세요. 저는 보통 SSH로 NAS에 접속해서 작업하는 것을 선호하지만, DSM의 ‘텍스트 편집기’나 ‘File Station’을 이용해 YAML 파일을 작성하고 관리할 수도 있습니다.

    실행 단계:

    1. SSH 접속: Putty(Windows) 또는 터미널(macOS/Linux)을 이용해 NAS에 SSH로 접속합니다.
    2. 작업 디렉토리 생성: 원하는 위치에 애플리케이션을 위한 디렉토리를 만들어요. 예: mkdir /volume1/docker/my-app && cd /volume1/docker/my-app
    3. docker-compose.yml 파일 작성: 텍스트 편집기(vi, nano 등)를 이용해 docker-compose.yml 파일을 생성하고 내용을 작성합니다.
    4. Docker Compose 실행: docker-compose up -d 명령어를 실행하면 설정된 컨테이너들이 백그라운드(-d)에서 실행돼요.

    예시: Nginx 웹 서버와 Portainer (컨테이너 관리 도구) 배포

    Portainer는 Docker 환경을 웹 UI로 쉽게 관리할 수 있게 해주는 정말 유용한 도구예요. NAS에 Portainer를 설치해두면 컨테이너 관리가 훨씬 편해진답니다.

    
    version: '3.8'
    
    services:
      portainer:
        image: portainer/portainer-ce:latest
        container_name: portainer
        restart: unless-stopped
        security_opt:
          - no-new-privileges:true
        ports:
          - "8000:8000"
          - "9443:9443"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - portainer_data:/data
        networks:
          - portainer_net
    
      nginx:
        image: nginx:latest
        container_name: my-nginx
        restart: unless-stopped
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf:ro
          - ./html:/usr/share/nginx/html:ro
        depends_on:
          - portainer
        networks:
          - portainer_net
    
    volumes:
      portainer_data:
    
    networks:
      portainer_net:
        driver: bridge
    

    이 파일을 /volume1/docker/portainer-nginx/docker-compose.yml에 저장하고, 해당 디렉토리에서 docker-compose up -d를 실행하면 Portainer와 Nginx 웹 서버가 동시에 실행돼요. Portainer는 http://NAS_IP:9443 (SSL), Nginx는 http://NAS_IP로 접속할 수 있습니다.

    Synology DSM에서 Docker 패키지를 설치하는 과정

    2. TrueNAS SCALE에서 Docker Compose 사용하기 (TrueNAS SCALE Apps)

    TrueNAS SCALE은 Kubernetes 기반으로 앱을 관리하는 ‘Apps’ 기능을 제공해요. Docker Compose 파일을 직접 사용하는 방식과는 조금 다르지만, Apps 기능을 통해 원하는 애플리케이션을 쉽게 설치하고 관리할 수 있다는 점은 같습니다. TrueNAS SCALE의 Apps는 Helm chart라는 것을 사용하는데, 많은 경우 Docker Compose 파일과 유사한 구조를 가져요.

    실행 단계:

    1. Apps 메뉴 접근: TrueNAS SCALE 웹 UI에서 ‘Apps’ 메뉴로 이동합니다.
    2. Catalogs 설정: 원하는 애플리케이션을 설치하기 위해 Catalog(앱 스토어 같은 개념)를 추가해야 해요. 커뮤니티에서 제공하는 다양한 Catalog들이 있습니다.
    3. 애플리케이션 설치: Catalog에서 원하는 앱을 선택하고 설치를 진행하면 돼요. 커스텀 앱을 직접 등록하여 Docker Compose 파일처럼 관리할 수도 있습니다.

    주의사항: TrueNAS SCALE의 Apps는 Kubernetes 기반이므로, Docker Compose의 docker-compose.yml 파일을 직접 실행하는 방식과는 다릅니다. 하지만 많은 커뮤니티 앱들이 Docker Compose 구조를 따르고 있어서, YAML 파일의 내용을 이해하고 있다면 앱 설정 시 도움이 돼요. 직접 Docker Compose 파일을 적용하려면 TrueNAS CORE의 ‘iocage’ 플러그인이나 TrueNAS SCALE에서 별도의 VM을 구성해야 할 수도 있습니다. 다만 대부분의 일반 사용자는 Apps 기능으로 충분히 원하는 앱을 설치하고 관리할 수 있어요.

    TrueNAS SCALE의 Apps 메뉴에서 다양한 애플리케이션을 탐색하고 설치하는 과정

    실전 팁 & 트러블슈팅 ⚠️

    13년간 Docker를 다루면서 겪었던 문제와 팁을 공유해 드릴게요. 처음엔 이것 때문에 밤새 고생했던 기억이 있어요. ㅎㅎ

    • 포트 충돌 (Port Conflict): 가장 흔한 문제예요. docker-compose.yml 파일에서 ports 섹션에 이미 사용 중인 호스트 포트를 지정하면 컨테이너가 실행되지 않습니다. Synology NAS의 경우, DSM 자체적으로 사용하는 포트와 충돌하지 않도록 주의해야 해요. 예를 들어 80번 포트는 DSM의 웹 스테이션 등이 사용할 수 있으니, 다른 포트(예: 8080)로 변경하는 것이 훨씬 안전합니다.
    • 볼륨 마운트 경로: 컨테이너 내의 데이터가 호스트 NAS의 특정 경로에 저장되도록 volumes 설정을 잘 해야 합니다. Synology에서는 /volume1/docker/app-name 같은 경로를 주로 사용하고, TrueNAS SCALE에서는 /mnt/poolname/dataset/app-name 같은 경로를 써요. 경로가 잘못되면 데이터가 사라지거나 컨테이너가 제대로 동작하지 않을 수 있으니 주의하세요. 경로 지정 시에는 항상 절대 경로(Absolute Path)를 사용하는 게 정답이에요.
    • 권한 문제 (Permission Issues): 컨테이너가 호스트 파일 시스템에 접근할 때 권한 문제가 발생할 수 있습니다. Docker Compose 파일의 user 옵션을 설정하거나, 호스트 볼륨의 권한을 컨테이너 사용자의 권한에 맞게 조정해야 할 수 있어요.
    • Docker Compose 버전 호환성: version 필드에 명시된 Compose 파일 형식 버전과 실제 사용 중인 Docker Compose 엔진 버전 간의 호환성을 확인하세요. 최신 버전에서는 지원되지 않는 기능이 이전 버전에 있을 수 있습니다.
    • 네트워크 설정: 여러 컨테이너가 서로 통신해야 하는 경우, networks 설정을 올바르게 해야 합니다. 기본적으로는 bridge 네트워크가 사용되지만, 복잡한 구성에서는 custom network을 사용해야 할 때도 있어요.

    💡 팁: 문제가 발생했을 때, docker-compose logs 명령어로 해당 서비스의 로그를 확인하세요. 정말 많은 힌트를 얻을 수 있거든요! 저도 이 명령어로 대부분의 문제를 해결했어요.

    결과 확인 및 관리

    Docker Compose 명령어를 통해 컨테이너를 실행한 후에는 상태를 확인하는 것이 중요합니다.

    • docker-compose ps: 현재 실행 중인 컨테이너 목록과 상태를 보여줘요.
    • docker-compose logs -f : 특정 컨테이너의 실시간 로그를 확인할 수 있습니다. (Ctrl+C로 종료)
    • docker-compose down: 실행 중인 컨테이너들을 중지하고 관련된 네트워크, 볼륨 등을 삭제해요. (데이터 보존 여부는 볼륨 설정에 따라 다름)
    • docker-compose pull: Docker 이미지의 최신 버전을 다운로드합니다.
    • docker-compose up -d --build: 설정 파일을 새로 빌드하고 컨테이너를 실행해요.

    Portainer 대시보드를 통해 Synology 또는 TrueNAS SCALE에서 실행 중인 Docker 컨테이너들을 한눈에 관리하는 모습

    마무리하며

    지금까지 Docker Compose를 활용하여 Synology와 TrueNAS SCALE NAS 환경에서 애플리케이션을 배포하고 관리하는 방법에 대해 알아봤습니다. 처음에는 조금 복잡해 보일 수 있지만, 한 번 익혀두면 NAS의 활용도를 정말 무궁무진하게 높일 수 있는 강력한 도구예요.

    저도 처음엔 간단한 웹 서버 하나 띄우는 것도 버거웠는데, 지금은 여러 컨테이너를 엮어 복잡한 서비스를 구축할 수 있게 됐네요. 여러분도 오늘 알려드린 내용을 바탕으로 차근차근 시도해보신다면, 분명 여러분만의 멋진 홈랩 환경을 구축하실 수 있을 겁니다.

    다음 글에서는 Docker Compose를 활용한 Home Assistant 설치 및 연동에 대한 실전 가이드를 다룰 예정이니 많은 기대 부탁드립니다! 혹시 오늘 내용 중에 궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 함께 해결해나가겠습니다. 😉