공부/컴퓨터
docker로 Mattermost 설치시 let's encrypt 이용해 tls 적용하는 방법
찬
2021. 7. 14. 00:33
반응형
slack을 쓰다가...
- 팀에서 Slack을 잘 사용하고 있었다.
- 어느날 무료로 높은 등급을 준다고 해서 잘 썼는데... 시간이 지났더니.. 그게 끝났다.
- 아, 이제 검색이 안되네? ㅎ.
- 유료로 사용하긴 비싸고... 역시 설치형인가.. 흠..
Rocket.chat/Mattermost 를 대충 써 보니..
- Rocket.chat 과 Mattermost가 설치형으로 사용할 수 있다.
- 둘 다 설치해 봤는데, Rocket.chat이 사용이 좀 더 불편해서 Mattermost 를 설치하는것으로 결정.
Mattermost 설치하기
- 역시나 docker로 설치하면 편하다.
- 멀티노드로 실행하려면 다음의 링크를 타고 가자 : https://docs.mattermost.com/install/prod-docker.html
- 나는 싱글노드(컴퓨터 1대)에 설치할거라 걍 쉬운 방법으로 : https://docs.mattermost.com/install/docker-local-machine.html
- 여기서 알려주는 명령어는 아래와 같다. ( 이거 쓰면 안되니깐 우선 먼저 내용을 읽자. )
docker run --name mattermost-preview -d --publish 8065:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview
- 하지만, Let's Encrypt를 이용한 TLS 설정도 할 거면 좀 바꿔야 한다.
- 우선 설명을 먼저하고 제대로 된 명령어는 저 아래에 적어 두겠다.
DNS 설정부터
- 나는 Let's Encrypt 를 사용해서 무료로 제공하는 TLS를 사용할 거다.
- Let's Encrypt를 사용하려면 먼저 IP와 FQDN(도메인)을 맵핑해야 한다. 즉, DNS 서버에 A Record를 먼저 설정해야 한다.
- 이 설명에서는 서버의 IP를
101.101.111.222
라고 가정하고, FQDN은mattermost.somedomain.com
라고 가정하겠다. - DNS에 A Record를 설정한 후에는 업데이트 되기까지 짧으면 2~3분, 길면 24시간이 걸리는 경우도 있다.
- 이 작업을 완료한 뒤, Mattermost가 설치될 서버에서
ping mattermost.somedomain.com
명령어로 IP가 잘 연결 되었는지 확인 후 아래를 진행한다.
Mattermost 에서 TLS 설정
- 위에 알려준
docker
명령을 실행하면, Mattermost가 8065번 port로 뜬다. ( 아래 제대로 된 명령어가 나오니, 우선 읽자. ) - 그럼 http://101.101.111.222:8065/ 로 접근하면, admin 계정을 만들게 되고, 이후
System Console
혹은Admin console
에서 각종 설정을 할 수 있다. - 접속 주소는 http://101.101.111.222:8065/admin_console 이다.
- TLS를 설정하려면
System Console
에서ENVIRONMENT
부분에Web Server
부분을 수정해야 한다.
System Console에서 Web Server부분을 다시 설정하자.
- 아래의 설정을 입력해 보자.
Site URL
은 아직 TLS 설정이 되지 않았지만, 그냥https://mattermost.somedomain.com
으로 적어 줘야 한다. ( 중간에 있는Test Live URL
은 눌러봤자 동작안한다. 아직 https 서버가 안 떴기 때문이다. )Listen Address
는:443
으로 적어 준다.Forward port 80 to 443
은true
를 선택해 준다.Connection Security
는TLS
를 골라 준다.Use Let's Encrypt
는true
를 선택해 준다.- 화면 아래에 있는
Save
버튼을 누른다.
- 그림으로 보면 아래와 같다.
- 위와 같이 설정했다는것은, 80번 http로 접근하면 443으로 포워딩하겠다는거다. 그리고 Let's Encrypt로 443에 대한 TLS 설정을 하겠다는것이다.
- 즉, 우리가 만들어야 하는 docker container는 총 3개의 port를 오픈해야 한다.
- 8065 : 최초 Mattermost를 띄우고 접근해서 각종 설정을 하는 port.
- 80 : 일반 http 접속을 받아줄 port. 이곳으로 접근하면 443 port로 보내 https로 동작하도록 한다.
- 443 : Let's Encrypt 에서 TLS 설정까지 해 준 https port.
- 위 작업이 완료되면 docker container를 restart 시켜야 한다. 위에서 이야기한 docker 명령어를 먼저 쳤으면 당연히 제대로 동작하지 않을것이다. 그 명령은 8065만 연결해 뒀기 때문이다.
다시 Mattermost 설치하기, TLS 설정하기, 재시작하기, https로 접속하기
- 아래의 명령어를 이용해 docker로 Mattermost를 설치하자. ( 중간에 있는
-e MATTERMOST_ENABLE_SSL=true
는 제거해도 된다.) docker run --name mattermost-preview --restart=always -d -p 80:80 --publish 8065:8065 -p 443:443 -e MATTERMOST_ENABLE_SSL=true --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview
- 이제 다시 위로 올라가서, TLS 설정을 진행하자.
- TLS 설정을 완료하고
SAVE
버튼을 눌러 저장 한 뒤에 docker container를 재시작하자. docker restart mattermost-preview
- Mattermost가 제대로 실행될 수 있도록 30초~60초정도 기다 린뒤에 웹브라우져로
https://mattermost.somedomain.com
으로 접근해 보면 TLS가 잘 동작하는것을 볼 수 있다.
반응형