Etc.

남는 노트북으로 홈 서버 구축하기 (LG 그램, KT)

limcy423 2025. 12. 20. 17:24

0. 계기

집을 정리하다가 전에 쓰던 노트북(LG 그램)을 발견해 서버 비용도 아낄 겸 개발용 서버로 이용하기 위해 홈서버를 구축해보기로 했다.

 

아래와 같은 순서로 홈 서버 구축을 진행할 것이다.

1. Ubuntu 설치
2. 네트워크 설정
3. SSH 설정

 

1. Ubuntu 설치

아예 사용하지 않는 노트북이라 기존 Window OS를 삭제하고 Ubuntu를 설치할 것이다.

 

Ubuntu 서버를 아래의 링크에서 다운받는다.

https://ubuntu.com/download/server

 

Get Ubuntu Server | Download | Ubuntu

Get Ubuntu Server one of three ways; by using Multipass on your desktop, using MAAS to provision machines in your data centre or installing it directly on a server.

ubuntu.com

 

다운로드한 Ubuntu ISO를 부팅 가능한 USB 드라이브를 만들기 위해 refus를 이용했다. refus는 아래의 링크에서 다운받을 수 있다.

https://rufus.ie/downloads/

 

Index of /downloads

 

rufus.ie

 

부팅 가능한 USB 드라이브는 다음과 같이 간단하게 만들 수 있다. USB 드라이브에 있는 데이터는 모두 삭제되니 필요하다면 미리 백업을 해놔야한다.

1) Refus 프로그램을 실행한다.
2) 장치에서 USB 드라이브를 선택한다.
3) 부트 선택에서 디스크 또는 ISO 이미지를 선택하고 다운로드한 Ubuntu ISO 파일을 지정한다.
4) 파티션 구성방식에서 GPT를 선택한다.

 

진행이 완료되면, 컴퓨터를 재부팅하고 BIOS/UEFI 설정으로 진입한다. 나와 같은 경우는 부팅 시에 F2를 연타하는 방식을 통해 진입할 수 있었다. 브랜드마다 방법이 다를 수 있어, 자신의 노트북과 맞는 방식으로 진입하면 된다.

 

USB 드라이브를 첫 번째 부팅 장치로 설정하고 부팅을 진행한다. 그 이후로는 안내되는대로 진행하면 된다. 나는 모두 삭제하고 Ubuntu만 설치할 것이었기 때문에 설치 유형에서 Erase disk and install Ubuntu 옵션을 선택했다.

 

이렇게 진행하고 나면 Ubuntu 설치는 끝난다. 설치 후에 터미널에 다음 명령어를 입력해 시스템을 업데이트한다.

sudo apt update
sudo apt upgrade -y

 

2. 네트워크 설정

우리집은 KT 공유기가 각각의 기기에게 정보를 전달하는 형태로 네트워크가 구성되어 있다. 외부에서 접속 가능한 서버를 구축하기 위해 아래와 같은 순서로 네트워크를 설정할 것이다.

1) 포트포워딩
2) 방화벽 포트 허용
2) DDNS 설정

 

포트포워딩

포트포워딩은 공유기가 자신의 공인 IP의 포트로 들어온 요청을 미리 지정한 특정 내부 사설 IP와 포트로 전달하는 기능이다.

그림에서 볼 수 있듯이 다음과 같이 진행된다.

1) 외부에서 111.111.111.111:2222로 요청
2) 공유기는 사전에 설정된 포트포워딩 규칙을 확인
3) 규칙에 따라 내부 네트워크의 172.30.1.2:22로 요청 전달
4) 내부 장치는 해당 요청을 처리하고 응답

우리는 이를 위해 먼저 포트포워딩 규칙을 설정할 것이다.

 

공유기의 사설 IP(게이트웨이)와 현재 기기의 사설 IP는 아래 명령어로 확인할 수 있다.

공유기 사설 IP: 172.30.1.254 (현재 KT 공유기 사용 중)

현재 기기 사설 IP: 172.30.1.7

ip route

 

 

공유기 설정을 위해 관리자 페이지인 http://172.30.1.254로 접속한다. 아무 생각없이 유선으로 네트워크를 연결하고 계속 접속하려고 시도를 하느라 한참 헤맸다..😰 꼭 wifi로 연결하고 접속하기!

 

초기 아이디와 비밀번호는 아래와 같다. 

ID: ktuser

PW: homehub

 

기기의 IP는 DHCP 임대 시간이 지날 때마다 랜덤 배정되기 때문에 포트포워딩 규칙을 다시 설정해야 한다. 이를 방지하기 위해 기기 IP를 고정해줘야 한다.

 

