환경
해당 블로그는 cloudflared에 로그인을 이미 했으며, config.yml파일을 통해서 환경 설정까지 다 끝난 상태를 즉 cloudflared start <tunnel name>이 아닌 systemctl로 백그라운드 모드에서 실행할 수 있는 상태를 만들고 싶은 분들을 위한 글입니다.
cloudflared systemctl 설정 방법
1. cloudflared systemctl 설치
sudo cloudflared service install위 명령어를 쳐서 cloudflared service install을 진행하면 됩니다.
오류 상황 2. sudo cloudflared service install 실행 시 config.yml을 찾지 못하는 경우
위와 같이 config.yml 파일을 찾지 못하는 문제가 있었습니다.
Cannot determine default configuration path. No file [config.yml config.yaml] in
[~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp /etc/cloudflared /usr/local/etc/cloudflared]원인
sudo로 실행하면 root 계정 기준으로 ~를 해석하기 때문에 /root/.cloudflared를 탐색합니다. 일반 유저 홈(/home/username/.cloudflared)에 config.yml이 있어도 찾지 못합니다.
해결 방법
config.yml과 credentials 파일을 /etc/cloudflared/로 복사하고, credentials-file 경로를 절대경로로 수정합니다.
sudo mkdir -p /etc/cloudflared
sudo cp ~/.cloudflared/config.yml /etc/cloudflared/config.yml
sudo cp ~/.cloudflared/<터널ID>.json /etc/cloudflared//etc/cloudflared/config.yml을 열어 credentials-file 경로를 절대경로로 변경합니다:
tunnel: <터널ID>
credentials-file: /etc/cloudflared/<터널ID>.json
ingress:
- hostname: example.haeyul.cloud
service: http://localhost:8080
- service: http_status:404이후 다시 서비스를 설치하면 정상적으로 동작합니다:
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared