1. nginx-proxy-manager 선택이유?
시놀로지 구성해보면 도메인 연결하고 ssl인증서 발급에 대한 여러가지 글을 찾아볼 것이다.
나 또한 많은 글을 찾아봤고
이 중에서
1. acme.sh
2. nginx-proxy-manager(이하 npm)
3. traefik
4. ha proxy
를 제일 많이 봤을 것이다.
traefik이랑 ha proxy는 사용자가 직접 스크립트나 설정파일을 작성해서 관리해야 하고
acme.sh는 시놀로지에 ssh로 접근하여 건드릴 부분이 많았다.
acme.sh, nginx-proxy-manager 둘다 사용해봤고 비교적 간편하고 다루기 쉬운 nginx-proxy-manager를 선택하게 되었다.
ui에서 몇번 딸깍하면 끝이다.
acme.sh를 하면 시놀로지의 ddns를 직접 연결할 수 있고 자체적으로 제공하는 reverse proxy를 사용할 수 있어서 좋지만 유지보수도 힘들고 인증서 추가하고 관리하는게 귀찮아서 제외했다.
그리고 시놀로지가 제공해주는 ddns의 기능과 reverse proxy 기능은 뭔가 나사빠진 기분이 좀 들어서 사용하는데 불편함을 느꼈다.
자 이제 구성해보도록 하자.
1. network 생성
network를 생성하는 이유는 다음과 같다.
npm에서 다른 컨테이너 서비스로 라우팅할 때, ip가 아닌 컨테이너 명으로 접근할 수 있도록 컨테이너 간 네트워크망을 구축하기 위함이다.
이런식으로 식별할 수 있는 네트워크명으로 하나 생성한 뒤 만들면 끝이다.
2. 프로젝트(docker-compose)로 구성
synology container manager에 들어가면 바로 컨테이너를 만들 수 있지만 이번에는 프로젝트라는 기능을 이용해볼 것이다.
찾아보고 사용해보니까 docker-compose 기능하고 동일하다.
portainer를 사용해도 무방하다.
version: "3.8"
services:
keycloak:
container_name: "npm"
image: "jc21/nginx-proxy-manager:latest"
restart: unless-stopped
ports:
# 200xx 말고 다른 포트로 바꿔도 된다.
- "20080:80" # http 접근 대응
- "20081:81" # nginx-proxy-manager UI 접근 포트
- "20443:443" # https 접근 대응
networks:
- my_network
volumes:
# npm을 구성하는 데이터 파일 볼륨 매핑
- /volume1/docker/npm/data:/data:rw
# ssl인증서 파일 볼륨 매핑
- /volume1/docker/npm/letsencrypt:/etc/letsencrypt:rw
networks:
my_network:
external: true
internal: true
jc21/nginx-proxy-manager를 사용하면 DB연결해야하는거 아니냐고 물어볼 수 있는데 별도의 설정이 없을 경우 sqlite로 구성이 된다고 한다.
엄청 하드한 환경이나 분산구조를 만들꺼 아니면 sqlite도 아주 훌륭한 DB이고 성능 생각보다 잘나와 주인장은 다음과 같이 구성했다.
그리고 data 폴더 매핑해서 보면
database.sqlite 파일이 있는데 이 파일이 sqlite의 데이터베이스 역할을 해준다. 해당 파일을 임의로 조작하거나 건들지않으면 고장날일은 없을것으로 보인다.
컨테이너가 정상적으로 올라왔다면 시놀로지 내부 IP에 20081로 접근했을 때 로그인창이 뜨면 정상적으로 성공한 것이다.
맨 처음 로그인할 수 있는 계정정보는 다음과 같다.
admin@example.com / changeme
다음 글에서는 도메인 연결 후 리버스 프록시까지 설정해보도록 한다.
'시놀로지' 카테고리의 다른 글
[synology] nginx-proxy-manager 도메인 연결 ssl 인증서 발급 with cloudflare (0) | 2024.06.21 |
---|---|
[synology] 시놀로지 NAS를 이용하여 필요한 서비스 구성해보기 (0) | 2024.06.21 |