n8n, Automation Tool

Oracle Cloud에 n8n 배포

그때 그때 끄적 2025. 5. 21. 18:18

왜 클라우드에 올리게 됐을까?

나는 평소에 PC와 노트북을 오가며 n8n 작업을 하다 보니, 환경이 다 달라서 번거로웠다. 예를 들어 PC에서 만든 워크플로우를 노트북에 복사하거나 다시 셋팅하는 게 번거롭고, Webhook 주소도 바뀌어버리니 안정적인 운영이 힘들었다.

그래서 생각한 게 바로 클라우드 서버에 n8n을 올려버리는 것. 이렇게 하면 어떤 환경에서든 동일한 주소로 접속하고, 같은 환경에서 작업할 수 있게 된다.

 

[목표 및 기대 효과]

  • 외부 접속 가능한 고정형 n8n 환경 구축
  • Webhook 자동화, 캘린더 연동 등의 작업을 언제 어디서나 동일하게 유지
  • 노트북/PC/모바일에서도 한 곳에 접속만 하면 되도록 구성
 

[환경 정보]

  • 클라우드: Oracle Cloud Free Tier (ARM 인스턴스)
  • OS: Ubuntu 22.04
  • 설치 도구: Docker, Docker Compose
  • 접속 도구: SSH
더보기

☁️ 2025년 기준 무료/저렴한 클라우드 서버 제공처 모음

🟢 1. Railway

  • 무료 한도: 월 500시간 사용 (백엔드 컨테이너 1개 기준)
  • 특징:
    • GitHub 연동 → 자동 배포
    • PostgreSQL도 무료 제공
    • 웹 기반 Docker 배포 편리
  • 링크: https://railway.app

💡 n8n을 Dockerfile로 배포하면 아주 쉽게 운영 가능!


🟢 2. Render

  • 무료 한도: Web Service 1개 + 매일 750시간
  • 특징:
    • 배포 시 URL 자동 발급
    • PostgreSQL도 무료 제공
    • Static / Web Service / Cron jobs도 지원
  • 링크: https://render.com

🟢 3. Fly.io

  • 무료 한도:
    • 월 3,000 VM시간 (1vCPU / 256MB RAM 기준)
    • 월 160GB 전송
  • 특징:
    • 글로벌 위치 선택 가능 (서울 포함)
    • CLI 설치 후 배포
  • 링크: https://fly.io

🟢 4. GCP (Google Cloud Platform)

  • 무료 한도 (항상 무료):
    • f1-micro VM 1개 (미국 리전 한정)
    • 30GB HDD, 1GB 네트워크 포함
  • 추가 혜택: 최초 가입시 $300 크레딧 (12개월 내 사용)
  • 링크: https://cloud.google.com/free

⚠️ 리전이 us-west, us-central 등일 때만 완전 무료


🟢 5. Oracle Cloud Free Tier

  • 항상 무료 리소스:
    • VM 2개 (1vCPU, 1GB RAM)
    • 2개 Autonomous DB (ATP/ADW)
    • 블록스토리지 100GB
  • 특징:
    • n8n 설치 시 유용한 사양
    • 다소 복잡하지만 실서버 수준 가능
  • 링크: https://www.oracle.com/cloud/free/

🟢 6. Glitch (개발용 서버)

  • 무료 한도:
    • 앱당 400시간/월
    • 앱이 유휴 상태일 땐 슬립됨
  • 특징:
    • Node.js 기반, 실시간 편집 가능
  • 링크: https://glitch.com

⚠️ 그 외 추천 안하는 곳

서비스이유
Heroku (무료 종료됨) 2022년부로 무료 요금제 종료
Vercel / Netlify 정적 페이지 중심으로 백엔드 서버 운영 어려움
AWS 신규가입 $100 크레딧 이후 유료 전환

 

 

☁️ Oracle Cloud를 선택한 이유

GPT한테 물어보니 AWS, GCP, Azure도 있지만 Oracle Cloud는 상시 무료 티어로 1개의 VM을 제공한다고 했다.

  • ✅ 월간 요금 없이 사용할 수 있는 범위 내에서 충분
  • ✅ VM 인스턴스를 생성해서 24시간 작동 가능
  • ✅ ARM 기반 인스턴스의 성능도 꽤 괜찮음

도메인을 구매하면 더 좋겠지만, 도메인은 비용이 발생하므로 ngrok을 활용해서 대체할 수 있는 방법을 찾고 있다.

 >> 향후에는 ngrok 혹은 클라우드 DNS 등의 대안을 고려할 예정.

 

🧰 사전 준비

  • Oracle Cloud에서 Ubuntu 22.04 인스턴스 생성 완료
  • 퍼블릭 IP와 SSH Key 확보 (OCI 콘솔에서 확인)
  • 포트 5678 (n8n 기본 포트) 방화벽 열려 있어야 함

 

