웹 프로젝트를 진행하는 대학생들이 나와 같은 고민이 있을 것 같아 도움을 주기 위해 글을 쓰기로 했다.
학교에서 졸작으로 웹 프로젝트를 진행하면서, AWS에 API 서버를 빌드하기로 했다.
하지만 역시 문제는 비용이었다.
우리 프로젝트는 koBERT를 사용하는데, 이를 위해 AWS에 flask 또한 빌드해야 했다.
하지만 둘 다 빌드하면 EC2의 프리티어 인스턴스는 램이 모자라서 뻗어버린다는 것 ㅠㅠ
결국 램 용량 4기가짜리 인스턴스를 쓰고, 거기다가 스왑 메모리까지 쓰고 나서야 빌드가 성공했다.

한 달마다 80달러 정도가 청구되기 시작했다..
대략 11만 정도인데, 팀원끼리 나누면 2만 3천 정도 ㅠㅠ
누군가 보면 얼마 안되는 돈이라고 하겠지만, 이 정도 웹 프로젝트에 이만한 비용을 들이는 것이 너무 아까웠다.
그러던 중!! 라즈베리파이에 웹서버를 띄운 블로그 글을 보게 되었다!!
이거다! 이거면 돈도 안 들겠다!!
바로 라즈베리파이 5를 구매하였다 (램 8기가)
가격은 10만원 남짓
뭔가 돈을 더 쓴 기분이다...
먼저 Rasberry Pi Imager를 설치하자
예전에는 우분투를 설치하려면 미리 OS 이미지를 구해야 했다던데.. 요새는 그럴 필요 없이 이 프로그램 하나면 충분하다
기술의 발전 만세

디바이스는 Rasberry Pi 5
운영체제는 Other General-purpose Os -> Ubuntu -> server 버전으로 선택한다
저장소는 미리 구매해 둔 SD카드나 SSD로 하자
나는 이미 SD카드에 설치하였기에, 이해를 돕기 위해 USB에 설치하겠다

다음을 누르면 OS 커스터마이징을 한다고 한다

설정을 편집하기 누르자

hostname : 우분투 서버의 이름이다
사용자 이름 및 비밀번호 설정 : 우분투 계정과 비밀번호이다. 접속할 때 필요하니 잊지 말자 무조건 기억해라
무선 LAN 설정 : 라즈베리파이에 OS가 설치되면 자동으로 이 와이파이에 접속하게 된다
여기서 주의 !!!!!
https://blog.naver.com/elepartsblog/221509228144
라즈베리파이 3B+ 와이파이 설정 - 02. Wifi 5G 접속문제(연결끊김) 원인 및 해결 방법
저번 포스팅에 이어서 라즈베리파이 5G Wifi 설정 방법 및 연결 불량 문제에 대해 확인해 보도록 하겠습...
blog.naver.com
위 블로그 포스팅에서 보듯이.. 5G 와이파이를 사용하면 제대로 잡히지 않는 문제가 있다...
그래서 나는 그냥 2.4G 와이파이를 사용하기로 했다.
그리고 서비스에서

나는 ssh 사용으로 설정하였는데, 공개 키 인증을 사용해 본 사람은 공개 키를 사용해도 될 것이다.
그리고 조금 기다려주면...

완성!!
이제 SD카드를 라즈베리파이에 꽂고 잠시 기다려주자
그다음 본인의 공유기 설정으로 가자
나는 iptime 공유기를 사용 중이라 192.168.0.1 로 접속하였다

만약 공유기 설정 페이지를 잘 모르겠다면, ipconfig를 사용하여 기본 게이트웨이를 찾자
참고로, 무선 와이파이에 연결된 기기에서 공유기 설정으로 들어가자

여기서 관리도구로 들어가자

고급 설정 - DHCP 서버 설정 - 사용 중인 IP 주소 정보
저기서 아까 설정해 둔 hostname이 뜨는지 확인하고, 뜬다면 그 IP 주소를 기억해 두자!! 나는 gooch로 설정해서 저렇게 뜬다
그다음... cmd 창을 켜자

ssh {내가 설정한 사용자 이름}@{확인한 IP 주소 정보} 이렇게 입력하자
그리고 비밀번호를 입력하면...

이렇게 우분투에 접속에 성공했다 !!!
이제부턴 AWS에 API 서버를 올렸던 사람은 라즈베리파이에 API 서버를 올릴 수 있을 것이다 !!
저는 어떻게 올려야 하는지 잘 모르겠어요 ㅠㅠ
위 링크에서 확인하자 !! 정말 잘 설명해 주셨다. AWS 설정 부분은 넘기고 배포하는 부분만 확인하자
하지만 아직 로컬 네트워크 내에서만 접속이 가능하다
근데... 우리의 API 서버는 프론트 쪽에서도 확인이 가능해야 하는데...?
이제 외부에서도 우리의 API 서버 쪽으로 접속 가능하도록 하자
ifconfig를 입력하자

ether 옆의 12자리를 기억하자 당신의 라즈베리파이의 MAC 주소이다