여러 블로그에서 장치 설정 - LAN 연결 설정에 들어가면 수동 IP 할당을 할 수 있다고 했으나 나는 LAN 연결 설정만 보고이고 수동 IP 할당은 보이지 않았다...😥....

 

조금 더 찾아본 결과 임대 시간 만료 시 DHCP 서버는 같은 장치가 다시 요청하면 동일 IP를 재할당하는 경우가 많다고 한다. 즉, 무조건 임대 시간이 끝난다고 해서 반드시 IP가 변경되는 것이 아니라 같은 장치가 계속 연결되어 있고, IP 풀에 여유가 있다면 동일 IP를 유지할 가능성이 높은 것이다. 

 

그래서 일단은 IP를 고정하지 않고, 추후 기기에서 직접 IP를 고정하는 방식으로 진행할 예정이다. (적용 시 내용 추가 예정이다.)

 

다음으로, 포트포워딩 설정을 위해 장치 설정 - 트래픽 관리 - 포트 포워딩 설정으로 들어간다.

 

외부 포트는 외부에서 접속할 포트, 그리고 내부 포트는 연결할 내부 기기의 포트를 입력한다. 내부 IP 주소는 아까 확인한 기기의 사설 IP를 입력한다.

 

나는 ssh 접속(2222:22), http(80:80), https(443:443)를 위한 포트 포워딩 규칙을 추가했다. SSH 포트 포워딩 시 바로 22로 열어두면 공격 위험이 있어 외부 포트를 2222로 설정했다.

이렇게 일일히 설정하기 귀찮다면 한 번에 모든 포트를 개방하는 DMZ를 사용해도 되지만 보안성이 떨어진다고 한다.

 

방화벽 포트 허용

 

방화벽은 내부 장치가 해당 포트를 통해 외부 요청을 받을 수 있도록 허용하는 역할을 한다.

그렇기 때문에, 외부에서 서비스에 접속하려면 포트포워딩으로 설정한 내부 포트에 대해 방화벽에서 해당 포트를 허용해야 한다. 

아래의 명령어를 통해 적용한다.

sudo ufw allow {내부 포트 번호} # sudo ufw allow 22
sudo ufw enable

 

DDNS 설정

DDNS(Dynamic DNS)는 ISP가 할당하는 IP 주소가 변경될 때, 도메인 이름과 IP 주소를 자동으로 갱신해주는 서비스이다.

일반적인 DNS는 고정 IP에 연결되기 때문에 IP 주소가 변경되면 수동으로 갱신해야 하지만, DDNS는 IP가 변경되면 DDNS 서버에 새 IP를 알려주어 도메인 이름이 항상 최신 IP를 가리키도록 한다.

 

가정용 인터넷은 대부분 유동 IP이기 때문에 IP가 변경될 수 있다. 그렇기 때문에 홈 서버에 DDNS 설정을 해줘야한다.

무료 DDNS 서비스를 제공하는 FreeDNS를 통해 DNS를 발급할 것이다.

 

https://freedns.afraid.org/

 

FreeDNS - Free DNS - Dynamic DNS - Static DNS subdomain and domain hosting

Free DNS Hosting, Dynamic DNS Hosting, Static DNS Hosting, subdomain and domain hosting. Dynamic update demonstration example (v2 interface) [~] $ curl https://sync.afraid.org/u/CyTXMbtq5cPnLjEg5vKHTPDE/ Updated demo.freshdns.com from 107.170.238.X to 50.2

freedns.afraid.org

 

회원 가입 후 subdomain을 추가한다. type은 A, destination은 공유기 IP를 입력하면 된다.

공유기 공인 IP는 아까 접속했던 KT 관리자 페이지 상태정보 - 시스템 정보에서 인터넷 연결정보의 IP주소에서 확인할 수 있다.

 

이렇게 등록을 하고 난 후, 장치 설정 - 부가 기능 - DDNS 설정에 들어가 DDNS를 적용해준다.

DDNS 서버는 방금 등록한 도메인, FreeDNS에 가입한 아이디(이메일 제외)와 비밀번호, URL은 freedns.afraid.org를 입력하면 끝!

 

 

 

3. SSH 설정

구축한 홈 서버에 외부에서 원격으로 접속할 수 있도록 SSH를 설정해야 한다.

먼저 아래와 같은 명령어를 입력해 홈 서버에 SSH 설치를 진행한다.

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

sudo systemctl status ssh # ssh 서비스 상태 확인

sudo systemctl start ssh # ssh 서비스 실행

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

 

다른 기기를 이용하여 비밀번호 인증으로 홈 서버 SSH 접속이 되는지 확인한다. 홈 서버 IP는 공유기 IP나 DNS를 입력하면 된다.

나는 SSH 포트 포워딩에서 외부 포트를 2222로 설정했기 때문에 포트 번호를 지정했다. 22가 기본 값이므로 외부 포트를 22인 경우 이는 생략 가능하다.

