본문 바로가기
  • 문헌정보학도가 개발도 한다구요??
우당탕탕 개발일기/중고 노트북 서버로 써 보기

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

by 개발하는사서 2024. 12. 24.

0. 왜 이런 짓을

최근에 여행을 자주 다녔는데 여행과 여행 사이에 일정이 애매하여 시간이 붕 떠버린 적이 있었다.

게다가 본가가 이사를 한다고 하여 짐도 정리하고 버릴것이 많을 것 같아 도와주기 위해 본가에서 잠시 머물렀다.

그렇게 집을 정리하던 중, 골방 창고에서 낯익은 노트북을 하나 찾게 되었다. 

나만의 명기 에이서 아스파이어 V3-371-5553

대학생 때 줄기차게 썼던 노트북이다. 스펙은 현재 나온 제품들에 비하면 현저히 떨어지지만 그래도 사무용으로는 아직 쓸만한 정도의 제품이다. 하지만 그렇게 쓰기엔 눈에 안 차는 상황이라, 오래 전 부터 생각해온 일을 하나 해보기로 했다.

서버나 한 대 만들어 보자!!!

작업의 순서는 아래와 같다.

  1. 윈도우 OS 삭제 및 포맷
  2. 리눅스 설치
  3. 네트워크 세팅
  4. 개발 환경 세팅

1. 윈도우 OS 삭제 및 포맷

다른 분들을 보면 자신의 개인 PC에 파티션을 나눠 리눅스를 설치를 하던가, 아니면 가상머신을 설치하여 그곳에 리눅스를 심는 경우가 많았다. 하지만 나는 노트북의 모든 자원이 오로지 서버 운영을 위해 사용되길 원하기 때문에 윈도우OS를 완전 삭제 하는 방법을 선택했다. 

윈도우OS를 완전 삭제 하기 위해선 부팅 USB가 필요하다. 그래서 리눅스 OS 중 어떤것을 설치할 것인지 미리 생각해둬야 한다. 

아래는 각 OS 별 장단점을 정리한 표이다.

2. 리눅스 설치




정리하자면 :

1. 초보자: Ubuntu Server, AlmaLinux

2. 엔터프라이즈 환경: RHEL, Oracle Linux

3. 최신 기술 실험: Fedora Server, Arch Linux, Tumbleweed

4. 안정성과 장기 운영: Debian, CentOS/AlmaLinux/RockyLinux

 

나는 업무시 Window Server를 주로 사용했기 때문에, 리눅스에 대한 숙련도가 낮은 상태다. 하여 유저가 많아 커뮤니티가 활성화 되어있고, 장기적인 지원이 가능한 Ubuntu Server를 설치하기로 했다. Ubuntu에 비교해 Ubuntu Server의 장점은 기본적으로 설치 되는 패키지가 필수적인 요소만 있어 가볍다. (우분투는 최소 사양이 램 4GB인것에 반해 우분투 서버는 고작 1GB다!), 게다가 GUI가 없어, 개발자의 낭만을 제대로 자극한다.(까만 화면에 떠오르는 여러 텍스트 아트들...)

우분투 서버는 아래 링크에서 받으면 된다.

https://ubuntu.com/download/server

 

https://ubuntu.com/download/server

 

ubuntu.com

링크에 가보면 LTS 버전이 있고, 아닌 버전이 있을 것이다. LTS(Long Term Support)는 해당 버전을 장기적으로 지원한다는 의미로, 안정적인 운영이 목표인 서버OS에 이상적인 방식이다. 새로운 모험을 좋아하는 분들은 아래에 최신버전도 있으니 참고 바란다.

리눅스 설치는 아래 링크 및 여러 곳에서 검색하여 참고 했다.

https://son1004007.tistory.com/55

 

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

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

son1004007.tistory.com

설치가 제대로 된 것을 보니. 기쁜 마음이 든다. 이제 다음 단계로 넘어갈 수 있다.

 

3. 네트워크 세팅

본가에서는 모든 기기가 공유기를 통해 정보를 전달받는 구조이다. 그렇기 때문에 외부에서 서버로의 요청이 들어오면 공유기는 이를 받아 서버에 잘 전달 할 수 있도록 설정해야 한다. 여기서는 포트포워딩을 통해 특정 포트로 접근해오는 요청은 서버로 보내도록 설정했다.

포트포워딩은 외부 네트워크에서 특정 포트로 들어오는 요청을 내부 네트워크의 지정된 장치와 포트로 전달하는 기술이다.

일단 외부 인터넷과 연결된 부분은 공유기이기 때문에, 외부에서 서버에 접근하기 위해서 공유기의 IP로 요청을 보내는 수 밖에 없다. 그렇기 때문에 공유기와 내부 기기는 특정 약속을 통해 (포트포워드) 특정 포트의 요청이 들어오면 무조건 특정 내부 기기로 요청을 전달해주는 방법을 사용하게 된다.

해당 내용을 아래 그림으로 그려보았다.

이거 외에도 모든 포트를 개방하는 DMZ라던가 여러가지 방법이 있지만... 아무래도 보안상 꺼림칙하니 필요한 포트만 열어놓는것을 권장한다. (DMZ는 대문을 활짝 열어두고 도둑이 오지말라고 하는것과 비슷하다)

하는 방법도 공유기 설정 페이지에서 하면 되지만, 제조사 마다 화면이 조금씩 다르므로 각자 참고하길 바란다. 우리집은 KT 공유기를 쓰는 관계로 아래 링크를 참고 하였다.

https://monand0603.tistory.com/34

 

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

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

monand0603.tistory.com

설정 후 curl이나 ping명령어를 던져 연결이 잘 되는지 확인해보자.

 

4. 개발환경 세팅

이제 이 서버에 내가 개발한 것들을 올릴 수 있게 만들어야 한다. 먼저 이 서버에 원격으로 접근 할 수 있도록 SSH를 열어두어야 한다.

먼저 서버에 다음과 같은 명령어를 차례대로 입력한다.

1. ssh 설치 
  • sudo apt update
  • sudo apt install openssh-server
2. ssh 서비스 상태 확인
  • sudo systemctl status ssh
3. ssh 서비스 기동
  • sudo systemctl start ssh
4. 부팅 시 서비스 자동 시작 설정
  • sudo systemctl enable ssh
5. ssh 설정 변경 하기 (옵션)
    • cd /etc/ssh
      sudo nano sshd_config
      해당 파일 설정 Port라고 적힌 부분이 있다. 그곳에 자신이 원하는 포트를 적으면 앞으로 ssh 접속 해당 포트로 접속하여야 한다.
      PermitRootLogin 설정은 root 계정으로 접속을 허용하는 설정이다. no 입력하면 root계정으로 원격접속이 불가능하다.
      AllowUsers {사용자 계정} 설정은 입력한 계정으로만 ssh 접속이 허용된다.
      설정이 끝났다면, sudo systemctl restart ssh 통해 반드시 서비스 재시작을 줘야 한다.
6. 방화벽에서 포트 허용 하기
  • sudo ufw allow {ssh 포트번호} (기본값은 22임)
  • sudo ufw enable
7. 연결 테스트
  • ssh {사용자계정}@{서버IP} 
  • 만약 포트를 22가 아닌 다른 것으로 설정했다면 -> ssh -p {포트번호} {사용자계정}@{서버IP}

세팅을 다 하고 테스트를 해본다.

정상적으로 다른 컴퓨터에서 접속이 되는것을 확인했다.

※ 추가로 서버가 종료되었을때, 랜선이 연결되어 있으면 원격으로 전원을 켤 수 있는 WOL 기능도 추가했다. 원한다면 추가하는것도 나쁘지 않을 것 같다.

댓글