아까의 DHCP 주소설정의 '사용중인 IP 정보' 하단에 수동 주소 입력에는 내 라즈베리파이가 사용하는 IP 주소를 입력하고, 그 뒤의 6개의 칸에는 방금 MAC 주소를 입력하자
설명 입력 칸에는 입력하고 싶으면 하자. 나는 '라즈베리'라고 입력하고 수동 등록하였다
자 이제.. 포트포워드를 진행해 보자...
포트포워드가 뭔가요???
자 이제... 내가 배운 전공 지식을 자랑할 시간이다
우리가 지금 사용하는 IPv4 주소... 총 2^32개가 존재할 수 있다
하지만 전 세계가 사용하는 IT기기가 이미 그 수를 넘어갔다....
IPv6가 나왔다지만... 아직 사용하는 곳은 적다. 그럼 대체 어떻게 아직 IPv4를 사용하는 걸까???
여기서 우린 NAT를 알아야 한다

내가 네트워크 시간에 열심히 필기한 PDF다 (뿌듯)
네트워크를 간단히 분리하면 전세계 다른 컴퓨터들을 이어주는 WAN, 로컬 네트워크(학교, 회사, 집 등.. 우리의 경우엔 집이다) 만 이어주는 LAN이 있는데, 아끼 cmd의 ipconfig에서 확인한 게이트웨이가 바로 WAN가 LAN 이 둘을 이어주는 라우터이다 !!
WAN의 서버에 우리가 데이터를 요청하면, 라우터를 거쳐 이동하게 되는데, LAN IP와 WAN 서버 IP가 게이트웨이 라우터의 NAT translation table에 기록되게 된다 (사진의 1번 -> 2번)
따라서 WAN에서 다시 응답이 올 때는 라우터에서 테이블을 보고 LAN 내의 컴퓨터로 해당 응답을 보내주게 된다 ( 3번 -> 4번)
하 지 만 !!!!
WAN에서는 LAN 내의 웹 서버에 요청을 보낼 수 있을까???
불가능하다. LAN 내의 웹 서버 IP는 LAN 내에서만 사용 가능하고, 이는 밖에서 언제든지 중복될 수 있는 것이다
뭐 테이블의 WAN side addr로 보내면 될 것 같지만... LAN 내에서 요청이 먼저 발생하지 않는 이상 테이블엔 기록되지 않아서 불가능하다
그 래 서 !!!!
우리에겐 포트 포워딩이 필요한 것이다!!
위의 NAT translation table에 미리 테이블을 작성해 놓는 것이 포트 포워딩인 것이다 !!
이 라우터의 특정 포트로 들어오면? LAN내로 전송해주겠다~ 이말인 것이다
다시 공유기 관리 화면으로 이동해서...

고급 설정 -> NAT/라우터 관리 -> 포트포워드 설정으로 가자

여기서 내부 IP 주소는 라즈베리파이의 IP주소로 써 주자
외부 포트는 임의로 설정하고, 내부 포트는 나는 스프링 서버를 사용하기에 8080으로 설정해 두었다
물론 외부에서 라즈베리파이에 접속할 수도 있다
이땐 ssh로 접속해야 하기에 내부 포트를 22으로 해 두자
그 다음 적용!!!

나 같은 경우엔 DB도 라즈베리파이 내에 설치해 두고, 플라스크 서버도 있기에 여러 개를 등록해 두었다
자 이제 외부 IP를 확인해 보자

고급 설정 -> 네트워크 관리 -> 인터넷 설정 정보
여기서 외부 IP 주소를 확인하자
그다음 cmd에서...

나는 포트포워딩에서 ssh를 12000으로 설정해 두었기에 ssh {사용자계정}@{외부 IP} -p 12000 으로 입력하였다

접속 성공 !!
하지만 외부 IP는 주기적으로 바뀐다.. 그리고 기억하기도 힘들다...
이럴 때 사용하는 게 DNS이다
나는 iptime에서 제공해 주는 DDNS를 사용했다.

고급 설정 -> 특수 기능 -> DDNS 설정
사용자 ID엔 내가 사용하는 이메일을 입력하고, 호스트이름엔 내가 사용할 적당한 이름을 지어주자
그리고 DDNS 등록 버튼을 눌러주고, 중복되지 않은 호스트 이름이면 등록이 끝난다 !!
마지막으로 cmd에서 ssh {사용자계정}@{호스트이름}.iptime.org -p 12000를 입력하면 성공!!
자 그럼 내 스프링 서버는 잘 동작할까??
스웨거를 확인해 보자

캬~~~ 잘 동작한다~!~~!
다른 API를 날려봐도 잘 된다 ~~!
'서버' 카테고리의 다른 글
| git hook을 이용하여 개발일지 자동화 고도화하기 (0) | 2026.01.20 |
|---|---|
| Claude code + mcp로 개발일지 작성 자동화하기 (0) | 2026.01.19 |
| nestJS 배포 자동화 (3) | 2025.06.18 |