ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라즈베리 파이 홈서버 구축하기
    개발/개발 지식 공유 2025. 11. 30. 18:08

     

    친한 개발자 동생이 요즘 홈서버를 만들까 고민 중이라고 합니다.

    저는 이미 홈서버를 운영하고 있기 때문에 이런저런 팁을 전달해 주기로 했습니다.

     

    제가 홈서버를 구성하면서 나중에 헷갈리지 않으려고 노션 문서로 정리해 둔 것이 있습니다.

    그런데 이 문서는 혼자 보려고 만든 것이라 누굴 보여주기에는 상당히 불친절합니다.

    그래서 따로 노션 페이지로 정리해서 전달할까 했는데, 그럴 바에는 블로그 포스팅을 작성해서 더 많은 사람들이 참고하면 좋을 것 같아서 블로그에 써 보려 합니다.

     


     

    개발자로서 이것저것 사이드 프로젝트를 하다보면 배포할 일이 생깁니다.

    보통은 간편하고 안정적인 AWS, GCP, Azure 등 클라우드 서비스를 활용하게 됩니다.

    하지만 비싸요.. 서비스에 따라 한달에 최소 몇천원에서 수십만원까지 청구될 수 있습니다.

    무료 사용량도 있지만 속도가 느리고, 실수로 요금이 청구되는 일도 있죠. 실제로 저는 Azure SQL Server로 데이터베이스를 구성하다가 설정을 잘못 건드리는 바람에 15만 원 청구서가 날아와서 깜짝 놀랐던 일도 있습니다. (잘 빌어서 환불 받긴 했습니다)

     

    이렇게 클라우드 서비스에 호되게 당한 개발자들은.. 한번 구축해 놓으면 추가 비용이 들지 않고, 속도도 빠른 홈서버에 관심을 갖게 됩니다...

    나를 닫는 순간 ERR_CONNECTION_REFUSED를 보게 될 것이다

     

     

     

    우선 홈서버를 위해 필요한 것들을 정리해볼까요?

    • 컴퓨터
    • 인터넷

    이렇게 두 개만 있으면 나만의 홈서버를 만들 수 있습니다.

    쉽죠?

     

     

     

    자.. 각 항목을 좀 더 자세하게 살펴 봅시다.

     

    어떤 컴퓨터가 좋을까요?

    • 24시간 돌아가야 하기 때문에 소비전력이 낮으면 좋습니다. (전기요금 이슈)
    • 24시간 안정적으로 돌아가야 하기 때문에 안정성이 높으면 좋습니다.
      • 그래서 Linux 설치가 가능하면 좋습니다.
      • Windows, macOS로도 서버를 돌릴 수는 있지만, 일반 사용자를 위한 운영체제기 때문에 서버에는 불필요한 기능들이 있고, 이 기능들이 리소스를 쓸데없이 잡아먹습니다. 더군다나 이런 기능들이 동작하다가 오류를 내면 서버에는 치명적입니다.
      • Windows Server는 나쁘지 않은 선택지이지만, 개발자로 일하다 보면 대부분의 제품 또는 라이브러리들이 윈도우를 배척(?)한다는 사실을 알 수 있습니다.
      • 그냥 Linux를 쓰는 것이 정신 건강에 좋습니다. 쓰는 사람이 많기 때문에 자료도 쉽게 찾을 수 있어서 확실히 troubleshooting에 용이합니다.
    • 목적에 따라 다르겠지만 고성능을 필요로 하지는 않습니다. 일반적인 웹앱을 호스팅하는 Linux 서버는 1코어 CPU에 1GB 램으로도 충분히 잘 동작합니다.

     

    이 모든 조건을 충족하는 라즈베리파이 5라는 녀석을 단돈 125,000원에 구매할 수 있습니다.

    ARM 아키텍처의 4코어 CPU를 사용해서 성능도 짱짱하고, 소비전력도 아주 적습니다.

    램도 넉넉하게 8GB 짜리로 구입했습니다. (16GB, 4GB, 2GB 제품도 있습니다)

    저는 여기에 전원 어댑터 정도만 추가로 구입했습니다. 전원은 안정적으로 공급되는 게 좋으니, 번들 어댑터를 사용하는 것이 좋아 보였어요.

    케이스나 방열판은 필요 없을 것 같았고, MicroSD카드와 리더기, HDMI 케이블, 랜 케이블은 집에 있는 것을 사용했습니다.

    만약 이런게 필요하신 분들은 베이직 키트나 어드밴스드 키트를 구입하는 것을 추천드립니다.

    (8GB 기준 베이직 키트가 175,000원, 어드밴스드 키트가 21만 원 정도 하네요)

     

     

     

    인터넷은 어떤 조건이 필요할까요?

    • 고정 IP주소가 할당되어야 합니다.
      • 보통 홈서버를 구축하는 목적은 웹앱 같은 것을 띄워서 외부에서 접속할 수 있게 하는 것입니다. 그럼 보통 도메인 주소를 구입해서 Public IP에 연결해 둡니다. 그런데 IP가 바뀌어 버리면 도메인 주소가 바뀐 IP를 찾아가지 못하겠죠? 그러면 꼼짝없이 서비스 중단입니다.
    • 대역폭이 넓어서 다운로드/업로드 속도가 빠르면 당연히 좋습니다. 하지만 그보다는 지연 속도가 중요합니다.

     

    저는 KT 인터넷을 사용하고 있습니다.

    홈서버를 위해서는 KT만한 ISP가 없는 것 같습니다.

     

    사용하면서 아직까지는 IP 주소가 바뀐 적은 없습니다. KT 인터넷과 관련된 나무위키 문서를 찾아 봤을때, 출발 디바이스 MAC 주소 기반으로 고정 IP를 할당해주기 때문에 네트워크를 24시간 이상 미사용하지만 않는다면 IP 주소가 고정으로 제공된다고 합니다.

     

    타사 인터넷의 경우는 사용해보지 않아서 잘 모르지만, 찾아보니 IP가 변동될 위험도 있고, 특정 포트를 막아버리는(!) 경우도 있다고 합니다. SSH 접속이라도 하려면 22포트를 열어 두어야 하는데, 막혀 있으면 곤란하겠죠.

     

    사실 원래는 고정 IP를 보장 받으려면 오피스넷 같은 유료 서비스를 이용해야 합니다.

    만약 본인의 서버가 인터넷 문제로 서비스 중단되는 상황을 절대로 원하지 않는다면, 기업용 유료 서비스를 이용하는 것이 좋습니다. (하지만 그럴 바에는 그냥 클라우드 쓰는게..)

     

    그리고 KT 인터넷이 지연 속도도 훌륭한 편입니다. 정밀하게 측정해 본 적은 없지만, 크롬 개발자 도구에서 홈서버 api에 health check를 보내 봤을 때 응답이 10ms를 초과하지 않았습니다. (물론 제가 요청하는 지역이 물리적으로 가깝기 때문에 더욱 짧은 것도 있어요)

     

     

     

    자, 이제 장비는 갖춰졌으니 구성할 차례입니다.

     

     

     

    라즈베리파이 설치하기

    공식 홈페이지에 가이드가 잘 나와 있으니 참고하시면 됩니다.

    https://www.raspberrypi.com/documentation/computers/getting-started.html

     

    Getting started - Raspberry Pi Documentation

    The official documentation for Raspberry Pi computers and microcontrollers

    www.raspberrypi.com

     

    대략적으로 과정을 설명드리자면..

     

    라즈베리파이가 제공하는 Imager 소프트웨어를 사용해서 SD카드에 부팅 이미지를 만들고,

    그걸 기기에 꽂고, 랜선도 꽂고, 모니터랑 키보드 마우스도 연결하고,

    전원을 연결하면 켜집니다.

     

    OS를 설치합니다. 저는 권장되는 옵션인 Raspberry Pi OS (64bit)를 설치했습니다. Debian 기반 Linux인데, 최적화가 잘 되어 있어서 꽤 괜찮습니다.

     

    그리고 npm 등 내가 사용할 소프트웨어를 설치하여 사용하면 됩니다.

    쉽죠?

    근데 진짜 크게 어렵지 않습니다. 공식 가이드가 잘 되어 있어서 잘 따라가면 설치하실 수 있을 거에요.

     

     

     

    인터넷 설정하기

    이제 외부망에서 라즈베리파이에 접근할 수 있도록 인터넷 관련 설정을 해주어야 합니다.

    저는 KT 기준으로 설명드리겠습니다. 다른 ISP도 거의 비슷한 옵션이 있을 거에요.

     

    공유기 설정 페이지로 들어가 줍니다.

    http://172.30.1.254:8899/

     

    보통 로그인 계정 초기값은 아래와 같습니다.

    ID: ktuser

    PW: homehub

     

    로그인 이후 계정 아이디와 비밀번호를 변경해서 사용하면 됩니다.

     

    처음 들어가면 이렇게 시스템 정보가 뜹니다.

    저기 가운데 보이는 인터넷 연결정보IP주소가 여러분들의 외부 IP 주소입니다.

    저 주소를 활용해서 외부에서 홈서버에 접속할 수 있습니다.

     

    그런데 그냥은 접속이 안되고..

    포트포워딩이란 것을 해줘야 합니다.

     

    포트포워딩이 뭐냐면 외부 포트를 내부 포트로 포워딩하는(넘겨주는) 것입니다.

    클라우드 서비스의 방화벽 설정.. 네트워킹 설정.. 이런거 해보신 분이면 익숙하실 겁니다. 포트를 열어주는 겁니다.

     

    예를 들어 여러분이 웹 앱을 3000번 포트에 띄웠다고 가정해 봅시다.

    그리고 외부 IP주소가 123.456.789.000 이라고 가정해 봅시다.

    브라우저 주소창에 123.456.789.000:3000을 치면 내 웹사이트에 접속될까요?

    애석하게도 그렇지 않습니다. 포트포워딩이 되어 있지 않아서 그렇습니다.

    여러분 집에 설치된 공유기는 3000포트로 들어온 요청을 어떤 내부 IP로 돌려주어야 하는지 알지 못합니다.

    그걸 지정해 줍시다.

     

    우선 홈서버가 어떤 내부 IP주소를 할당 받았는지 확인해 줍시다.

    홈서버에서 터미널을 실행하고 `ip addr | grep inet` 을 칩니다.

    마지막에 ens 또는 eth로 끝나는 것이 내부 IP 주소입니다.

     

    이제 공유기 설정의 장치설정 -> 트래픽 관리에서 포트포워딩 설정을 해줄 수 있습니다.

    다른 건 볼 필요 없고, 저렇게 외부 포트, 내부 IP 주소, 내부 포트, 프로토콜, 여러분이 참고용으로 사용할 설명까지 입력하고 추가하면 됩니다.

    저는 저렇게 443 포트를 내부 443으로 돌려 주었습니다.

    필요에 따라 다른 포트도 추가해서 사용하면 됩니다.

     

     


     

    자.. 이렇게 홈서버를 구입하고 초기 구성까지 해 보았습니다.

    어떠셨나요? 어렵지는 않죠?

     

    여기까지 따라오신 분들은 이제 홈서버를 제대로 활용하기 위해서 nginx를 구성하고, 가비아 같은 곳에서 도메인을 사서 연결하고, 앱을 시스템 서비스에 등록하여 재시작해도 동작하도록 만들고, 배포할때 귀찮으니까 GitHub Actions로 CI/CD 구성하고, 이런 귀찮은 것들을 하시게 될 겁니다.

    하지만 요런걸 다루게 되면 이 글이 다루는 범위가 너무 넓어질 것 같아서, 필요하다면 다른 글로 포스팅하도록 하겠습니다.

     

    그럼 모두들 경제적인(?) 홈서버 생활 하세요!

    댓글

Copyright 2022. ProdYou All rights reserved.