동적 IP와 Cloudflare를 활용한 n8n 무료 운영 가이드

n8n

오늘은 Cloudflare를 사용해 동적 IP를 고정 IP처럼 활용하여 도메인을 안정적으로 운영하고, n8n 워크플로우 자동화 도구를 24시간 무료로 운영할 수 있는 환경을 구축하는 방법을 소개합니다.
N8N 단계별 설치 가이드 내용중 클라우드페어의 SSL 인증서만 사용하였지만, 동적IP 사용시에는 Let’s Encrypt 를 사용한 무료 인증서를 추가로 적용해야 제대로 작동됨을 알려드립니다.



1. 상황 설명

  • 도메인: 본인 도메인
  • 운영 환경: Google Cloud VM (동적 IP 사용 중)
  • 문제: 서버를 정지 후 다시 시작하면 IP가 변경되어 도메인이 작동하지 않음.
  • 원인:
    • Google Cloud의 무료 사용 시간(매달 720시간) 제한으로, 비용 절감을 위해 서버를 정지했다가 재시작하는 경우가 많음.
    • 서버를 재시작하면 새로운 임시 IP가 할당됨.
  • 목표: 동적 IP 변경에도 도메인이 자동으로 업데이트되어 고정 IP처럼 작동하도록 만들기. 이를 통해 n8n 워크플로우 자동화 도구를 24시간 무료로 운영하는 환경을 구축하기.

2. 준비물

  1. Cloudflare 계정
    • 무료 플랜으로도 충분히 설정 가능.
  2. Cloudflare API 토큰
    • API 토큰은 Cloudflare에서 동적 IP 업데이트를 처리하기 위해 필요합니다.
  3. Google Cloud VM
    • Ubuntu 기반 서버.
  4. Let’s Encrypt SSL 인증서
    • HTTPS를 필수적으로 활성화하기 위해 필요합니다.

3. 단계별 설정 방법

3.1 Cloudflare API 토큰 생성

  • Cloudflare 로그인 합니다.
  • 프로필 아이콘 클릭 > API 토큰 > 토큰 생성 선택합니다.
api 토큰생성-1
api 토큰생성-2
api 토큰생성-3
  • API 토큰 템플릿영역 DNS 편집템플릿 사용을 클릭합니다.
  • 영역 리소스 항목에서 이미지에 보이는것처럼 본인의 도메인만 선택후 요약계속을 클릭합니다.
api 토큰생성-4
api 토큰생성-5
  • 토큰 생성 후 복사 (한 번만 표시되므로 반드시 저장)
api 토큰생성-6
api 토큰생성-7

3.2 Google Cloud VM에서 도구 설치

  1. SSH로 VM에 접속합니다.
  2. 아래 명령어를 실행하여 curl과 jq를 설치합니다.
sudo apt updatesudo apt install curl jq -y
curl과 jq 설치-1
curl과 jq 설치-2

3.3 동적 IP 업데이트 스크립트 작성

  1. SSH에서 아래 명령어로 새 스크립트를 만듭니다.
nano /home/사용자명/update-dns.sh
스크립트 생성-1
  • 사용자명은 우분투 서버 계정의 이름입니다.
    pb6x11@instance-seiran:~$ 에서 pb6x11이 사용자명입니다.
    본인의 서버 계정을 확인후 사용자명을 입력하면 됩니다.
  • 아래 코드를 복사하여 붙여넣습니다
#!/bin/bash

# Cloudflare API 설정
API_TOKEN="your_api_token"  # Cloudflare에서 생성한 API 토큰
ZONE_NAME="도메인이름"       # 도메인 이름
RECORD_NAME="도메인이름"     # A 레코드 이름

