미니 PC로 홈서버 구축 도전해보자

오늘처음해요·2024년 12월 16일
0
post-thumbnail

CS 스터디분들과 대화를 나누다가 서버 비용에 대한 얘기가 나왔습니다.
AWS에서 프리티어로 서버를 돌리기엔 솔직히 사양적으로 아쉬운 맘이 큽니다.
그래서 라즈베리파이로 홈서버를 구축해보는 건 어떨까 의견이 나와서 제가 직접 도전해봤습니다

라즈베리파이5 VS n100

라즈베리파이5가 전작대비 2~3배 성능이 좋아졌다고 합니다.
하지만 공식 케이스를 사더라도 외관이 썩 좋게 보이지는 않는 것 같습니다.

그래서 요즘은 n100 cpu를 탑재한 미니PC를 활용해서 홈 서버를 구축하는 추세인 것 같습니다.
다만 미니PC의 경우 백도어 이슈가 있다는 얘기가 많아서
No Ram, No Storage를 산다음 규격에 맞는 SSD와 RAM을 따로 사서 달아주는 게 좋아보입니다.
저는 삼성 SSD, RAM이 달려있는 Chatreey t9를 중고로 구매하였습니다.

n100 미니PC의 경우 제조사 별로 모델이 다양한데 제가 조사한 바로는 Chatreey t9 / beelink 제품이 평이 좋았던 것 같습니다.

또한 중고로 처리할 때도 라즈베리파이보다는 미니PC가 가격방어도 잘되고, 잘팔리지 않을까 라는 기대도 해봅니다.

n100 vs 프리티어

AWS t3.micro vs Intel N100 하드웨어 스펙 비교

싸게 구매하면 10만원 중반대로 구할 수 있는데, 이정도면 몇 개월이면 본전을 뽑을 것 같습니다.


본격적인 세팅 시작

우선 리눅스를 설치해야겠죠!
우분투 서버 이미지 파일을 다운 받아봅시다.
링크

이후 rufus를 다운 받아서 USB를 리눅스 설치용 USB로 만들어주면 됩니다!

링크

부팅 선택 - 선택을 누른 다음 다운받은 이미지 파일을 선택하고 밑의 준비, 시작 버튼을 누르면 됩니다.

완성된 USB를 미니 PC USB 포트에 꽂고, 부팅을 한 뒤 바이오스 설정 모드에 들어가면 됩니다.
(보통 부팅 한 뒤 del이나 f10을 계속 누르면 접근이 되는 거 같습니다.)

boot 설정 메뉴에서 우선 부팅을 usb로 변경해주면 되는데 아마 각자의 환경마다 방법이 다를거라 및의 링크를 보고 설정하는 것을 추천합니다.

참고 링크
참고 링크2


메인 PC와 SSH 연결하기

모니터에 미니 PC, 메인 PC 두 개의 HDMI 선을 연결하는 건 비효율적이겠죠!
이럴 때 SSH 연결을 많이 사용합니다.

# 미니 PC 리눅스 환경

# 패키지 업데이트
sudo apt update

# openssh-server 설치
sudo apt install openssh-server

# SSH 서비스 시작
sudo systemctl start ssh

# 시스템 부팅 시 자동 시작 설정
sudo systemctl enable ssh

# ssh 방화벽 허용
sudo ufw allow ssh
# 메인 PC

# 기본 RSA 키 생성
ssh-keygen -t rsa -b 4096

Enter file in which to save the key (/home/사용자/.ssh/id_rsa): 엔터 누르기
Enter passphrase (empty for no passphrase): 엔터 누르기
Enter same passphrase again: 엔터 누르기

# 키가 저장되었는 지 확인 [id_rsa (비공개 키) / id_rsa.pub (공개 키)]
ls -la ~/.ssh/

# ssh-copy-id로 공개키 복사
# 사용자 이름은 우분투 설치 시 설정한 이름 작성
# 원격서버주소는 아래 참고
ssh-copy-id 사용자이름@원격서버주소

# 연결 테스트
ssh 사용자이름@원격서버주소

# 키 저장되어 있는지 확인
cat ~/.ssh/authorized_keys

# 미니피씨 ssh config 설정 후 :wq로 저장
vim /etc/ssh/sshd_config

PermitRootLogin no          # root 로그인 비활성화
PasswordAuthentication no    # 비밀번호 인증 비활성화
PubkeyAuthentication yes    # 키 기반 인증 활성화
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

# ssh 재시작
sudo systemctl restart ssh

# 메인 피씨로 돌아오기
exit

# 메인 피씨 config 설정 및 :wq로 저장
vim ~/.ssh/config

# 같은 와이파이를 공유하고 있는 경우
Host [서버 이름]
        HostName [원격서버 ip]
        User [미니피씨 우분투 사용자 이름]
        Port 22
        IdentityFile ~/.ssh/id_rsa