Oracle Cloud 가입 및 Instance 생성

가입 과정은 유튜브 영상 참고: https://www.youtube.com/watch?v=AgJgEnQv6cw

  1. 회원가입
  2. 무료 티어로 로그인
  3. 인스턴스 생성 (VM.Standard.A1.Flex 선택)
  4. OS는 Ubuntu 22.04로 진행
  5. SSH 키 생성 후 등록 → 이 키를 통해 터미널에서 접속
  6. 퍼블릭 IP 확인

 

💻 Oracle Cloud에 n8n 설치하기

1. SSH 접속

# Public Key를 현재 폴더 안에 다운로드해서 진행하는게 편하다
<미리 만들어놓고 해당 폴더에 Key 넣기>
mkdir ~/n8n
cd ~/n8n
ssh -i <oracle-key.pem가 있는 경로> ubuntu@<Public-IP>

>> 접속후
ubuntu@your-instance-name:~$  <<<  터미널 창에 이렇게 시작하면 접속이 된거다

2. Docker 설치

# 하나씩 진행
sudo apt update
sudo apt install docker.io docker-compose -y

 

3. docker-compose.yml 작성

nano docker-compose.yml

https://cord-ai.tistory.com/209

 

리눅스 터미널 - nano

🧾 nano란?nano는 리눅스 터미널에서 실행되는 텍스트 편집기입니다.쉽게 말해, "메모장"의 터미널 버전이에요.언제 사용하나요?리눅스에서 파일을 만들거나 수정할 때 사용합니다. 예를 들어:nano

cord-ai.tistory.com

version: "3.7"
services:
  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true 		# 보안을 위해 기본 인증 설정 (선택)
      - N8N_BASIC_AUTH_USER=admin 		# 본인이 원하는 아이디
      - N8N_BASIC_AUTH_PASSWORD=pass 	# 본인이 원하는 패스워드
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
      - N8N_SECURE_COOKIE=false
      - GENERIC_TIMEZONE=Asia/Seoul
      - N8N_PORT=5678
      - N8N_HOST=<YOUR_PUBLIC_IP>		# Oracle 인스턴스의 공인 IP 주소
    volumes:
      - ./n8n_data:/home/node/.n8n
더보기

.env 파일을 만들어서 관리하는 방법 (권장)

📝 .env 파일 생성

nano .env

예시 내용

      - N8N_BASIC_AUTH_ACTIVE=true 		# 보안을 위해 기본 인증 설정 (선택)
      - N8N_BASIC_AUTH_USER=admin 		# 본인이 원하는 아이디
      - N8N_BASIC_AUTH_PASSWORD=pass 	# 본인이 원하는 패스워드
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
      - N8N_SECURE_COOKIE=false
      - GENERIC_TIMEZONE=Asia/Seoul
      - N8N_PORT=5678
      - N8N_HOST=<YOUR_PUBLIC_IP>		# Oracle 인스턴스의 공인 IP 주소
 

저장: Ctrl + O → Enter → Ctrl + X

4. Docker Compose 실행

sudo docker compose up -d

or

sudo docker-compuse up -d

🔐 방화벽 설정 (5678 포트 허용)

  1. Oracle Cloud → Networking → VCN → Security Lists
  2. Ingress Rules에서 아래와 같이 추가:
    • Source CIDR: 0.0.0.0/0
    • Destination Port Range: 5678
    • Protocol: TCP
더보기

Oracle Cloud에서 포트 5678 허용 방법(보안 목록 설정)

1. Oracle Cloud 콘솔 접속


2. 왼쪽 상단 ☰ 메뉴 > Compute > 인스턴스(Instances) 이동

  • 현재 n8n을 설치한 인스턴스를 클릭

3. 네트워크 > VNIC 세부정보(VNIC details) 클릭

  • 인스턴스 상세 정보 하단에 위치함

4. 서브넷(Subnet) 클릭

  • VNIC 상세 페이지에서 연결된 서브넷 링크 클릭

5. 보안(Security) 클릭

  • 서브넷 페이지 하단에서 확인 가능

6. 보안 목록 이름 클릭

(예: Default Security List for ...)


7. Security rules 탭에서 인바운드 규칙 추가(Add Ingress Rules) 클릭

입력값:

항목값
Source CIDR 0.0.0.0/0 (모든 IP 허용)
IP Protocol TCP
Destination Port Range 5678
 
  • 설명(Description): Allow n8n Web UI

저장(Save) 클릭

 

접속 URL조건
http://<Public IP>:5678 기본값. 인증서 없음 << 우린 이렇게 접속해야한다
https://<Public IP>:5678 본인이 SSL Reverse Proxy 설정한 경우에만 가능 (예: Nginx + Certbot 등)

 