# 현재 서버의 외부 IP 가져오기
CURRENT_IP=$(curl -s http://checkip.amazonaws.com)

# Cloudflare Zone ID 가져오기
ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')

# Cloudflare DNS 레코드 ID 가져오기
RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result[0].id')

# Cloudflare DNS 레코드 업데이트 (프록시 활성화 포함)
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  --data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":1,\"proxied\":true}"
스크립트 생성-2
  • 저장 및 종료:
    • Ctrl + O, Enter, Ctrl + X.
  • 스크립트에 실행 권한 부여
chmod +x /home/사용자명/update-dns.sh
스크립트 실행

3.4 스크립트 자동 실행 설정

  1. Crontab 열기: crontab -e
crontab -e
스크립트 자동실행 설정-1
  • 1번을 입력합니다.
  • 아래 줄을 추가하여 스크립트를 1분마다 실행되도록 설정.
*/1 * * * * /home/사용자명/update-dns.sh >/dev/null 2>&1
스크립트 자동실행 설정-2
  • 저장 후 종료:
    • Ctrl + O, Enter, Ctrl + X.
  • 스크립트를 실행하여 에러가 있는지 확인합니다.
스크립트 에러 확인

4. HTTPS 설정 (필수)

HTTPS를 활성화하려면 Let’s Encrypt를 사용하여 무료 SSL 인증서를 설정해야 합니다. Cloudflare의 SSL 인증서만 사용하면 동적 IP 환경에서 HTTPS가 정상 작동하지 않을 수 있습니다.

클라우드페어의 프록시 인증서만으로는 원본 서버와 Cloudflare 간의 연결에서 문제가 발생할 수 있습니다.

Let’s Encrypt를 통해 원본 서버에도 유효한 인증서를 설치하면, 클라이언트와 원본 서버 간의 모든 연결이 안전해집니다

Cloudflare SSL 모드 호환성:

Cloudflare에서 “Full (Strict)/전체(엄격)” 모드를 사용(필히변경합니다)하려면 원본 서버에 유효한 인증서가 반드시 필요합니다

  • Certbot 설치
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
  • 인증서 발급 및 Nginx 설정 자동화
sudo certbot --nginx -d 본인 도메인 -d www.본인 도메인
  • Nginx를 재설정합니다.
sudo nano /etc/nginx/sites-enabled/n8n
# HTTP 요청을 HTTPS로 리다이렉트
server {
    listen 80;
    server_name 본인 도메인 www.본인 도메인;

    # HTTP 요청을 HTTPS로 리다이렉트
    return 301 https://$host$request_uri;
}

# HTTPS 설정 (Cloudflare SSL 사용)
server {
    listen 443 ssl;
    server_name 본인 도메인 www.본인 도메인;

    # Cloudflare Origin SSL 인증서 경로
    ssl_certificate /etc/nginx/ssl/cloudflare.pem;
    ssl_certificate_key /etc/nginx/ssl/cloudflare-key.pem;

    # 추가 SSL 설정
    ssl_protocols TLSv1.2 TLSv1.3;  # Cloudflare가 지원하는 SSL 프로토콜
    ssl_prefer_server_ciphers off;  # Cloudflare SSL 기본 설정
    ssl_session_cache shared:SSL:10m;

    # HTTP Basic Authentication 설정
    auth_basic "Restricted Access";  # 인증 창에 표시될 메시지
    auth_basic_user_file /etc/nginx/.htpasswd;  # 인증 파일 경로 (필요 시 생성)

    # n8n에 대한 프록시 설정
    location / {
        proxy_pass http://localhost:5678;  # n8n의 로컬 주소
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_cache off;
    }
}
  • 저장 후 종료:
    • Ctrl + O, Enter, Ctrl + X.
  • Nginx를 재시작하여 적용
sudo systemctl restart nginx

HTTPS 설정 후 최종확인

  • 브라우저에서 https://본인도메인https://www.본인도메인 으로 접속합니다.
    주소창 왼쪽에 자물쇠 아이콘이 표시되면 설정이 완료된 것입니다.
  • 자동 실행 확인:
    • 서버 정지 및 재시작 후, A 레코드가 자동으로 업데이트되는지 확인하세요.
서버 정지-1
클라우드페어 ip주소

5. Google Cloud VM의 “정지(Stop)”와 “중지(Suspend)” 차이점

Google Cloud VM을 사용할 때, “정지”와 “중지”의 차이를 이해하는 것은 중요한 부분입니다. 각 기능이 어떻게 작동하는지 아래에서 자세히 알아보겠습니다.

1. 정지(Stop)란?

Google Cloud에서 인스턴스를 **정지(Stop)**하면 서버의 상태가 저장되지 않으며, RAM 등의 휘발성 데이터가 모두 삭제됩니다.

특징:

  • CPU 및 RAM과 같은 컴퓨팅 리소스 사용이 중지됩니다.
  • 외부 IP 주소(임시 IP)는 변경될 수 있습니다.
  • 디스크(Storage)는 유지되며, 이에 대한 비용이 계속 발생할 수 있습니다.
  • 재시작 시 운영체제(OS)가 완전히 재부팅됩니다.

언제 사용하면 좋을까?

  • 인스턴스를 당분간 사용하지 않고 비용을 절약하고 싶을 때.

2. 중지(Suspend)란?

Google Cloud에서 인스턴스를 **중지(Suspend)**하면 현재 실행 중인 상태(메모리 및 프로세스 정보 포함)가 저장되며, 다시 시작할 때 동일한 상태로 복원됩니다.

특징:

  • 작업 중이던 프로그램과 데이터가 그대로 유지됩니다.
  • 재시작 시 부팅 시간이 단축됩니다.
  • 외부 IP 주소는 변경되지 않습니다.
  • RAM 사용량을 포함한 일부 비용이 지속적으로 발생할 수 있습니다.

언제 사용하면 좋을까?

  • 작업을 이어서 빠르게 재개하고 싶을 때.
  • 실행 중인 프로세스를 그대로 유지해야 할 때.

3. 정지(Stop) vs. 중지(Suspend) 비교 요약

기능정지 (Stop)중지 (Suspend)
메모리 상태삭제됨저장됨
재시작 후 상태새로 시작이전 상태 복원
부팅 시간정상 부팅더 빠른 부팅
외부 IP 유지변경될 수 있음유지됨
비용 발생디스크 요금만 발생디스크 + 일부 메모리 요금 발생

1분 안에 프록시와 IP 상태가 제대로 반영되는지 Cloudflare 대시보드에서 확인하면 됩니다.

서버 재시작-1
클라우드 페어 재변경

6. 결론

이제 Google Cloud VM의 동적 IP를 Cloudflare를 통해 자동으로 업데이트하여 고정 IP처럼 사용할 수 있습니다. Let’s Encrypt를 통해 HTTPS를 활성화하여 보안까지 완벽히 갖춘 도메인 운영이 가능합니다. 특히, n8n 워크플로우 자동화 도구를 24시간 무료로 운영하려는 사용자에게 최적의 솔루션입니다.

쉽게 따라할 수 있는 이 가이드를 통해 여러분도 안정적이고 비용 효율적인 도메인 관리를 경험해 보세요!


N8N 단계별 설치 가이드

N8N 설치하기 1단계 : 클라우드 서버 설치 다시보기

N8N 설치하기 2단계 : Docker 설치 다시보기

N8N 설치하기 3단계 : N8N 설치

N8N 설치하기 4단계 : 도메인 연결 및 nginx 설정 보러가기

N8N설치 도메인 구매 및 설정

N8N 버전 업데이트 하는 방법

동적 IP와 Cloudflare를 활용한 n8n 무료 운영 가이드

Similar Posts