본문 바로가기
DevOps

AWS 대신 맥미니

by 인용 2024. 2. 8.

 

맥미니를 홈서버로 추천

프로젝트를 시작하면서 AWS를 사용하려했지만, 매달 나가는 비용이 만만치 않을 것으로 생각했습니다. 그래서 직접 서버를 구축해보자 라는 생각으로 시작하게 되었습니다. 라즈베리파이, 현재 사용하고있는 window 본체 등등 많은것을 생각해 보았지만 전력, 소음, 외관, 관리, 활용성을 생각하여 맥미니를 고르게 되었습니다.

맥미니 설치

 

새 제품으로 맥미니를 사게 된다면 돈이 많이 들테지만, 저는 당근을 이용했습니다. 맥을 판매하시는 분들 중에 적응을 못해 적게 사용하고 판매하시는 분들이 많기 때문입니다. 덕분에 M1 / 256GB / 16GB / 에플케어 25년 11월까지 제품을 65만원에 구매했습니다. (M1, M2 큰차이 없다는 의견을 듣고 M1으로 구매하고 16GB를 선택했습니다. 전력도 M1이 10W정도 낮습니다.) 

우분투 설치를 하지 않아도 되고, 소음이 없으며, 외관도 아주 만족스러워서 맥미니로 홈서버, 서버등 구축하는 것을 추천 할 것 같습니다.

(구매하고 1년 반을 사용중인데 아주 만족스럽고 좋습니다..!)

 

공유기 설정 

저는 SKT 인터넷을 사용하고있고, skt에서 제공해주는 모뎀, 공유기를 사용하였습니다.

(공유기 관리창 접속은 다 다르니 생략 하겠습니다.)


인터넷 --- (WAN) --- [공유기1 / 모뎀 (브릿지 모드)] --- (LAN) --- [공유기2 (포트 포워딩)] --- (LAN) --- [홈서버]
참고글 (B에 해당)

 

또 공인IP를 얻기위해서는 브릿지모드가 필요하고, 브릿지모드로 변경하면 외부에서 접속 하는 IP가 변경되는 것을 확인 할 수 있습니다.


공인 IP란 실제 다른 컴퓨터와 통신할 때 쓰는 IP 주소로, 지역별로 쓸 수 있는 IP 주소의 범위가 있으며 자신이 특정한 아이피 주소를 쓰고 싶다고 마음대로 쓸 수 있는 것이 아니고, 아이피 주소를 관리하는 기관에 사용권을 요청하여 할당을 받아야지 사용할 수 있다고 하는데 SKT 모뎀기준으로 검색을 해보았는데, 브릿지 모드로 변경하면 자동으로 하나까지 할당 된다고 합니다.

 

 

💡 브릿지 모드란?

공유기의 NAT·DHCP 기능을 끄고, 뒤쪽 장비가 ISP로부터 직접 공인 IP를 받게 하는 방식입니다. 이 경우 홈서버 또는 뒤쪽 공유기가 직접 인터넷과 연결되므로, 포트포워딩이나 방화벽 설정을 해야 합니다.

 

📌 공인 IP란?

인터넷에서 다른 컴퓨터와 직접 통신할 때 쓰는 전 세계적으로 유일한 IP 주소입니다. ISP에서 회선 가입자에게 자동으로 할당하며, 가정용은 보통 1개가 부여됩니다. 브릿지 모드일 경우, 뒤 장비가 이 공인 IP를 직접 받게 됩니다.

운용모드 NAT / 연결방식 DHCP

 

공유기에서 관리자 모드로 들어가게 되면 아래와 같이 확인 가능한데 WAN의 IP가 외부 IP, LAN은 내부(해당 공유기) IP 으로 생각하면 됩니다. 외부에서 접속하거나 연결을 시도할때 WAN의 IP를 통해 접속하면 됩니다.

 

맥미니 원격 접속 설정

그리고 포트 포워딩을 하기 위해서는 맥미니의 내부 IP를 알아야 합니다. 우선 저는 맥미니와 공유기간 무선으로 연결을 하였고

시스템설정 > 일반 > 공유 > 원격로그인

 