더보기

🔁 자동 실행 설정 (재부팅 시)

sudo nano /etc/systemd/system/n8n.service
[Unit]
Description=n8n Service
Requires=docker.service
After=docker.service

[Service]
WorkingDirectory=/home/ubuntu/n8n
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

 

PC가 아닌 노트북에서 접속시 접속 확인, 정상

[문제 발생 및 해결 방법]

❗ docker compose 명령어 인식 안됨

  • docker compose가 아니라 docker-compose 명령어로 설치되어 있었음 → sudo apt install docker-compose로 해결

 

❗ 포트 오픈했는데 접속 불가

sudo docker logs <컨테이너 이름>

EACCES: permission denied — 즉, 권한 오류가 날 수 있음.
n8n 컨테이너 내부에서 /home/node/.n8n/config 파일에 접근 권한이 없어서 발생합니다.

더보기

🔍 부가 설명 및 해결방법

  • 에러 메시지에 반복적으로 나타난 permission denied, No encryption key found, command start not found 등은 모두 .n8n/config 접근 불가와 관련된 문제입니다.
  • 컨테이너 내에서 실행되는 프로세스는 루트가 아니라 node 사용자로 실행되기 때문에, 마운트된 볼륨의 권한이 맞지 않으면 오류가 납니다.

 

1. 컨테이너 중지

docker compose down

⚠️ 종료를 권장하는 경우

  • Docker 볼륨 마운트가 변경되었거나, docker-compose.yml을 수정한 후 재시작해야 할 때
  • 설정 파일을 컨테이너가 처음 실행될 때만 읽는 경우 (n8n이 그럴 가능성 있음)

 

2. n8n_data 폴더의 권한 설정 변경

sudo chown -R 1000:1000 ./n8n_data
  • 1000:1000은 n8n Docker 이미지에서 사용하는 기본 유저 (node)의 UID와 GID입니다.
  • ./n8n_data는 현재 위치 기준이니 실제 경로에 따라 조정해 주세요.
  • n8n_data는 Docker 컨테이너에서 /home/node/.n8n으로 마운트되는 경로입니다.

3. Docker Compose 재실행

 

Docker 데몬(서비스)에 접근할 권한이 없다는 Error 발생

1. sudo 붙여서 실행

docker-compose 명령 앞에 sudo를 붙여 실행해 보세요:

sudo docker-compose up -d

대부분의 경우 이렇게만 해도 권한 문제가 해결됩니다.

 

n8n의 설정 파일(config) 퍼미션(권한)이 너무 넓게 열려 있어서 보안상 위험

  • 0644 권한: 소유자는 읽고 쓸 수 있고, 그룹 및 기타 사용자는 읽기만 가능
  • n8n은 이 설정 파일을 소유자만 접근 가능한 0600 권한으로 제한하기를 권장합니다.

권한 직접 변경 (가장 확실하고 간단함)

chmod 600 ./n8n_data/config

만약 경로가 다르면 실제 .n8n/config 파일이 있는 위치를 지정해 주세요.

 

 

웹 브라우저에서 접속 시 "Cannot GET" 오류

Docker Compose 실행후 바로 접속하면 해당 Error 발생. 몇초 지나면 접속된다(F5, 새로고침)

 

마무리 후기

이제는 노트북이든, 데스크탑이든 상관없이 Oracle Cloud 상에 있는 내 n8n 인스턴스에 접속해서 동일한 환경에서 작업할 수 있게 되었다. Webhook도 설정만 해두면 안정적이고, 언제 어디서든 워크플로우 테스트도 가능하다.

아직 도메인이나 SSL 같은 고급 설정은 안 했지만, 이 정도만으로도 충분히 유용하다. 

 

오늘은 클라우드에 올리는 방법을 소개했지만, 보안 이슈가 굉장히 해결해야할게 많다. 앞으로 관련된 이슈들을 자주 보게될텐데, 해당 내용을 우선적으로 정리해보는 것이 우선이겠다.

 

다음 목표는:

  • ngrok 또는 Cloudflare Tunnel로 도메인 연결(로컬에서 하는 것 아닌 이상은 도메인을 구매하는 수 밖에 없어보인다.)
  • 보안 이슈 관련 내용 정리

https://cord-ai.tistory.com/211

 

뭐가 이렇게 인증 절차가 많은걸까?🥴

자동화의 첫 관문, 왜 이렇게 복잡한 거야?n8n에 Gmail이나 Google Calendar를 연결하려고 했을 때, 혹은 Oracle Cloud에 n8n을 배포하려고 했을 때 느꼈던 첫 감정은 딱 하나였다. "와, 왜 이렇게 해야 할 게

cord-ai.tistory.com