#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 에 넣어 줄 필요가 없긴 합니다.
이제 내 입맛대로 서버를 가지고 놀아 봅시다!