• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
가이드

Cloudflare - Zero Trust 도커로 올리고 사용하기(docker-compose)

ExpBox ExpBox 1244

6

6

안녕하세요 Expbox입니다.

 

https://svrforum.com/docker/717603

위 링크의 Docker로 cloudflare-ddns 적용하는 방법을 올린지 오래 지났습니다.

 

요새 글들을 보니 CloudFlare의 Zero Trust로 서비스를 배포하시는 경우가 있으신 것 같은데 개인 데비안 계열, 레드햇 계열의 OS를 쓰신다면 다행이지만 서버포럼에서는 정품이든 비정품이든 DSM을 사용하기 때문에 설치하는 것이 매우 귀찮고 까다롭게 되어있습니다. 따라서 쉽고 간편하게 도커로 올려 사용하는 방법으로 보안과 리버스 프록시까지 전부 가능하게 하는 방법을 알려드리겠습니다.

 

사실 그냥 Cloudflare - Zero Trust - Access - Tunnels 에서 순서대로 하다보면 이미 끝날 정도로 정말 간단합니다. 하지만 저는 docker-compose로 변경하여 귀찮게 이것저것 할 필요없이 docker-compose up -d로 바로 올려버리는걸 정말 좋아하기 때문에 이 방법을 알려드리도록 하겠습니다.

 

하지만 무료 티어를 사용하실 경우 국내 Cloudflare 서버를 지나지 않고 미국에 있는 서버를 거쳐오기 때문에 속도가 중요하다고 생각하신다면 위의 Docker로 cloudflare-ddns 적용하는 글을 참고하셔서 DDNS를 설정하시면 되겠습니다. 시험은 안해봤는데 DNS옵션에서 Proxy 옵션을 끌 수 있는 것 같은데 정상적으로 적용이 되려나 모르겠습니다. 만약 가능하다면 설정에서 꺼주시면 될것 같습니다.

 


 

0. 제 시스템의 환경

정품 시놀로지 DS1821+

DSM 버전: DSM 7.1.1-42962 Update 4

Docker 버전: Docker version 20.10.3, build 55f0773 (docker -v로 확인)

Docker-Compose 버전: Docker Compose version v2.17.2 (docker-compose --version 로 확인)

 

1. 준비물

Cloudflare 아이디 - 당연하게도 Cloudflare를 사용하기 때문의 아이디가 필요합니다. 회원가입을 꼭 해주세요.

Cloudflare에 등록된 도메인 - 자신 소유의 도메인입니다. DDNS로 DuckDNS 등의 서비스로는 아마 안될겁니다.

리눅스 시스템 - Docker를 사용하여 사실상 모든 리눅스 시스템에서는 사용이 가능합니다. DSM, Ubuntu 등..

 

 

2. Zero Trust - Access - Tunnel 접속하기

https://one.dash.cloudflare.com/ 에서 로그인 후 바로 접속

혹은

https://dash.cloudflare.com/ 에서 로그인 후 왼쪽 메뉴에서 Zero Trust 선택

Monosnap Home ExpBox Cloudflare 🔊 2023-04-23 01-07-20.png.jpg

 

왼쪽 메뉴에서 Access - Tunnels 선택

Monosnap Cloudflare Zero Trust 🔊 2023-04-23 01-04-27.png.jpg

 

 

3-1. 새로운 Tunnel 생성하기 - Docker 명령어

+ Create a tunnel 버튼을 클릭하시면 됩니다.

Monosnap Tunnels - Cloudflare Zero Trust 🔊 2023-04-23 01-09-59.png.jpg

 

Tunnel에 대한 이름을 입력하시면 됩니다. 저는 테스트용으로 Test_Synology라고 했는데 원하시는 이름으로 입력하시면 됩니다.

다 되었다면 Save tunnel을 클릭하셔서 다음으로 넘어가면 됩니다.

Monosnap Create a tunnel - Cloudflare Zero Trust 🔊 2023-04-23 01-12-14.png.jpg

 

그러면 설치하는 방법에 대해서 이야기할텐데 위에서 말씀드린 바와 같이 데비안 계열과 레드햇 계열은 설치 파일을 제공하기 때문에 간편하게 됩니다. 하지만 DSM은 이것저것 해야하니 Docker로 할꺼니까 Docker를 클릭합니다. 그러면 아래와 같이 컨테이너 받아오고 run까지 해주는 명령어를 그냥 알아서 알려줍니다.

어짜피 테스트용이니 과감하게 토큰 깝니다. 글 적으면서 이미 몇번 삭제했다 생성해서 연결해봤자 안될겁니다.

 

image.png.jpg

 

저 복잡한 텍스트를 한땀한땀 치는건 바보같은 일입니다. 그냥 클릭하면 복사가 알아서 진행되니 ssh 접속해서 아래의 명령어를 붙여넣기하면 알아서 잘 진행될겁니다. 결론적으로는 아래의 방법으로 진행됩니다. 스케줄러에 root로 실행하면 끝!

 

docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token [토큰]

 

...이라고 하면 이 글의 의미가 없겠죠? 제가 docker run으로 바로 실행한 것은 아니지만 네트워크를 호스트로 잡아주지 않았기 때문에 정상적으로 실행되고 연결은 되겠으나 tunnel에 아무리 뭔가를 연결한다고 해도 정상적으로 인식이 되진 않을겁니다. 포트를 잡아주면 또 모르겠는데 제가 안해봐서 모르겠군요. 이 부분은 제가 틀렸을 수도 있으니 확인 부탁드립니다. docker-compose로 했을 때는 안됐거든요.

 

따라서 아래와 같이 수정하시면 될 것 같습니다.

 

docker run -d --net=host --name [컨테이너명] cloudflare/cloudflared:latest tunnel --no-autoupdate run --token [토큰]

 

컨테이너명에는 사용하고 싶은 이름을 지정하면 됩니다. --name 옵션을 삭제하면 알아서 랜덤한 이름을 지정해주긴 합니다만 저는 지정해주는걸 좋아해서요. 이제 이 명령어를 제어판 - 작업 스케줄러에 root로 실행하거나 ssh에서 sudo -i 로 root로 로그인 후 명령어를 실행하면 완료됩니다.

 

대부분의 유저분들은 여기까지만 진행하시면 됩니다. docker-compose가 설치되어있지 않은 경우도 있고 ssh를 사용하지 않으면서 명령어 간단하게 DSM열어서 도커 켜고 뭐 할거 없이 명령어 딱 이렇게만 하면 이것저것 할거없이 끝나거든요.

 

 

3-2. Docker 명령어 실행하기

제어판 - 작업 스케줄러 - 생성 - 예약된 작업 - 사용자 정의 스크립트 순으로 클릭합니다.

 

아래의 창이 뜨는데 작업에는 원하는 이름, 사용자는 꼭 root로 하셔야합니다.

image.png.jpg

 

작업 설정에는 위에서 설명한 내용을 넣습니다.

image.png.jpg

 

확인 누르고 저장한 뒤 우클릭 - 실행 하시면 됩니다.

 

Monosnap Configure Test_Synology - Cloudflare Zero Trust 🔊 2023-04-23 02-01-46.png.jpg

 

cloudflare에서 이렇게 뜬다면 성공입니다.

 

 

4-1. 새로운 Tunnel 생성하기 - Docker-Compose

그렇지만 저는 docker-compose로 실행하는 것을 아주 좋아하니 혹시나 저와 같은 사람은 계속 확인해주시면 감사하겠습니다. 계속해서 메모장이나 텍스트 에디터로 docker-compose.yml 파일을 생성하면 됩니다. 윈도우 메모장을 이용하여 아래의 내용을 복사 붙여넣기 하시고 docker-compose.yml 파일로 저장하시면 됩니다. 단 여기서 주의할것이 UTF-8 포맷으로 저장하셔야합니다. ssh를 사용하신다면 vi 편집기를 사용하시면 됩니다.(이 부분에 대해서는 따로 설명하지 않습니다.)

 

version: '3.1'
services:
  cloudflared-tunnel:
    container_name: [컨테이너 명]
    image: cloudflare/cloudflared:latest
    restart: unless-stopped
    command: tunnel --no-autoupdate run
    environment:
      - TUNNEL_TOKEN=[토큰]
    network_mode: host

 

토큰에는 위에서 발급받은 무작위의 문자와 숫자 조합을 그대로 붙여넣기하시면 됩니다.

 

 

4-2. Docker-Compose 실행하기

위에서 생성한 docker-compose.yml 파일을 DSM에 업로드합니다. 저는 SSD에 공유폴더 Docker를 생성하고 그 안에 cloudflared-docker 폴더를 만들어 그 안에다 넣어놨습니다. 우클릭 - 속성에서 위치를 복사해두시길 바랍니다.

image.png.jpg

 

이러면 이제 모든 준비는 완료되었습니다. ssh에 접속해서 docker-compose.yml 이 있는 경로로 접속(cd)하여 docker-compose up -d 하면 됩니다. 하지만 위에서 했던것과 동일하게 작업 스크립트를 통해서 실행하는 방법을 알려드리겠습니다.

 

제어판 - 작업 스케줄러 - 생성 - 예약된 작업 - 사용자 정의 스크립트 순으로 클릭합니다.

 

아래의 창이 뜨는데 작업에는 원하는 이름, 사용자는 꼭 root로 하셔야합니다.

image.png.jpg

 

작업 설정에는 아래의 내용을 넣습니다.

 

docker-compose -f [docker-compose.yml의 파일 경로] up -d

 

image.png.jpg

 

확인 누르고 저장한 뒤 우클릭 - 실행 하시면 됩니다.

 

Monosnap Configure Test_Synology - Cloudflare Zero Trust 🔊 2023-04-23 02-01-46.png.jpg

 

