본문 바로가기

취미, 관심/NAS, Server

Freenom 무료도메인과 LuaDNS, 도커(docker)를 이용해 DDNS 및 도메인 인증서 발행(ddns-updater, nginx-proxy-manager) #4

#1. Freenom.com 도메인 발급

#2. LuaDNS 설정(freenom 네임서버 설정)

#3. 오라클 프리티어 Ubuntu 22.04 LTS 초기설정과 Docker 설치, docker-compose 실행

#4. nginx-proxy-manager 설정(와일드카드 인증서 적용, 서브도메인 생성)#4. nginx-proxy-manager 설정(와일드카드 인증서 적용, 서브도메인 생성)

 

 

이제, 도메인 설정이 되었으니.. 컨테이너의 서비스들에 서브도메인을 부여해볼게요.

nginx-proxy-manager 설정페이지 접속을 위해 도메인:81로 접속합니다.

보안을 위해 가능한 포트 노출을 줄일 예정이라서, 이번 설정을 하고 docker-compose에서 81포트도 주석처리 해 줄 거에요.

계정 설정

초기 비밀번호는 admin@example.com / changeme 입니다.

이메일을 본인의 메일로 변경하고, 다음에 나타나는 패스워드 변경 페이지에서 패스워드도 변경합니다.

 

와일드카드 인증서 발급

SSL Certificates 로 이동해서

Add SSL Certificate 클릭

상단 도메인 네임은 *.siane.ga, *.siane.ga형식으로 합니다.

만약 내가 쓸 도메인이 정해져 있고, 그 외의 서브도메인 생성을 하지 않는다거나, 서브도메인별로 설정을 다 따로 하고싶다면 개별 인증서 발급을 하시면 됩니다만, 이 글은 와일드카드 인증서 생성이 목표잖아요.

잠시 기다리랍니다.

이 타이밍에, LuaDNS의 zone 페이지를 보면 레코드가 하나 늘어나 있는걸 확인 가능하고,

이렇게 DNS 인증 진행을 자동으로 하고 있음을 확인할 수 있어요.

조금 시간이 지난 후에 확인해보면 TXT레코드 삭제까지 진행된걸 확인 가능하고, 

경우에 따라 이렇게 계속 돌아가기만 하는 화면을 볼 수도 있습니다 -_-;;;;

새로고침 해도 별 문제 없으니 새로고침 해 주면

인증서가 정상적으로 생성된 것을 확인할 수 있습니다. 이제 서브도메인을 생성하죠!

* 이미지는 *.siane.ga만 있지만, 이대로 따라했다면 siane.ga, *.siane.ga 가 생성되어야 합니다.

 

서브도메인 생성 및 인증서 적용

Hosts > Proxy Hosts > Add Proxy Host 클릭

일단 npm 관리자페이지부터 적용해봅니다.

docker-compose.yml 파일에 작성한 service 이름을 hostname 으로 사용할 수 있습니다. 즉, 컨테이너 각각의 IP를 기억할 필요가 없습니다.

service로 묶인 친구들은 서로 통신이 가능하므로, 포트를 열어주지 않아도 서로 통신이 가능해요. 즉, 이 작업 이후에 81포트가 외부와 통신이 되지 않아도 된다는것이며, nginx-proxy-manager의 설정페이지는 npm.siane.ga를 통해서만 접근이 가능해집니다.

 

역방향프록시의 목적 중 하나가 포트번호를 숨기는것인만큼, 포트를 입력해 접근하는 방식을 차단할 필요가 있습니다.

위처럼 값을 입력했다면

SSL 탭으로 가서 인증서를 선택해주고

아래 체크도 다 활성화 합니다. 이제 npm.siane.ga는 https접속만 허용합니다.

source 아래쪽 주소를 클릭하면 해당 주소로 이동됩니다.

이제 nginx-proxy-manager의 설정페이지를 url로 들어올 수 있게 되었습니다.

 

다른 컨테이너들의 연결도 동일해요

ddns-updater의 web ui는 빈말로라도 예쁘다고 하긴 좀 어렵겠습니다ㅎㅎ

간단한 정보를 출력해주네요. 

이제 nginx-proxy-manager 관리포트를 막아줍니다.

sudo vim /docker/docker-compose.yml 을 입력해 파일을 열고

npm의 ports 부분에 주석처리를 하나 해줄거에요.

이제 기본적인 설정이 완료되었습니다.

 

이제 이 docker-compose.yml 아래쪽으로 다양한 서비스를 올리면서 사용하면 되겠죠? 예를들면 워드프레스를 올린다던가, nextcloud를 올려서 웹하드처럼 쓴다던가 하는 활용이 가능합니다.

 

portainer는 워낙 유명한 컨테이너 관리 툴이고, phpmyadmin은 mariadb를 웹ui로 관리할 수 있는 툴입니다.

watchtower는 도커 컨테이너들을 자동으로 업데이트 시켜줍니다.

사실 이번 글에 꼭 필요한 건 아니라서, 해당 컨테이너들은 굳이 docker-compose.yml 에 넣어 줄 필요가 없긴 합니다.

 

이제 내 입맛대로 서버를 가지고 놀아 봅시다!