Skip to main content

라즈베리파이 Homelab 설치

이전부터 저만의 작은 서버가 있으면 어떨까 막연하게 생각만 하다가 이번에 오래된 2018년형 Macbook을 처분하게 되면서 라즈베리파이5와 여러 구성품들을 구입하게 되었어요. 라즈베리파이5의 케이스를 찾는 게 가장 오래걸렸었는데 기능적으로도 훌륭하면서 디자인적으로도 깔끔한 케이스가 얼마 없어서 찾는데만 하루 이틀이 걸렸네요. 공유기 라우터 뒤에 사용가능한 포트가 얼마 남지 않아서 스위치도 같이 구매했습니다. 준비물은 다음과 같아요.

구성품

  • 라즈베리파이5 8GB x 3
  • 액티브 쿨러 x 3
  • 라즈베리파이5 케이스
  • 충전 어탭터
  • 스위치
  • CAT5E 이상 랜선케이블 x 3
  • 충전용 C타입 케이블 x 3
  • microSD 카드 128GB x 3
  • SD카드리더기

케이스 조립

2주 동안 미국에서 비행기 타고 온 라즈베리파이5 케이스를 먼저 조립해주었어요.

install-4

전체 부속을 모두 펼쳐본 모습이에요.

install-5

케이스 조립을 마치고 나서 이전에 실험용으로 작은 케이스에 담아줬던 라즈베리파이5 케이스도 새로운 보금자리로 옮겨주기 위해 케이스와 분리합니다.

install-6

나머지 2개의 라즈베리파이5에 모두 액티브 쿨러를 장착시켜 줍니다.

install-7

스위치및 전원 어댑터와 모두 연결한 모습입니다. 프라이빗 아이피 주소도 스티커에 적어서 붙여줬어요. (와이파이로 연결했을 때 DHCP(KT 공유기)로부터 할당받은 아이피지만 지금은 고정 아이피로 할당해줘서 다시 변경됐어요...)

install-8

케이스 팬도 동작하고 액티브 쿨러도 동작합니다. 비록 오버클럭은 하지 않았지만 온도를 최대한 낮게 유지하고 싶은 마음이 컸네요. 팬 연결은 맨 아래 랙에 있는 라즈베리파이와 맨 위 랙에 있는 라즈베리파이의 5V 2번 4번 핀에 연결해주었어요. 크기가 작아서 소음은 크지 않지만 모두 잠든 새벽에 조용한 바람소리가 거슬리긴 합니다. 케이스가 참 깔끔하지 않나요?? 2주동안 기다려서 받은 보람이 있네요.

install-9

액티브 쿨러를 장착하고 나서는 팬이 계속 돌지 않고 특정 온도에서만 작동하게 돼요. 처음에 부착하고 나서 전원을 연결했음에도 동작하지 않아서 고장난건가 의심을 하기도 했어요. 60도에서 송풍기의 팬이 켜지고, 67.5도에서는 팬 속도가 증가하며 마지막으로 75도에서는 팬이 최대 속도로 증가하여 라즈베리파이 펌웨어에 의해 능동적으로 관리됩니다. 온도가 다시 한계 이하로 떨어지면 송풍기의 팬은 자동으로 꺼집니다.

이미지 굽기

라즈베리파이에 올라갈 이미지는 Raspberry Pi Imager를 사용해서 SD카드에 굽는데 설정시에 무선 LAN 설정을 하기 때문에 랜선케이블이 없어도 와이파이로 연결할 수 있긴 합니다. 가장 먼저 할 일은 microSD 카드에 ubuntu 24.04 Server 이미지를 부팅시에 사용할 수 있도록 구워주는 거에요.

install-1

install-2

install-3

SSH 연결

이제 우분투 서버의 이미지가 담긴 microSD 카드를 라즈베리파이에 장착한 뒤에 라즈베리파이에 C타입 케이블과 허브를 연결하여 전원을 공급합니다. 컴퓨터에서 라즈베리파이에 접속하기 위해서는 라즈베리파이의 Private IP를 알아야 해요. 저는 KT를 사용중이므로 http://172.30.1.254로 접속한 뒤에 상태 정보 > 유무선 단말 정보 > MAC 주소와 IP 주소 정보를 확인한 뒤에 SSH 접속을 시도합니다. 외부에서는 Client VPN을 통해 접속하거나 22번 포트를 포트 포워딩으로 외부에서 접속할 수 있도록 설정이 가능하지만 현재 저는 같은 내부망에 연결되어 있으므로 별도 설정 없이도 Private IP로 접속이 가능한 상태에요. 나중에 외부에서 접속이 필요할 땐 3대의 서버 중 한대에 wireguard를 올려서 접속할 예정이에요.