# 외부에서 접근하는 경우
Host [서버 이름 + external(원하는 거 아무거나 써도 됨)]
        HostName [공유기의 공인 IP]
        User [미니피씨 우분투 사용자 이름]
        Port [포트 포워딩 포트 번호]
        IdentityFile ~/.ssh/id_rsa
        
# 이후 ssh 접근 시 config에 적힌 서버 이름 활용하면 됨
ssh [서버 이름]
# 미니 피씨
# 원격 서버 주소 알아내는 방법
# 박스 쳐져있는 부분이 원격서버ip입니다

ip addr show


포트 포워딩

외부에서 접근하려면 포트 포워딩을 해야 합니다.
저는 KT라 KT 기준에서 설명드릴게요

KT 홈서버 링크
ID: ktuser
PW: homehub

공유기의 IP주소

맨 처음 보이는 화면에서의 IP주소가 공인IP입니다.

장치 설정 - 트래픽 관리

외부 포트 - 외부에서 접근할 때 쓸 포트 번호 (저는 2222~2222 적었습니다)
내부 IP 주소 - 미니 피씨의 내부 IP 적으면 됩니다.
내부 포트 - ssh 연결은 보통 22포트 씁니다.

이제 공인 IP로 접근해도 접속이 가능해집니다!

ssh [서버 이름 + external]

접근 성공


DDNS 설정

DNS는 많이 들어봤어도 DDNS를 처음 접하는 사람들도 있을 겁니다
AWS 같은 클라우드를 이용하면 IP가 변동되지 않지만,
홈 서버의 경우 변동될 수 있기 때문에 Dynamic DNS 설정이 필요합니다

다양한 서비스가 존재하지만 no-ip로 설정하는 방법을 공유하겠습니다.

no-ip 설정

no-ip 주소

회원 가입하고 Dashboard - Hostname used - Create Hostname을 클릭하면 됩니다.
(KT DDNS 설정을 할 때 비밀번호에 특수문자가 기입안된다는 얘기가 있어서 저는 특수문자를 빼고 회원가입 했습니다)

Hostname - 아무거나
Domain - 아무거나
IPv4 Address - 내 공유기의 공인 IP

이렇게 본인의 Hostname이랑 IP가 잘 할당되었으면 됩니다

KT DDNS 설정

부가 기능에 가서 DDNS 설정을 활성화 하고 적용을 누르면 됩니다!

DDNS 서버 - noip-com
사용자 ID - noip 사이트 아이디
비밀번호 - noip 사이트 비밀번호(특수문자 기입이 안된다는 얘기가 있음)
URL - noip 발급받은 URL (Hostname에 적힌 사이트 이름+도메인 주소)

서버 no-ip client 설정

이제 미니 피씨로 돌아가서 no-ip client를 설치해야 하는데

정리가 엄청 잘된 링크가 있어서 그대로 따라하기만 하면 됩니다

링크

메인 피씨 SSH config 수정

아까 포트포워딩 이후 external로 접근했었는데 이제 DDNS 도메인을 통해서 접근이 가능해졌습니다

# 메인 피씨
vim ~/.ssh/config

Host today-is-first-ddns
        HostName [no-ip에서 발급받은 URL]
        User [미니 피씨 리눅스 사용자 이름]
        Port [포트 포워딩한 외부 포트]
        IdentityFile ~/.ssh/id_rsa

이제 DDNS도 적용된 것을 확인할 수 있을 것이다!

도메인이 맘에 안든다면?

가비아로 내가 원하는 도메인 적용하기

가비아 링크

이렇게 내가 원하는 도메인을 가비아에서 살 수 있다!
1년에 500원인 도메인도 있으니 원하는 게 있다면 사자!


서비스 관리를 누르면 내가 구매한 도메인이 나온다

구매한 도메인의 관리 버튼을 누르자


우측 하단에 DNS 레코드 설정 - 설정을 누르자


원하는 도메인의 설정을 누르자

방금 구매한 도메인은 DNS 정보는 비어있는 게 정상이다


레코드 수정을 누르자


레코드 추가를 누르자

타입 : CNAME
호스트 : www
값/위치 : no-ip에서 발급받은 DDNS 주소 (반드시 마지막에 .을 삽입해야함!!!)


테스트를 해보자

# 메인 피시
# HostName을 가비아에서 구매한 도메인으로 바꾸면 된다.
vim ~/.ssh/config

Host today-is-first-gabia
        HostName [가비아에서 구매한 도메인 ex) www.todayisfirst.com]
        User [사용자 이름]
        Port [포트 포워딩한 외부 포트]
        IdentityFile ~/.ssh/id_rsa

성공!


완성~!

작고 귀여운 나만의 홈서버가 완성되었다

전력도 적게 먹고 소리도 조용해서 맘에 든다!

3개의 댓글

comment-user-thumbnail
2025년 1월 19일

t9 홈 서버로 돌리기엔 소음이 어떤가요? docker 올리고 이것 저것 가지고 놀아보려고 하네요.

1개의 답글