ssh -p {포트 번호} {id}@{homeserver-ip} 
# ssh -p 2222 limcy@cylim.mooo.com

 

접속이 잘 되는 것을 확인했다면 기존 비밀번호 인증 방식에서 공개키/개인키 기반 인증 방식으로 변경할 것이다.

원격으로 접속할 기기에서 다음 명령어를 입력하여 공개키와 개인키를 생성한다.

ssh-keygen -t ed25519 -C "{comment}"

 

~/.ssh에 id_ed25519.pub(공개키), id_ed25519(개인키)가 생성된 것을 확인할 수 있다.

 

이제 발급된 공개키를 홈 서버의 ~/.ssh 있는 authorized_keys 파일에 추가한다.

cat ~/.ssh/id_ed25519.pub | ssh -p {포트 번호} {id}@{homeserver-ip} 'cat >> ~/.ssh/authorized_keys'
# cat ~/.ssh/id_ed25519.pub | ssh -p 2222 limcy@cylim.mooo.com 'cat >> ~/.ssh/authorized_keys'

 

이렇게 하면 키 기반 인증 방식으로 홈 서버에 접속이 가능하다.

ssh -i ~/.ssh/id_ed25519 -p {포트 번호} {id}@{homeserver-ip}
# ssh -i ~/.ssh/id_ed25519 -p 2222 limcy@cylim.mooo.com

 

이제 보안을 위해 비밀번호 인증 방식으로 홈 서버 접속을 허용하지 않도록 설정을 변경한다.

sudo vi /etc/ssh/sshd_config

 

sshd_config에 아래와 같이 추가하고 ssh 서비스를 재시작한다.

# /etc/ssh/sshd_config

PasswordAuthentication no # 비밀번호 인증 비활성화
PermitRootLogin no # root 로그인 비활성화
PubkeyAuthentication yes # 키 기반 인증 활성화

 

sudo systemctl restart sshd

 

이렇게 하면 홈 서버 구축이 끝난다. 이제 원하는 개발 환경을 세팅해서 이용하면 된다! 🥹

 

 

참고 링크

 

https://clsrn4561.tistory.com/25

 

고물 노트북으로 홈서버 만들기 - 1. 어쩌다 눈에 띈 노트북

0. 왜 이런 짓을최근에 여행을 자주 다녔는데 여행과 여행 사이에 일정이 애매하여 시간이 붕 떠버린 적이 있었다.게다가 본가가 이사를 한다고 하여 짐도 정리하고 버릴것이 많을 것 같아 도와

clsrn4561.tistory.com

https://son1004007.tistory.com/55

 

윈도우에서 우분투 설치 준비 방법부터 윈도우 삭제 및 우분투 설치까지

Windows를 완전히 삭제하고 Ubuntu만 설치합니다. 이 과정에서는 Windows를 제거하고 전체 디스크를 Ubuntu 설치에 사용할 것입니다. ### 1. 준비 작업 #### 1.1. 데이터 백업 모든 중요한 데이터를 외

son1004007.tistory.com

https://truthfinder.tistory.com/220

 

안쓰는 노트북으로 홈서버 구축하기

놀고있는 노트북을 서버로 만들면 AWS처럼 평생 나를 위한 개인 서버를 구축할수 있다.AWS에서 서버를 사용한 적이 있는 사람은 알겠지만 한달에 6만~8만정도 드는 금액이 부담스러울수 밖에 없다

truthfinder.tistory.com

https://monand0603.tistory.com/34

 

수동ip, 포트포워딩 설정 하는법 (kt 공유기 기준)

마인크래프트 서버를 열거나 다른 게임의 호스트가 되려면 포트 포워딩이 필요한 경우가 많습니다. 이 글에서는 대부분의 공유기에 해당되는 포트포워딩을 하는 방법에 대한 글입니다. 공유기

monand0603.tistory.com

https://ratatou2.tistory.com/264

 

FreeDNS로 무료 DNS 발급 받기 (feat. Afraid.org vs DuckDNS.org)

DuckDNS 파업 선언..!?DuckDNS가 며칠? 아니 25년 8월 31일부터 2주 내내 이모양 이꼴이다...진짜 일 안하지?https://github.com/home-assistant/addons/issues/4144 DuckDNS error 404 since 31/08/2025 and 12/09/2025 · Issue #4144 · hom

ratatou2.tistory.com

https://hyeon9mak.github.io/home-server-ssh-setting/

 

홈 서버 구축기 - OS 설치부터 SSH 연결 설정까지

💾 홈 서버 구축 결심

hyeon9mak.github.io

 

'Etc.' 카테고리의 다른 글

우아한테크코스 8기 오픈미션 회고  (0) 2025.11.23