[Docker] Nginx Proxy Manager, NPM 사용법 (설치 및 인증서 발급)
리버스 프록시를 수행하는 다양한 서비스가 있는데 검색하면 보통 3가지가 나온다.
1. Caddy
2. Traefik
3. Nginx
3가지 다 써본 사람 입장에서보면 사용하려는 상황에 따라서 나누어 썼는데,
Caddy는 아주 간단한 환경에서 사용했었고
Traefik는 k8s를 붙인 오케스트레이션 환경에서 사용했고
그 외 경우라면 nginx를 사용했었다.
다만, caddy와 traefik가 기본적으로 GUI 대시보드를 제공하는 것과 달리 nginx는 터미널로 작업해야 하는데 이번에 다룰 NPM (Nginx Proxy Manager)는 자체적인 대시보드를 통하여 보다 손쉽게 적용시킬 수 있다.
https://nginxproxymanager.com/guide/
Nginx Proxy Manager
Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt
nginxproxymanager.com
설치
공식 문서에서는 도커 컴포즈를 통한 설치를 권장한다.
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
docker-compose up -d
# If using docker-compose-plugin
docker compose up -d
3가지 포트가 필요한데, 80과 443은 리버스 프록시 동작에 필요하며 81번은 대시보드에서 사용할 포트이다.
- 시놀로지 DSM 7.X 이상에서 설치하면 포트 중복 오류(address already in use)가 발생하는데, 시놀로지가 기본적으로 80과 443를 사용하고 있기 때문이다.
- 이럴 경우 '80:80' 대신 '11180:80' 이런 식으로 외부 포트를 변경하면 된다. (443도 변경 필요)
로그인
실행 후 대시보드에 접근하면 로그인 화면이 나타나는데 기본 계정 정보는 다음과 같다
- id: admin@example.com
- pw: changeme
설정 화면
대시보드 메인 화면은 위 사진과 같은데 이미 설정한게 있어 프록시 호스트 5개가 있다고 나오는데 기본적으로는 0이다.
- 오른쪽 위의 'Administrator'를 클릭하면 계정 정보를 변경할 수 있는데 기본 정보로 로그인 후 반드시 바꾸도록 하자.
인증서 발급
인증서는 2가지 방법으로 적용할 수 있는데,
1. NPM을 통해 Let's Encrypt 로부터 인증서를 발급 받아 사용하거나 (Let's Encrypt)
2. 이미 발급받은 인증서를 가져와서 사용할 수도 있다. (Custom)
1번 방법을 이용해서 인증서를 발급 받으려면 다음과 같은 과정을 거치면 된다.
우선 도메인에는 개인이 보유한 도메인을 입력하면 된다. 와일드카드 인증서 발급을 원할 경우 아스타리스크도 명시하면 되는데 이럴 경우 반드시 DNS 챌린지를 통해 인증해야 한다. DNS 챌린지를 통해 인증할 경우 공급자를 골라야 하는데 어지간한 공급자는 전부 지원하니 원하는걸로 고르면 된다. 나는 Cloudflare를 통해 도메인을 관리하고 있어 Cloudflare를 골랐다.
- 별도의 이유가 없는 이상, 어지간하면 와일드 카드 인증서 발급을 추천한다.
- 와일드 카드 인증서를 발급하지 않으면 서브 도메인마다 인증서를 발급해야 하는데 그러면 갱신할 때 각각 갱신을 해줘야 해서 불필요한 관리 포인트가 늘어난다.
공급자를 고르면 각 공급자를 통해 자동으로 DNS 챌린지를 수행하기 위해 필요한 인증 정보를 요구하는데, Cloudflare는 DNS 편집 권한이 있는 토큰 정보가 필요하다. 이 토큰을 최소한의 권한으로 발급하는 방법은 다른 포스팅에 작성해놓은게 있으니 참고하길 바란다.
별다른 문제 없으면 위 사진처럼 인증서 목록에 추가되어야 한다.
- NAME 섹션에는 'test.com', '*.test.com' 이렇게 총 2개가 나와야 정상적인 와일드 카드 인증서 발급이 된거다.
- STATUS 섹션이 빨간색 NOT IN USE 라고 나올 수 있는데, 이건 인증서를 발급'만' 하고 아직 적용시키질 않아서 그렇다.