시놀로지NAS 백앤드 서버로 활용하기(Docker톰캣/https적용)
백앤드 서버가 하나 필요하여 여기저기 알아보니
요즘은 대부분 돈을받고 백앤드서버를 제공한다.
AWS가 그나마 무료로 1년간 제공을 하고 있으나 잘못걸리면 과금폭탄을 맞을 수 있다는 리스크가 존재한다.
교육관련 플랫폼을 직접만들어보고 싶어서 여기저기 알아보고 있었다.
파이어베이스호스팅에 프론트앤드와 백앤드를 모두 올려보고 싶었으나
파이어베이스 호스팅은 정적 웹 사이트 호스팅 서비스로, 서버 사이드 렌더링이 필요한 어플리케이션이나 백앤드로직은 사용할 수 없었다.
결론적으로는
백앤드 - 시놀로지NAS
프론트엔드 - 파이어베이스호스팅
을 사용하기로하고 작업을 진행했다.
리엑트를 이용하여 프론트엔드를 구성하고, 파이어베이스호스팅에 배포하고
시놀로지NAS에는 DB와 API서버를 준비하였다.
막상준비하고나서 연동을 시도하니, 한가지 빼먹인것이 있었는데
http와 https는 상호간에 통신이 불가능하다는것이었다.
파이어베이스호스팅은 기본적으로 https, SSL이 적용되어있었고
내 시놀로지NAS는 SSL이 적용되지 않았다. 백앤드기도하고, 뒤에서 통신만할건데 굳이? 라는 생각에 별 생각없이 넘겼던것같다.
1. freeDNS에 시놀로지NAS에서 사용할 도메인 발급
먼저 시놀로지NAS에서 사용할 DNS를 발급받는다. 어디까지나 SSL 적용을 위함이다. 외부에 노출될 일이없으니 네이밍은 최대한 간결하게 해준다.
2. 시놀로지NAS 도커 톰캣 생성
1)여러가지 도커 톰캣 컨테이너가 있는데, 그 중 가장 편한것을 고른다.
2)외부접속이 가능하게 하기 위해, 공유기 포트포워딩 설정을 진행하고
3)NAS에서 제어판-외부엑세스-라우터구성에서 도커에 생성한 톰캣 컨테이너를 설정한다.
4)NAS에서 제어판-외부엑세스-DDNS 에서 1번에서 생성한 freeDNS를 적용한다. 여기서 접속테스트도 진행한다.
3. zeroSSL 발급
발급방법은 구글에 많이 나와있다. 발급 후 인증파일을 톰캣에 위치시키고, 인증한다. 최종인증까지 가지않아도 무관하나, 최초 auth txt파일로 인증하는건 통과해야한다.
그래야 key와 crt 파일들을 다운받을 수 있다.
4. 발급받은 zeroSSL을 도커 톰캣에 적용
key파일 1개와 crt파일 2개가 있는데 이걸 톰캣에 올리고, server.xml을 수정한다.
이 과정을 진행하며 참고한 자료와 사용한 docker 명령어들
docker 명령어들
-- 도커 컨테이너 접속
docker exec -it 5ae2fecfff29 sh
-- 도커 톰캣에 cert 파일 전송
docker cp /volume2/content/03_web/conf/server.xml 5ae2fecfff29:/usr/local/tomcat/conf/server.xml
docker cp /volume2/content/03_web/conf/ca_bundle.crt 5ae2fecfff29:/cert/ca_bundle.crt
docker cp /volume2/content/03_web/conf/certificate.crt 5ae2fecfff29:/cert/certificate.crt
docker cp /volume2/content/03_web/conf/private.key 5ae2fecfff29:/cert/private.key
이 과정을 진행함에 있어 참고한 자료들
-- freeDNS 관련
https://svrforum.com/nas/240634
테스트 진행
웹스테이션이 포트 80을 사용하고 있는것 때문에
로컬포트번호를 옮기는 쉘 스크립트도 사용하였는데, 이게 효과가 있었는지는 모르겠음
결과적으로 포트번호는 도커톰캣에 SSL 접속 외부포트를 사용하였음
----------------------------------------------------------------------------------------------------------
내용추가
아이피타임 공유기 설정 필요
외부포트 443
외부포트 80
즉, https://utlms.mooo.com/ 로 들어올때, 외부포트 443으로 들어옴
그러므로 443을 도커에서 컨테이너포트 8443에 맞는 로컬포트로 넘겨줘야함
아이피타임 외부포트443으로 들어오면, 1583으로 전달
그렇게해야 접속이 가능해짐
-----------------------------------------------------------------------------------------------------------
내용추가
3개월이 지나서 zeroSSL 갱신을 하려고 하였으나
마음대로 안됨
zeroSSL 사이트에서 verfiy를 하려했더니 또 오류 발생함
https://okky.kr/questions/1500005
http로 접속해야 하는데, 바로 https로 리다이렉팅 되는 바람이 눈치채지 못함
즉, http로 업로드 된 txt 파일을 접근할 수 있도록 해줘야 함
http://utlms.mooo.com/.well-known/pki-validation/34FE9FCC4B57435F3E6EF776CFC217BA.txt
아이피타임 공유기에는
여기서 외부포트 80번이 기존에는 도커 컨테이너 1582로 되어있는데 이걸
80으로 해서 시놀로지NAS의 웹스테이션으로 들어가도록 해줌
그 다음 웹스테이션 경로에
파일 올려주고, 다시 시도하니까 정상적으로 재인증 완료함