cloudflare에서 이렇게 뜬다면 성공입니다.

 

 

5. 리버스 프록시 설정하기

Next를 누르면 이런 창이 반겨줍니다. 간단하게만 설명드릴게요.

 

image.png.jpg

 

Subdomain에 사용하고 싶은 서브 도메인을 입력합니다. Domain에는 자신의 도메인을 넣어줍니다. Path는 입력 안해도 상관없어요. Type에는 서비스마다 조금씩 다른데 HTTP, HTTPS, SSH 등이 지원됩니다. URL이 중요한데 대부분이 localhost:로 시작할거에요.

 

예를 들어 제 DSM에 Kavita 도커를 설치했고 HTTP 접속 포트를 12345라고 지정하였고 서브 도메인은 kavita로 하고싶다고 가정하겠습니다.

 

그러면 Subdomain에는 kavita, Domain에는 가지고있는 도메인, Type에는 HTTP, URL에는 localhost:12345 로 지정하시고 아래의 save tunnel을 클릭하시면 정말로 리버스 프록시까지 끝납니다.

 


 

대충 적는데 3시간 정도 걸린 것 같네요. 글재주도 없는데 중간에 테스트도 좀 한다고 늦어졌습니다. 도움이 되시길 바라며 혹시나 모르시는 내용, 틀린 내용이 있다면 댓글 부탁드립니다.

 

부족한 내용 봐주셔서 감사합니다.

신고공유스크랩
6
1등
사다리 2023.04.23. 17:34
잘 봤습니다. 대시보드에서 생성한 토큰으로 터널을 연결하면 대시보드에서만 라우팅을 관리할 수 있는데 아직 웹소켓 같은건 설정할 수가 없더군요. 저는 결국 바이너리로 로컬에서 직접 터널 생성하고 관리하도록 했습니다. 여걸로 bitwarden 올려놨는데 잘 돌아가네요. ㅎㅎ
profile image
ExpBox 글쓴이 2023.04.23. 19:21
사다리
맞습니다. 관련해서 딥하게 안하려고 했습니다. 대부분의 유저들에게는 리버스프록시가 대부분 사용하는 목적일테니까요.
2등
robot.re.kr 2023.05.11. 11:06
리버스프록시로 ssh가 유독 설정이 안되던데... ㅠ 어떻게 하는지 아시나요?
ssh.도메인/ 을
ssh://localhost:[ssh포트] 로 했는데 안열리네요.
3등
bbchip13 2023.11.19. 17:19
글 감사합니다.
이거는 네트워크 트래픽 비용 정책은 어떻게 되나요? 찾아봐도 안 나오네요...
그리고 속도는 ec2 한국 리전에 터널링 서버 구축해서 하는 거에 비해서 어떨까요?
profile image
ExpBox 글쓴이 2023.11.20. 14:46
bbchip13
아마 유료 티어를 사용하는게 아니라면 한국 리전으로 연결되지 않기 때문에 조금 느릴겁니다. 트래픽 비용 정책이라긴 좀 그런데 무료 티어는 업로드 200메가였던것으로 기억합니다. EC2 터널링을 사용해보지는 않았지만 한국 리전이라면 더 빠르지 않을까 싶습니다.

https://www.cloudflare.com/ko-kr/plans/zero-trust-services/

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
가이드 Ubuntu 24.04 LTS Desktop 원격 접속 설정하기(SSH,RDP) 3 달소 23시간 전18:33 79 +1
가이드 Ubuntu 24.04 LTS Server 설치해보기 달소 1일 전17:40 157 +2
잡담 Ubuntu 24 가 정식출시되었습니다~~ 8 달소 1일 전10:37 266 +2
3870 잡담
normal
kmw_ 20시간 전21:52 310 0
3869 후기
normal
ljr10 21시간 전21:18 92 0
3868 가이드
image
달소 23시간 전19:06 57 0
3867 가이드
image
달소 23시간 전18:33 79 +1
3866 가이드
image
달소 1일 전18:09 82 0
3865 가이드
image
달소 1일 전17:40 157 +2
3864 질문
normal
까칠한나그네 1일 전15:44 80 0
3863 잡담
image
달소 1일 전10:37 266 +2
3862 가이드
image
달소 1일 전23:10 83 +1
3861 가이드
image
달소 1일 전22:54 86 0
3860 질문
normal
감자칩 1일 전18:56 203 0
3859 질문
image
게르노 2일 전16:08 74 0
3858 질문
image
동도리군 2일 전12:14 92 0
3857 정보
image
달소 2일 전08:21 173 +1
3856 잡담
image
달소 2일 전07:46 296 +1
3855 가이드
image
달소 2일 전07:24 279 0
3854 질문
normal
서버구축하자 3일 전13:09 425 0
3853 질문
image
미스터빈 3일 전20:09 227 0
3852 질문
image
초보나스 4일 전08:05 268 +1
3851 질문
normal
웹서버구축관심 5일 전02:22 335 0