티스토리 뷰

Introduction

필자는 언젠간 개인 도메인을 사용하여 나의 이력서나 블로그, 개인 서버 등을 도메인에 연결하여 어디서든 접속하고 싶은 욕구가 있었다. 방법도 잘 모르고 시간도 나지 않아 미루고 있었지만 드디어 삽질을 해서 이를 성공하고싶은 마음이 생겼다. 그래서 무작정 후이즈로 들어가서 회원 가입을 한 후 도메인 구입했다. 하지만 이 도메인을 어떻게 github.io 페이지나 tistory, 그리고 내 개인 서버의 수많은 서비스들에 연결할 수 있을까.

근 3일동안 이런 저런 방법을 시도하며 시행착오를 겪었고 결국 성공하였다. 네트워크에 대한 이해가 별로 없었기에 시간이 오래 걸렸던 것 같다. 본 글에서는 현재 필자의 개인 서버 상황과 구매한 도메인을 github.io, tistory 그리고 개인 서버의 프록시서버에 연결하는 방법을 소개하려 한다. 개인 도메인을 구매하고 여러 웹페이지나 서비스에 연결하고 싶은 독자들에게 도움이 되기를 바란다.

My settings

필자의 네트워크 상황은 이렇다. KT 인터넷을 사용하고, KT 회선에 개인 iptime 공유기를 연결하였다. 그리고 iptime 공유기와 우분투 18.04 데스크톱을 연결하여 데스크톱은 192.168.0.x 의 내부 ip 를 받아서 사용하고 있다. KT 인터넷은 별도의 신청이 없는 한 유동 ip 를 할당하므로, 공유기 외부 ip 는 언제든지 바뀔 수 있는 상황이다.

