1. 라즈베리파이 OS 설치 및 SSH 접속
모니터 없이 라즈베리파이4에 OS를 설치하고 SSH 접속을 하기 위해 Raspberry Pi Imager(이하 imager)를 활용한다.
https://www.raspberrypi.com/software/
imager를 활용해 원하는 OS 이미지를 선택하고, SSH 접속에 필요한 정보 및 wifi 정보를 설정한다.
모든 설정이 완료되면 Micro SD 카드에 OS이미지를 저장한다.
이후 SD카드를 라즈베리파이4에 삽입 후 설정한 정보대로 SSH 접속을 하면 된다.
라즈베리파이4의 IP주소는 공유기 관리자에 접속해서 확인할 수 있다.
참고 블로그 : https://main.tistory.com/278
2. 외장 하드 마운트
2-1. 장치 선택
성능이 크게 중요하지 않았기에 중고 HDD(2.5인치)를 구매했다.
라즈베리파이4의 보조 저장 장치를 연결하기 위한 인터페이스가 USB 3.0이기 때문에 최대 전송 속도를 고려해
SATA to USB 3.0케이블을 선택했다. (기타 NVME, M.2 등의 인터페이스를 사용해도 라즈베리파이4가 USB 3.0이라 전송 속도에 한계가 존재)
케이블을 선택할 때 가장 중요한 점은 UASP지원 여부다.
USB Attached SCSI( UAS) 또는 USB Attached SCSI Protocol( UASP)은 하드 드라이브 (HDD), 솔리드 스테이트 드라이브 (SSD), 썸 드라이브 와 같은 USB 저장 장치로 데이터를 이동하고 이 장치에서 데이터를 가져오는 데 사용되는 컴퓨터 프로토콜이다.
- wiki
즉, UASP의 핵심은 데이터 송/수신에 사용되는 통로를 별도로 두어 데이터 전송 속도를 향상시켰다는 것이다.
먼저 아래 명령어를 입력해 연결된 외장 하드가 인식이 되는지 확인한다.
sudo lsblk

연결된 HDD에는 이미 파티셔닝과 포맷이 완료 되어 있다.(중고 구매)
2-2. 자동 마운트
다음 외장 하드를 부팅시 원하는 디렉토리에 자동 마운트하기 위해 아래 명령어를 입력해 해당 장치의 UUID를 확인한다.
sudo blkid

UUID를 확인하며 포맷 형식이 ubuntu에 지원하는 형식(ext4)이 아닌 window에서 사용하는 형식(ntfs)임을 알게됐다.
아래 명령어를 입력해 ext4형식으로 포맷을 진행
sudo mkfs.ext4 /dev/sda1
[포맷 형식] [블록 경로]

자동 마운트를 하려면 '/etc/fstab'(file systems table)에 설정을 추가해야 한다.
fstab파일은 잘못 설정 시 부팅이 되지 않을 수 있기 때문에 편집 시 주의해야 한다.
sudo vim /etc/fstab