호스트네임 변경

SSH로 접속한 뒤에 가장 먼저 한 일은 호스트명을 변경해주었어요. 하지만 재부팅을 하게 되면 원래의 호스트명으로 다시 변경되므로 /etc/cloud/cloud.cfg 파일의 preserve_hostname: false를 true로 변경해주어야 합니다.

/etc/netplan 옵션 변경

다음으로 ip link show 커맨드를 입력하면 랜선으로 연결된 en0이 다운되어 있거나 활성화되어 있어도 wlan0을 통해 와이파이로 통신하고 있게 되는데 /etc/netplan 아래 존재하는 yaml 파일을 수정해서 랜선을 통해서 통신할 수 있도록 설정을 진행합니다. 처음에는 아래와 같이 이더넷 설정 없이 wifi 설정만 되어 있는 것을 보실 수 있습니다.

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# This file is generated from information provided by the datasource. Changes
version: 2
wifis:
renderer: networkd
wlan0:
access-points:
trust5.py:
password: [Password]
dhcp4: true
optional: true

무선과 유선 모두 활성화하고자 하신다면 이더넷 설정만 추가해도 되지만 이더넷 연결만 사용하고 싶으실땐 wifis 항목을 지우면 됩니다.

version: 2
ethernets:
eth0:
addresses:
- 170.30.1.72/24
routes:
- to: default
via: 170.30.1.254
nameservers:
addresses: [1.1.1.1, 8.8.8.8, 168.126.63.1]
dhcp4: false
optional: true
wifis:
renderer: networkd
wlan0:
access-points:
trust5.py:
password: [Password]
dhcp4: true
optional: true

위와 같이 설정을 변경했다면, 아래 명령어로 적용시킵니다. netplan try는 설정이 잘못될 경우 이전 설정으로 롤백시켜줍니다.

$ sudo netplan generate
$ sudo netplan try

라즈베리파이 3대 모두 이더넷 설정을 적용해주었어요. 가장 위에 있는 랙부터 172.30.1.71, 172.30.1.72, 172.30.1.73으로 고정 아이피를 할당해주었어요. KT 공유기에서는 장치설정 > 네트워크 관리 > LAN 연결 설정으로 들어가면 아래와 같이 고정 아이피를 MAC 주소별로 지정할 수 있습니다.

install-10

포트포워딩 설정 또는 wireguard 설치

하나의 서버에 wireguard를 설치하여 Client VPN으로 접속하거나 22번 포트를 포트 포워딩 설정하여 외부에서 접속하도록 설정할 수 있어요. wireguard를 설치하는 법은 많이 공유되어 있어서 넘어갈게요. 외부에서 20000번으로 22번 포트로 접속하거나 UDP 포트(51820번)를 외부로 노출했을 때는 아래와 같이 설정할 수 있어요.

KT 공유기를 사용하신다면 한가지 주의할 점이 있는데 DHCP 코넷 IP 영역(172.30.1.1 ~ 172.30.1.100)을 벗어나는 IP를 할당하면 인터넷 연결은 되지만 포트포워딩이 작동을 하지 않는다고 하더군요.

install-11

install-12

DDNS 설정

마지막으로 공인 아이피가 변경될 수 있으므로 IP 주소가 변경되더라도 항상 동일한 IP로 접속할 수 있도록 설정하기 위해서 DDNS(Dynamic Domain Name System)을 설정해야 합니다. KT는 오픈소스인 duckDNS는 지원되지 않고 dynDNS와 no-ip만 지원되는 것 같아서 no-ip를 사용해서 DDNS를 설정했어요.

install-13

다음 포스트에는 3대의 라즈베리파이를 쿠버네티스 클러스터로 구성하는 방법에 대해서 소개할게요!

참고자료