서버 비용 걱정 없는 홈 서버 구축

서버 비용 걱정 없는 홈 서버 구축

시범적인 서비스를 만들기 위해 테스트하고 운영 연습을 하고 싶지만 서버 비용이 걱정 된다.
이 때 활용 가능한 서버 비용 걱정 없는 홈 서버 구축 방법을 정리 하여 보았다.

서버 비용 걱정 없는 홈 서버 구축 하기 위해 다음과 같은 과정으로 진행한다.

  1. 도메인 확보
  2. 서버 설치
  3. Docker 설치
  4. Container 설치
  5. Nginx Proxy Manager

  1. 도메인 확보

도메인은 인터넷 상에서 서버들은 IP라는 숫자형 주소를 통하여 연결 한다.
192.168.0.22 이런 형식의 서버 주소는 가독성이 떨어져 전달력이 떨어진다.
따라서 자연어 형태의 blog.eomeo.net 이런 형식의 주소로 통용하는데 이러한 주소형식을
Domain Name System 즉 DNS라고 한다. 줄여서 도메인명이라고 부른다.

이러한 도메인명을 확보하기 위해서는 도메인 등록 업체에서 도메인을 구입하여
설정 및 관리 할 수 있다.

제가 자주 활용하는 도메인 등록 업체는 가비아라는 회사이다.

가비아에서 도메인명으로 확보하고 싶은 이름을 검색한다.
아래 화면은 편의상 blog.eomeo.net 이라는 이름으로 검색한 화면이다.

도메인 등록 업체 가비아
도메인 등록 업체 가비아

검색하여 현재 사용 중이지 않는다면  ‘신청하기’ 를 통하여 구입한다.
구입하는 과정은 일반 쇼핑몰에서 결제하는 프로세스와 유사하다.



 

구입이 완료되면 아래 화면의 ‘DNS관리툴’이라는 버튼을 통하여 DNS 설정 및 관리를 할 수 있다.

DNS설정 관리
DNS설정 관리

아래 화면은 기 확보 되어있는 도메인 목록이 나온다.

Sub 도메인 설정
Sub 도메인 설정

위 화면에서 Sub도메인을 추가하고자 하는 도메인과 같은 줄의 우측 끝 ‘설정’ 버튼을 눌러 Sub 도메인을 추가 할 수 있는 화면으로 이동 된다.

아래 화면은 현재 설정 되어 있는 Sub 도메인 목록이 출력 된다.
맨 아래 ‘레코드 추가’버튼을 통하여 원하는 Sub 도메인을 설정 화면으로 이동한다.

 

Sub 도메인 추가
Sub 도메인 추가

아래는 Sub 도메인 설정 화면이다.
아래 화면에서는 Sub 도메인을 apache로 하였고 IP 주소라고 적혀 있는 Text field에는 IP 주소를 설정 하면 된다.
설정이 완료 되면 해당 줄의 ‘확인’ 버튼 과 맨 아래 우측의 ‘저장’ 버튼을 눌러 설정을 완료하자.

Sub 도메인 추가 완료
Sub 도메인 추가 완료

확보 된 도메인에 서버로 연결 할 수 있는 IP값이 연결 설정이 완료 되었다.

이를 확인 하기 위해서는
윈도우즈나 리눅스에서 nslookup 이라는 커맨드를 사용한다.

nslookup 확인
nslookup 확인

 

위 화면 같이 확보한 도메인명을 조회하면 설정 된 IP를 확인 할 수 있다.


2. 서버 설치

도메인에서 설정 된 서버IP로 연결 하는 부분에 대해서 다루었다.
이제 서버를 설치하여 도메인명을 브라우저에 기입하면 IP로 변환되어
서버로 접근할 것이고 서버로 접근 해 들어오는 패킷을
서버의 웹서버나 기타 서비스가 처리하는 형태이다.

이를 위해 물리적인 서버의 설치가 필요하다.
보통 이러한 서버에 적합한 OS로 Linux를 사용한다.
Linux에도 여러 종류가 있으며 이 중 Ubuntu 20.04 버전을 사용하고 한다.

서버를 설치하기 위해서는 물리적인 서버가 필요하다.
사용하던 PC가 될 수 도 있고 간단한 미니PC가 될 수 도 있다.
참고로 필자의 현재 블로그는 기존 사용하던 PC에 Ubuntu 를 설치 하여 사용 중이다.

이렇게 물리 서버가 확보되면  Ubuntu ISO 파일이 기록된  USB 부팅 디스크로
부팅과 동시에 설치 할 수 있다.

이를 처리하기 위해 순서를 요약하면 다음과 같다.
1) ISO파일을 download 받아 저장한다.
2) 다운로드 받은 ISO 파일을 USB에 기록한다.
3) 설치한다.

다운로드하기 위해 다음 사이트에 접속하여 표시 된 ISO 파일을 다운로드 한다.

Ubuntu 20.04 다운로드
Ubuntu 20.04 다운로드

ISO파일을 USB에 기록 하기 위해서 8G이상 USB를 확보한다.
확보된 USB에 Rufs 라는 도구를 이용하여 ISO파일을 USB에 기록한다.
Rufus 라는 도구를 다운로드 받기 위해서는 다음 사이트에 접속 한다.

Rufus 다운로드 및 설치를  통하여 실행 할 수 있다. 실행 화면은 다음과 같다.

Rufus 실행
Rufus 실행

오른쪽 중간 영역의 위치를 클릭하면 다운로드 ISO파일을 선택 할 수 있다.
선택이 완료 되면 아래  ‘시작’을 눌러 USB 부팅 디스크를 만들 수 있다.