해당 설정창에서 현재 맥미니의 내부 IP를 확인할 수 있습니다. ssh macmini@(내부아이피) 를 입력하면 같은 내부 에서는 터미널로 ssh 접속이 가능합니다. 원격로그인 설정창에서, 원격로그인과 디스크 접근 허용을 설정 시킵니다. 해당 설정을 키는 이유는 AWS EC2 접속처럼 맥미니 내부로 접속 가능하게 만들기 위해서 입니다.

 

수동 설정을 해도 내부 ip가 고정이 안되는 현상이 있었는데, 모든 항목을 값에 맞게 올바르게 넣으면 ip가 고정됩니다.

 

맥미니를 유지하기 위한 설정 입니다. 필요에 맞게 설정 하시면 됩니다.

 

 

포트포워드

그리고 포트포워드를 설정해 주겠습니다. 요청한 포트로 내부 포트에 이어주는 역할인 것인데, 내부IP는 원격설정에서 알아낸 맥미니의 IP 주소를 입력하고 외부포트 내부포트는 사용하고자 하는 포트로 동일하게 설정해 주면 됩니다.

 

마지막으로 ssh 접속을 하게되면 기본 22을 보안적으로 바꾸는게 좋다고 생각하여 변경하였습니다. (참고글)

그래서 ssh 접속 포트도 22번에서 다른 포트로 변경하면서 추가적으로 포트포워드를 설정해주었습니다.

 

SSH 포트 변경

/etc/services 파일 수정

아래 명령어로 22 포트로 변경하고자 하는 포트를 수정합니다.

sudo vi /etc/services

 

22/udp -> xxxxx/udp

22/tcp -> xxxxx/tcp

 

SSH 설정 변경

sudo vi /etc/ssh/sshd_config

 

주석처리되어있는 22포트를 변경하고자 하는 포트로 변경시켜 줍니다. (Port 22 -> Port xxxxx)

 

 

SSH 재시작

sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd

 

그리고 해당 명령어로 재실행을 시켜주면, 22포트는 더 이상 접속 할 수 없게됩니다.

원격 접속은 여기까지 설정해 주면 가능하고 설정한 포트로만 접속 가능하게 됩니다.


추가로 Key를 통한 로그인은 아래처럼 설정 해주시면 됩니다. (생략가능)
KbdInteractiveAuthentication를 설정 해주시지 않으면 비번과 키가 둘다 사용 가능하게 됩니다.

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no

 

키 생성 법

 

클라이언트에서 키 생성 (sercret_key 또는 원하는 파일 이름 생성)

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/secret_key -C "shared-key"


맥미니 접속 후 생성된 키 내용과 동일하게

authorized_keys 이름으로 생성 (sshd_config에서 기본 설정으로 해당 파일 이름을 사용하게 되어 있음)

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

 

 

 

Nginx 설치

그리고 서버를 돌리기 위해서 원하는 포트로 통신을 위해 homebrew로 nginx를 설치하였고 경로는 /opt/homebrew/etc/nginx 이며 맥은 우분투와 설치경로가 다르니 확인이 필요합니다. 그리고 테스트 하기위해 WAN IP와 사용하고자 하는 서버 포트를 설정하여 설정합니다. 참고글

 

서버를 돌리고 외부 인터넷인 휴대폰으로 브라우저에 WAN IP주소로 해당 포트를 입력하면 통해 접속 가능합니다.


https 설정 하시려면 443 설정을 추가하고, 무료 인증서를 받을때는 nginx를 멈추시고 받으면 됩니다!


AWS EC2로만 서버를 배포를 했었는데, 직접 연결을 설정해 보면서 막연한 개념을 실체화 해서 본 느낌이고 서버비를 아낄 수 있는 것에 기분이 많이 좋았습니다. 거의 완성된 맥미니로 설정한 것이라 편의성에서는 아주 좋았고, 앞으로는 도메인을 연결하고 프로젝트를 띄울 수 있게 하려 합니다.

 

 

참고

https://sulmasulma.github.io/etc/2022/11/06/macmini-setting.html

http://www.codns.com/b/B05-231

https://kibbomi.tistory.com/219

 

 

728x90