아래의 설정을 추가한다.
UUID=cb04b332-bae7-4380-82dc-e0a3cc238c88 /mnt/HDD ext4 defaults,noatime 0 0
[장치의 UUID] [마운트 경로] [파일 시스템] [마운트 옵션] [덤프/백업 여부] [fsck 순서]
- 마운트 옵션
- defaults: 기본 설정으로 마운트 (읽기/쓰기, SUID 허용, dev, exec, auto, nouser, async).
- noatime: 파일 접근 시간 업데이트를 비활성화하여 디스크 I/O 성능을 향상시킴.
- ro: 읽기 전용으로 마운트.
- rw: 읽기/쓰기 모드로 마운트.
- user: 일반 사용자가 마운트 및 마운트 해제를 할 수 있게 함.
- noauto: 부팅 시 자동으로 마운트하지 않음.
- errors=remount-ro: 오류 발생 시 읽기 전용으로 다시 마운트.
- 덤프/백업 여부
- 덤프 백업 유틸리티가 파일 시스템을 백업해야 하는지 여부를 지정합니다. 0은 백업하지 않음을 의미하고, 1은 백업함을 의미합니다.
- fsck 순서
- file system consistency check를 의미한다. 즉, 파일 시스템의 일관성을 검사하고 복구하는 유틸이다.
- 0: 해당 파일 시스템은 부팅 시 점검 X
- 1: 해당 파일 시스템은 첫 번째로 점검. 일반적으로 루트 파일 시스템에 사용.
- 2: 루트 파일 시스템 이외의 다른 파일 시스템에 사용. 여러 파일 시스템이 2로 설정된 경우, 동시에 병렬로 점검될 수 있음.
여기까지 라즈베리파이4에 외장 하드를 연결하고 부팅 시 자동으로 마운트하는 설정을 완료했다.
참고 블로그 :
- https://chmodi.tistory.com/145?category=940390
- https://velog.io/@dev2820/raspberry-pi-%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0
3. 외부 SSH 접속
지금까진 같은 내부망이기 때문에 라즈베리파이4에 SSH 접속이 가능했다.
하지만 외부에서 접속을 하려면 포트 포워딩을 통해 라즈베리파이4의 포트를 외부에 노출시켜야한다.
3-1. 내부 IP 고정
포트 포워딩 전에 가장 먼저 해야 하는 것은 내부 IP 고정이다.
공유기에 연결된 기기는 DHCP(Dynamic Host Configuration Protocol)로 내부 IP가 할당되기 때문에 주소가 계속해서 뒤 바뀔 수 있다.
그래서 내부 IP를 고정해야 하는데, IP를 고정하는 방법은 크게 두 가지가 있다. 둘 중 하나만 설정해도 되지만 DHCP 서버의 변경이나 공유기 설정 변경으로 인해 IP 주소가 변경되는 경우도 있다고 하니, 가급적이면 두 가지 방법 모두 사용하는 것이 좋다.
- 공유기 관리자 설정을 통한 DHCP 고정 할당
- OS IP 고정(나는 ubuntu 22.04 LTS를 사용)
DHCP 고정 할당은 검색하면 많은 내용이 나오기도 하고, 공유기 벤더사마다 설정 방법이 조금씩 다르니 필요에 따라 검색하자.
Ubuntu 22.04 IP 고정
/etc/netplan 디렉토리로 이동 후에 50-cloud-init.yaml파일을 편집한다. 파일 이름은 ubuntu 버전마다 조금씩 다른듯하다.
cd /etc/netplan
sudo vi 50-cloud-init.yaml
network:
version: 2
wifis:
renderer: networkd
wlan0: # 무선 네트워크 인터페이스
access-points:
U+Net4EFF: # 연결할 무선 네트워크 SSID
password: abcdefg # 연결할 무선 네트워크 비밀번호
dhcp4: false # DHCP를 사용하지 않음. 수동으로 IP를 설정하겠다는 의미
addresses:
- xxx.xxx.xxx.xxx/24 # 설정할 IP. CIDR 표기법 사용
routes:
- to: 0.0.0.0/0 # 목적지 IP, 해당 IP 주소는 기본 값으로 모든 목적지를 나타냄
via: xxx.xxx.xxx.xxx # gateway 설정 route -n 명령어로 찾을 수 있음
nameservers:
addresses: # DNS 서버 주소 설정. 해당 주소는 Google DNS서버
- 8.8.8.8
- 8.8.4.4
optional: true
3-2. 포트포워딩
포트 포워딩 시 외부, 내부포트를 다르게 열어둬도 괜찮다고 한다.
외부 포트는 well-known 포트를 피해 악의적인 사용자의 접근을 최소화 하자.
포트 포워딩 또한 공유기 벤더사마다 설정이 다르므로 필요할 때 검색하자.
핵심은 외부 포트(공유기의 포트)와 내부 포트(라즈베리파이4의 포트)를 매핑하는 것이다.
4. 라즈베리파이4 홈서버 구축 후기
홈서버 구축 이유
가장 큰 이유는 클라우드 환경에서 몇 번의 클릭 속에 생략된 수 많은 과정을 직접 경험해볼 수 있다는 것이다.
실제로 구축을 하며 이래저래 유용한 지식을 많이 얻은 듯하다.
두 번째는 클라우드보다 적은 유지비용이다. 물론 홈서버 구축을 어떤 컴퓨터로 하냐에 따라 초기 비용은 천차만별이다.
라즈베리파이4 선택 이유
가장 큰 이유는 스펙 대비 저렴했기 때문이다.
이러한 이유로 선택했지만 이후 레퍼런스가 많은 점 또한 선택의 이유가 될만 했다.
이외에도 적은 유지 비용도 한몫했다.
https://device-port.kr/raspberrypi_microcontroller_linux_wordpress_gpio_arduino/
HDD를 연결하며 소비 전력에 따른 라즈베리파이4 전원 공급 이슈는 없었지만 혹시라도 추후에 발생할 수 있으니 관련 링크를 미리 첨부해두자.
https://www.clien.net/service/board/cm_rasp/16169819
구매 제품
1. 라즈베리파이4 : 중고 거래
2. SATA to USB :
3. 보조 저장 장치 : 500GB HDD 중고 구매
4. 라즈베리파이4 케이스 : 쿠팡