도메인은 후이즈(https://whois.co.kr) 에서 구매하였다. 편의상 구매한 도메인을 mydomain.com 이라고 하겠다.

도메인을 활용하여 연결하고 싶은 서비스는 크게 세 가지가 있다.

  1. github.io : 간단히 이력을 적어놓은 개인 깃헙 페이지
  2. tistory blog : 이것 저것 정리하는 한글 블로그
  3. 데스크톱 서버의 웹서버 : 특정 서브도메인으로 요청된 접속을 내가 띄워놓은 서비스로 연결해주는 프록시서버

그리고 프록시 서버로 서브도메인에 띄우고 싶은 것은 일단 간단한 딥 러닝 모델 설계 및 테스트용 jupyter notebook 이다. 이것만 띄울 수 있으면 다른 어떤 원하는 서비스든 원하는 서브도메인에 연결 할 수 있게 된다.

DNS 서버 제공 사이트 이용 - DNSZI

네임서버란 영문 도메인을 네 자리의 IP 주소로 매핑시켜 주는 서버다. 도메인을 구매했다고 끝나는 것이 아니라, 구매한 영문 도메인과 그 서브 도메인들을 어떤 ip 로 매핑시켜야 할지를 네임서버에 설정해주어야 한다. 후이즈에서는 자체적으로 네임서버를 제공하고 있기 때문에 후이즈의 네임서버를 사용해서 원하는 설정을 할 수 있다. 하지만 약간의 제약이 있는데, 이를테면 A record 를 5개 까지만 무료로 사용할 수 있다는 점이라던가 A record 에 와일드카드(*) 를 사용할 수 없다는 점, 그리고 DDNS 를 지원하지 않는다는 점 등이 있다.

이런 한계를 극복하기 위해 우리가 선택할 수 있는 방법은 두 가지가 있다. 첫째는 직접 네임서버를 구축하고 이를 우리 도메인의 네임서버로 설정하는 것, 그리고 두 번째는 네임서버를 직접 구축하지 않고 제공해주는 서비스 (dnszi, dnsever, google cloud router, AWS route53) 등의 도움을 받는 것이다.

사실 첫 번째 방법을 시도해보았으나 실패했다. 그리고 무엇보다 데스크톱을 종료하면 네임서버도 종료되어 우리의 도메인에 더이상 접속을 할 수 없게 된다는 최대 단점 때문에 네임 서버를 직접 구축하고 운용하는 것은 포기하였다. 따라서 지금부터 dnszi 라는 사이트로 네임서버를 사용하여 우리의 도메인을 원하는 서비스들에 연결하는 방법을 소개한다.

네임 서버 변경

  1. dnszi.com 에서 도메인을 등록하고 네임서버 5개의 주소와 ip 를 받는다.
  2. 후이즈의 도메인 관리 페이지에 들어가서 네임서버 변경을 클릭한다.
  3. 1번에서 얻은 네임서버 주소와 ip 5개를 입력한다.
  4. 필자의 경우는 10분정도 기다리니 네임서버 이전이 완료되었다. 완료되었는지 확인하는 방법은 whois.co.kr 의 도메인, 네임서버 검색에 가서 내가 구입한 도메인을 검색해보는 것이다. 만약 네임서버 등록이 완료되었다면, 검색 결과에서 네임서버의 ip 를 확인할 수 있다.

도메인 - 서비스 연결

  1. github.io 연결
    1. dnszi.com 에서 A 레코드 설정 탭을 연다.
    2. A 레코드에는 원하는 subdomain 을 입력하고 ip 주소에는 밑의 네 개 중 하나를 입력한다. ddns 설정은 X 로 하고 IP 주소(A) 추가 버튼을 누른다.
      • 185.199.108.153
      • 185.199.109.153
      • 185.199.110.153
      • 185.199.111.153
    3. Github Repository 의 setting 에 들어가서 custom domain 을 위에서 등록한 A 레코드(서브도메인) 으로 설정해준다.
    4. 약 10분 정도 지나면 등록한 서브도메인에 접속하여 깃헙 페이지가 잘 연결되었는지 확인한다.
    5. References
  2. tistory 연결
    1. dnszi.com 에서 CNAME 설정 탭을 연다.
    2. 서브도메인, blog.tistory.com 을 CNAME 에 등록한다.
    3. 티스토리 블로그 관리 페이지에 들어가서 '개인 도메인 사용을 사용합니다' 로 세팅하고, 서브도메인을 입력한다.
  3. 개인 서버 연결
    1. dnszi 에서 제공하는 Dynamic DNS 서비스를 사용하면 유동 외부ip 가 바뀔 때마다 A 레코드의 ip 주소를 업데이트를 해줄 수 있다.
    2. A Records 에 다음 레코드를 등록한다.
      • wonkyunglee.io, 현재 공유기 외부 IP
      • *.wonkyunglee.io, 현재 공유기 외부 IP
    3. iptime 설정
      1. 포트포워딩
        • 데스크톱 서버의 80포트를 외부 80으로 연결한다.
      2. DDNS 는 따로 설정할 필요가 없다.
    4. References

서브도메인 연결 by nginx-proxy

  1. nginx-proxy 도커를 실행시킨다.

     $ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --name nginx-proxy jwilder/nginx-proxy
  2. 다른 도커 서비스를 실행시키되, VIRTUAL_HOST 와 필요하다면 VIRTUAL_PORT 를 주고 실행시킨다. whoami 라는 도커를 실행시켜보자.

     $ docker run -itd -e VIRTUAL_HOST=whoami.mydomain.com --name whoami jwilder/whoami
  3. whoami.mydomain.com 에 접속해서 간단한 웹 페이지가 잘 접속되는지 확인해보자. 접속이 되었다면 이제 원하는 subdomain을 VIRTUAL_HOST 환경변수로 넣은 도커 파일을 실행시켜서 원하는 서비스를 그 도메인에 연결 시킬 수 있다.

  4. 이를테면 jupyter notebook 을 다음 스크립트를 실행하여 서브도메인과 연결할 수 있다.

    참고로 jupyter notebook 의 password 세팅을 해주어야 한다. 이는 다른 포스트에서 설명하도록 하겠다.

     $ docker run -itd -v /data/:/data/ -e "VIRTUAL_HOST=nb.mydomain.com" -e "VIRTUAL_PORT=8888" \ 
       -w /data/ --name notebook wonkyunglee/tensorflow:1.10.1-gpu-py3 jupyter notebook --allow-root

nb.mydomain.com 에 접속해서 jupyter notebook 이 제대로 떠있는지 확인해보자. 

댓글
댓글쓰기 폼