이제 USB를 확보 된 물리 서버에 삽입하고 부팅 하여 Linux를 설치 할 수 있다.
설치하는 방법이 있는 영상을 공유한다. 다음 영상을 통하여 설치 할 수 있다.

3. Docker 설치

Docker 설치는 물리 서버 하나에 여러 개의 서비스를 올릴 수 있는 기반이다.
쉬운 비유로 아파트를 생각 할 수 있다. 아파트는 여러 개의 독립적인 세대들을 여러 개 운영할 수 있다.
여기서 아파트는 Docker 기반과 같고, 독립적인 세대들은 Container 와 같다.
Container 개념을 통하여 물리 서버 Linux 위에 여러 개의 서비스를 운영 할 수 있다.
조금 더 나아가 하나의 서비스를 위해
독립적인 세대 하나가 아닌 3~4개의 독립 서비스의 묶음으로 하나의 서비스를 구성할 수 있는데
이러한 여러 개의 서비스를 묶어 하나의 서비스로 설정하기 편하게 해주는 도구가 있다.
바로 Docker-compose 이다.

Docker 및 Docker-compose  설치에 대해서는 이전에 작성 한 글을 참조하여 설치 할 수 있다.

 

3. Container 설치
Docker 설치가 완료되면  간단한 서비스 몇 개를 설치하여 테스트 할 수 있다.

여기서 설치 할 Container(서비스)는 웹서버와 Nginx Proxy Manager이다.
웹 서버는 apache와 같은 유명한 웹서비스로 서비스 테스트를 위해 설치한다.
Nginx Proxy Manager는 하나의 물리적인 서버에서 여러 개의 도메인 서비스를 운영 하기 위한 중요한 도구이다.
이를 설치하여 간단한 설정 방법을 알아보고자 한다.

설치하는 방법은 대부분 간단하다.
아파치 웹 서비스를  설치하는 방법은 다음과 같다.
Nginx Proxy Manager 서비스를 설치 하는 방법은 다음과 같다.

Docker 기반에서 웹서비스와 Nginx Proxy Manager 서비스가 잘 실행 되고 있는지 확인 한다.
확인 하는 방법은 다음과 같다.

Nginx Proxy Manager 실행 확인
Nginx Proxy Manager 실행 확인

 

4. Nginx Proxy Manager 설정

Nginx Proxy Manager 설정은 web.blog.eomeo.net 과 mail.blog.eomeo.net  도메인들 모두 하나의 IP로 설정 가능하다.
여기 설정 된 하나의 IP로 연결 되면 Nginx Proxy Manger가 패킷을 수신 받아서
web.blog.eomeo.net은 A 서비스로 mail.blog.eomeo.net 도메인은 B 서비스로 구분하여 연결 할 수 있다.

위 설정처럼 하나의 IP 즉 물리 서버에서 Docker기반을 통하여 여러 서비스가 있다  가정하자.

하나의 IP 는 iptime 뒷 단에 설정 될 수 있다.
즉, iptime WAN포트에 공공IP가 물려 있고 iptime LAN포트로 연결 된 하나의 IP 192.168.0.39에 서버가 동작한다면
iptime에서 포트포워딩 기능을 이용하여 공공IP로 접근하는 80, 443 포트 접속은 192.168.0.39으로 리다이렉션 시키는 설정이 필요하다.
이를 하는 방법은 메뉴에서 ‘고급설정>NAT/라우터관리>포트포워딩 설정’을 클릭하여  다음 화면에서 설정 가능 하다.

Iptime 포트포워딩
Iptime 포트포워딩

위 화면과 같이 설정하면 공공IP의 웹 접속은 39번 서버로 접속 되게 된다.

이제 20번서버에서 도메인에 따라서 20번 서버 안 즉 Docker 기반에서 여러 Container 서비스로 분기 시키는 설정이 필요하다.

이 서비스 분기를 위해 Nginx Proxy Manager 설정이 필요하다.

Nginx Proxy Manager 설치 후 설정은 81번 포트로 접속 한다.
즉, https://192.168.0.39:81 로 접속하면 다음과 같은 화면을 볼 수 있다.

초기 ID / 패스워드는 admin@example.com / changeme 이다.

로그인 하면 여러분들은 처음 로그인 상황이니 아래와 같은 목록은 없을 것이다.
서비스를 추가하기 위해 오른쪽 상단의 ‘Add Proxy Host’ 를 클릭한다.

Nginx Proxy Manger 초기화면
Nginx Proxy Manger 초기화면

하나의 Host를 추가하기 위한 다음 화면을 볼 수 있다.

New Proxy Host 화면
New Proxy Host 화면

위와 같이 설정한다.

Nginx Proxy Manager에서 Host 추가 확인
Nginx Proxy Manager에서 Host 추가 확인

설정이 완료 되면 위 화면과 같이 apache.blog.eomeo.net에 http://192.168.0.39:8822로 연결 하는 설정이 완료 되었다.

서비스 연결을 확인 하기 위하여 확보된 도메인을 실행하여 접속 됨을 확인한다.

도메인을 통한 서비스 연결 확인
도메인을 통한 서비스 연결 확인

결론

서버 비용 걱정 없는 홈 서버 구축 하는 방법을 알아 보았다.
위와 같은 구축 및 설정을 통하면 홈 서버를 활용하여 다양한 서비스를 설치 및 운영 할 수 있다.
기 확보된 도메인을 통하여 다양한 홈 서버 서비스를 제공 할 수 있으며
다음 글에서는 이를 활용 하는 방법에 대해 몇 가지 추가 하고자 한다.