Cloudflare Zero Trust를 이용하여 홈서버(맥미니 서버)의 서비스 접속하는 방법.(n8n, code-server, ssh 접속)
1. Cloudflared 설치 및 로그인
서버(Host) 컴퓨터에서 cloudflared를 설치하고 로그인합니다.
# MacOS (Homebrew)
brew install cloudflare/cloudflare/cloudflared
# 로그인 (브라우저 인증)
cloudflared tunnel login
로그인이 완료되면 인증서(cert.pem)가 생성됩니다.
2. Tunnel 생성
터널을 생성하고 이름을 지정합니다. (예: home_server)
cloudflared tunnel create home_server
생성 후 터널 ID(UUID)와 자격 증명 파일 경로가 출력됩니다.
3. 설정 파일 (config.yml) 작성
~/.cloudflared/config.yml 파일을 생성하고 라우팅 규칙을 설정합니다.
주의: SSH 연결을 위해 service: ssh://localhost:22를 사용해야 하며, 우선순위를 위해 가장 상단에 배치하는 것이 좋습니다.
tunnel: <Tunnel-UUID>
credentials-file: /Users/myaccount/.cloudflared/<Tunnel-UUID>.json
ingress:
# 1. SSH 연결 (우선순위 높음)
- hostname: ssh.mydomain.net
service: ssh://localhost:22
# 2. code-server
- hostname: code.mydomain.net
service: http://localhost:8080
# 3. n8n
- hostname: n8n.mydomain.net
service: http://localhost:5678
# 4. 기본 404 처리
- service: http_status:404
4. Application 등록

4. DNS 레코드 연결
Cloudflare DNS에 CNAME 레코드를 생성하여 도메인과 터널을 연결합니다.
# n8n
cloudflared tunnel route dns home_server n8n.mydomain.net
# code-server
cloudflared tunnel route dns home_server code.mydomain.net
# SSH
cloudflared tunnel route dns home_server ssh.mydomain.net
명령어 실행이 안 될 경우, Cloudflare 대시보드에서 CNAME 레코드를 수동으로 추가할 수 있습니다.
- Type: CNAME
- Name: n8n, code, ssh
- Target: <Tunnel-UUID>.cfargotunnel.com
- Proxy Status: Proxied (Orange Cloud)

5. Tunnel 실행
설정이 완료되면 터널을 실행합니다. (임시 실행)
cloudflared tunnel run home_server
서버 시작시 자동실행되도록 하기 위해 시스템 서비스로 등록하여 백그라운드에서 항상 실행되도록 설정
Mac OS에서 서비스로 등록하는 방법
macOS에서는 **launchd**를 사용하여 cloudflared를 서비스(Daemon)로 등록합니다.
설치 명령 실행: 다음 명령을 실행하여 cloudflared를 시스템 서비스로 등록합니다.
sudo cloudflared service install
sudo launchctl list | grep cloudflared
19334 0 com.cloudflare.cloudflared
6. Cloudflare Access (Zero Trust) 설정
Cloudflare Zero Trust 대시보드 > Access > Applications에서 각 도메인(n8n.mydomain.net 등)에 대한 애플리케이션을 생성하고 정책(Policy)을 설정합니다.
- Action: Allow
- Rule: Emails / IP Ranges 등 원하는 인증 방식 설정
- SSH 팁: SSH 접속 시 이메일 OTP는 시간이 걸려 타임아웃이 발생할 수 있으므로, Google/GitHub 같은 IdP(Identity Provider)를 연동하여 사용하는 것을 권장합니다.


7. SSH 클라이언트 접속 설정 (중요)
( 클라이언트 컴퓨터에서도 cloudflared 설치필요)
외부에서 SSH로 접속하려면 클라이언트 컴퓨터(접속하려는 컴퓨터)에도 cloudflared가 설치되어 있어야 하며, SSH 설정이 필요합니다.
7.1 클라이언트 컴퓨터에 cloudflared 설치
# MacOS
brew install cloudflare/cloudflare/cloudflared
# Windows/Linux 등 OS에 맞는 방법으로 설치
7.2 SSH Config 설정 (~/.ssh/config)
클라이언트 컴퓨터의 ~/.ssh/config 파일에 다음 내용을 추가합니다. 이 설정은 SSH 접속 시 cloudflared를 프록시로 사용하여 인증을 처리하게 합니다.
Host ssh.mydomain.net
User myaccount
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
참고: cloudflared 경로는 OS나 설치 방식에 따라 다를 수 있습니다. (which cloudflared로 확인)
7.3 접속 테스트
ssh ssh.mydomain.net
명령어를 실행하면 브라우저가 열리고 인증을 요구합니다. 인증 성공 시 터미널이 연결됩니다.
8. 문제 해결 (Troubleshooting)
SSH 접속 Timeout 발생 시
- 서버 방화벽 확인: 서버(Mac mini)의 방화벽 설정에서 cloudflared 프로그램의 들어오는 연결(Incoming Connections)을 허용해야 합니다. (방화벽에서 SSH 연결가능 프로그램에서 + 해서 /opt/homebrew/bin/cloudflared 찾아서 등록해줘야 함)
- 프로토콜 확인: config.yml에서 SSH 서비스가 http://가 아닌 ssh://로 설정되어 있는지 확인합니다.
- 클라이언트 설정 확인: 접속하려는 컴퓨터에 cloudflared가 설치되어 있고 ProxyCommand가 설정되어 있는지 확인합니다.
'Tech > IT, 모바일' 카테고리의 다른 글
| cloudflare 에서 도메인 연결하기(Onboard a domain) (0) | 2025.11.20 |
|---|---|
| 홈서버 셀프호스팅용, 도메인 싸게 구입하기 (0) | 2025.11.20 |
| Oracle 서버세팅기록 (0) | 2025.10.11 |
| 가비아 DNS vs Route 53 사용 비교 (1) | 2025.09.12 |
| 키보드 에서 한/영 전환키 어디가 좋을까? (Caps Lock 위치 음.. 핵중요한자리였음) (0) | 2021.05.20 |