본문 바로가기
서버/Cloudflare

[Cloudflare]NextCloud에 Cloudflare 적용하기!! (OwnCloud도 가능)

by jamong1014 2022. 2. 9.
반응형

조건 : 클라우드 플레어가 적용된 도메인, nextcloud owncloud등이 구축되어 있는 상태.
(클라우드플레어 네임서버를 본인이 갖고 있는 도메인 네임서버에 기입해서 서비스를 이용할 수 있도록 해야 합니다.)

- 네임서버 적용이 제대로 됐다면 밑에 사진처럼 '활성'이 떠야합니다.

 


1. 자신이 구축한 서버로 돌아가 클라우트 플레어 터널을 다운 받아야합니다.

$ wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb 
$ sudo dpkg -i cloudflared-linux-arm64.deb


릴리즈 버전에 따라서 다운받아야 하는것이 다르기 때문에 해당 링크를 통해서 다운받으시길 바랍니다.
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation

*ackage architecture (arm) does not match system (armhf) Errors were encountered
dpkg -i 명령어에 위 오류가 뜨시는 분들은 아래 링크를 참고하시기 바랍니다.
https://monicagranbois.com/blog/raspberrypi/error-package-architecture-arm-does-not-match-system-armhf/

 

Error: package architecture (arm) does not match system (armhf)

What does arm and armhf mean? And what does the error

monicagranbois.com

 


2. 설치한 클라우드 플레어를 최신 버전으로 업데이트 할려면 해당 명령어를 입력하시면 됩니다.
(근데 바로 설치한 직후에는 필요 없음.) 해도 되고 안해도 됨

$ cloudflared update

3. 'cloudflared tunnel login' 명령어를 이용해서 자신의 클플 계정에 엑세스 해야 합니다.

$ cloudflared tunnel login 
Please open the following URL and log in with your Cloudflare account: 

https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%2FeVoSuQcRVu3D-BYInW7YqFoOZWqjY8m2D504OLJKyys%3D

Leave cloudflared running to download the cert automatically. 
You have successfully logged in. 
If you wish to copy your credentials to a server, they have been saved to: 
/home/janne/.cloudflared/cert.pem



여기서 tip : 클플 계정 로그인 먼저 하시고 'cloudflared tunnel login' 입력해서 나온 중간에 있는 링크로 접속.

- 여기서 그냥 도메인 부분 클릭하셔서 '권한 부여' 나오면 누르시면 됩니다.

 


여기서도 만약 'email 뭐시기뭐시기 코드 몇' 오류 뜨면.........

요렇게 클플 기본 설정에 가셔서 이메일 주소 인증해주시면 됩니다.


4. 이제 다시 서버로 돌아가서 '터널'을 생성해주셔야 합니다.

$ cloudflared tunnel create nextcloud 
Tunnel credentials written to /home/janne/.cloudflared/01f0928b-6a11-4254-854c-4173b5b74f2e.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel. 

Created tunnel nextcloud with id 01f0928b-6a11-4254-854c-4173b5b74f2e


(nextcloud라는 터널을 생성)

다음으로 /etc 폴더에 'cloudflared/' 라는 폴더를 만들어주고 그 폴더 안에 config.yml 파일을 생성해줍니다.
'/etc/cloudflared/config.yml' 요렇게 될 수 있도록 해주시면 됩니다.

그리고 config.yml 파일을 엽니다. (sudo gedit config.yml) vi, nano...등등

tunnel: 01f0928b-6a11-4254-854c-4173b5b74f2e 
credentials-file: /home/janne/.cloudflared/01f0928b-6a11-4254-854c-4173b5b74f2e.json 

ingress:
- hostname: 자신의 도메인 
service: http://192.168.1.22
- service: http_status:404

이 내용을 고대로 복사해서 붙혀넣기 해줍시다.
그리고 우리가 수정해야 될 부분은 tunnel:, credentials-file:, hostname:, service: 부분을 수정해줘야 합니다.

- 제 각각 생성 id가 모두 다르기 때문에 위에서 작업하면서 나온 터널 생성 아이디를 입력해 주시면 됩니다.
- hostname은 클플에 적용된 도메인을 입력
- service는 무조건 사설 아이피(서버의 내부 아이피)를 입력해주세요 (속도 훨씬 빨라짐)
*클라우드플레어 전용 터널을 따로 사용하기 때문에 내부 아이피로도 통신이 가능

 

클라우드 플레어 터널 원리


5. 클라우드플레어의 터널 구성 파일이 제대로 생성되었는지 확인해봅시다.

$ cloudflared tunnel --config /etc/cloudflared/config.yml ingress validate


상태 메시지로 ok든 , success 든 긍정적인 메시지 나오면 성공


6. 이제 Cloudflare 웹 대시보드에서 DNS 설정을 구성해야 합니다.


자신이 사용하고자 하는 도메인을 CNAME 레코드로 추가하여 '대상' 부분에 '<your-tunnel-id>.cfargotunnel.com'
이런 형식으로 기입하시면 됩니다.

예)자신의 터널 아이디가 0e3rwer3rs-4234-fwf-wer3라면 '0e3rwer3rs-4234-fwf-wer3.cfargotunnel.com' 이렇게 입력하시면 됩니다.


7. 마지막으로 터널을 시작해야 합니다. 서버에서 터널링 명령을 적극적으로 실행할 때만 터널이 열리는 것을 원하지 않으므로 서비스로 설치하는 것이 가장 좋습니다.

$ sudo cloudflared service install


그런 다음 서비스를 시작하고 활성화해야합니다.

$ sudo systemctl start cloudflared 
$ sudo systemctl enable cloudflared


그럼 이제 항상 백그라운드에서 실행되고 서버가 부팅될 때 자동으로 시작됩니다.

만약에 /etc/cloudflared/config.yml의 구성 파일을 변경했다면 재시작 해줘야 합니다.

$ sudo systemctl restart cloudflared

그리고 /var/www/nextcloud/config/config.php 에 들어가서 신뢰할 수 있는 도메인으로만 설정해줍시다.

해당 이미지는 예시입니다.
자신이 사용하고자 하는 도메인을 넣어주면 됩니다.

끝!


도메인을 조회해보면 정상적으로 클라우드플레어를 경유하는걸 확인하실 수 있습니다.

출처
https://pakstech.com/blog/nextcloud-cloudflare-tunnel/

 

Configure Nextcloud Behind a Cloudflare Tunnel

When you set up a private Nextcloud installation on your home server and want to have it accessible from the outside network you traditionally need to poke a hole in your NAT and set up dynamic DNS to be able to find the correct IP every time. With Cloudfl

pakstech.com

 

반응형

댓글