인공지능과 오토메이션/Automation

Hostinger VPS n8n 원클릭 설치 가이드 - 월 $5로 간단하게!

토니치코 2025. 9. 8. 16:21

Hostinger VPS에서 n8n 워크플로우 자동화 도구 설치 가이드

1. 개요

본 가이드는 Hostinger VPS에서 n8n 워크플로우 자동화 도구를 Docker를 사용하여 완전 자동으로 설치하는 방법을 설명합니다. 

💡 n8n이란?

n8n은 강력한 워크플로우 자동화 도구입니다. 다양한 서비스와 앱을 연결하여 반복적인 작업을 자동화할 수 있습니다. 예를 들어:

  • Gmail에서 새 메일이 오면 Slack으로 알림 보내기
  • 구글 시트 데이터를 자동으로 데이터베이스에 동기화
  • 웹사이트 폼 제출 시 자동으로 CRM에 고객 정보 추가
  • 소셜 미디어 게시물을 여러 플랫폼에 동시 업로드

🎯 Hostinger 원클릭 설치의 장점

  • 초간단 설치: 클릭 몇 번으로 완료 (5-10분)
  • 저렴한 비용: 월 $5 KVM 2 플랜으로 충분
  • 완전한 스택: Docker + PostgreSQL + Redis + SSL 자동 구성
  • 큐 모드 지원: 고성능 워크플로우 처리
  • 관리 편의성: 업데이트와 백업이 간단

📝 단계별 설치 과정

Hostinger VPS  구매 페이지 접속

다음 링크로 이동합니다:

서버 로케이션을 선택합니다. 한국 사용자라 아시아-태평양 지역 (싱가포르, 도쿄 등)을 찾았는데 말레이지아가 최선이네요 ㅠ 

 

 2 운영 체제 선택

"Choose an operating system" 섹션에서 "Application"을 선택합니다.

일반적인 Ubuntu나 CentOS가 아닌, 사전 구성된 애플리케이션 템플릿을 사용할 것입니다.

 

n8n 애플리케이션 선택

"Developer Tools" 섹션을 찾아서 "n8n"을 선택합니다.

두 가지 옵션이 있을 수 있습니다:

  • Ubuntu 24.04 with n8n: 기본 버전
  • Ubuntu 24.04 with n8n (queue mode): 큐 모드 (성능 향상) ← 추천!

 

VPS 플랜 선택

KVM 2 플랜 월 $6.99을 추천합니다:

  • CPU: 2 vCore
  • RAM: 8GB
  • 스토리지: 100GB NVMe
  • 대역폭: 8TB

 

KVM 1도 개인 사용이나 소규모 팀에는 충분한 성능이지만... 

5 결제 및 배포 대기

결제를 완료하면 VPS 배포가 자동으로 시작됩니다.

배포 시간: 약 5-10분 소요

Hostinger 대시보드에서 배포 진행 상황을 확인할 수 있습니다.

6 배포 완료 후 접속

배포가 완료되면 다음 정보를 받게 됩니다:

  • VPS IP 주소
  • 루트 패스워드
  • n8n 접속 URL

웹 브라우저에서 다음과 같이 접속합니다:

https://n8n.[your-vps-hostname]

⚙️ 설치 후 초기 설정

🌐 n8n 웹 인터페이스 접속

처음 접속하면 관리자 계정 생성 화면이 나타납니다:

  • 이메일: 관리자 이메일 주소 입력
  • 이름: 표시될 이름 입력
  • 패스워드: 강력한 패스워드 설정 (최소 8자, 대소문자+숫자+특수문자)

🔐 기본 보안 설정

  • 2FA 활성화: 설정 메뉴에서 이중 인증 설정 권장
  • 워크플로우 접근 권한: 필요시 팀원 초대 및 권한 설정
  • 웹훅 보안: 외부에서 접근하는 웹훅에 인증 추가

🚄 큐 모드 (Queue Mode) 설명

큐 모드란?

큐 모드는 워크플로우를 비동기적으로 처리하여 성능을 크게 향상시키는 기능입니다.

🎯 성능상 장점:

  • 병렬 처리: 여러 워크플로우를 동시에 실행
  • 부하 분산: 워커들이 작업을 나누어 처리
  • 안정성 향상: 하나의 워크플로우 오류가 전체에 영향주지 않음
  • 확장성: 필요시 워커 수를 늘려 처리 능력 증대

기본 구성

Hostinger n8n 템플릿은 기본으로 3개의 워커가 설정됩니다:

  • 메인 n8n 인스턴스: 웹 인터페이스 및 관리
  • 워커 1, 2, 3: 실제 워크플로우 실행
  • Redis: 큐 메시지 브로커
  • PostgreSQL: 데이터베이스

🛠️ 주요 특징 및 관리

✅ 자동 구성된 기능들

  • Docker 환경: 컨테이너 기반으로 격리된 환경에서 안전하게 실행
  • SSL 인증서: Let's Encrypt 자동 발급 및 갱신
  • PostgreSQL 15: 안정적인 데이터 저장
  • Redis 6: 빠른 캐시 및 큐 처리
  • Traefik 리버스 프록시: 자동 라우팅 및 SSL 관리

🔄 업데이트 방법

SSH로 VPS에 접속한 후 다음 명령어를 실행:

# 최신 버전 다운로드
docker compose pull

# 서비스 중지 및 재시작
docker compose down
docker compose up -d

📈 워커 수 조정

트래픽이 많아지면 워커 수를 늘릴 수 있습니다:

docker compose up -d --scale n8n-worker=5

🎉 마무리

⏱️ 설치 완료!

총 소요 시간: 5-10분

이제 강력한 워크플로우 자동화 도구 n8n을 월 $5로 사용할 수 있습니다!

📚 추가 리소스

💰 비용 절약 팁

Hostinger는 종종 할인 프로모션을 진행합니다. 연간 결제 시 추가 할인을 받을 수 있으니 확인해보세요!

🚀 이제 n8n으로 업무를 자동화하고 시간을 절약해보세요!

 

 

2. 시스템 요구사항

2.1 최소 사양 (5$/month VPS 기준)

항목최소 요구사항권장사항

CPU 1 vCPU 2 vCPU
메모리 1GB RAM 2GB RAM 이상
저장공간 20GB SSD 40GB SSD 이상
운영체제 Ubuntu 20.04 LTS Ubuntu 22.04 LTS

2.2 네트워크 요구사항

  • 고정 IP 주소 (Hostinger VPS 기본 제공)
  • 80, 443 포트 개방 (웹 접속용)
  • 5678 포트 개방 (n8n 기본 포트)
  • 도메인 또는 서브도메인 (선택사항, SSL 인증서용)

 

3. 기타 

3.1 Hostinger VPS 접속

Hostinger 관리 패널에서 VPS에 SSH로 접속하거나, 터미널을 통해 접속합니다.

ssh root@your-vps-ip

3.2 시스템 업데이트

apt update && apt upgrade -y apt install -y curl wget git nano htop

3.3 방화벽 설정

ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw allow 5678/tcp ufw --force enable

4. Docker 및 Docker Compose 설치

4.1 Docker 설치

curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh systemctl start docker systemctl enable docker

4.2 Docker Compose 설치

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

4.3 설치 확인

docker --version docker-compose --version

5. n8n 자동 설치 스크립트

5.1 작업 디렉토리 생성

mkdir -p /opt/n8n cd /opt/n8n

5.2 환경 설정 파일 생성

환경 변수 파일(.env)을 생성합니다:

cat > .env << 'EOF' # n8n 설정 N8N_BASIC_AUTH_ACTIVE=true N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD=change_this_password N8N_HOST=0.0.0.0 N8N_PORT=5678 N8N_PROTOCOL=http WEBHOOK_URL=http://your-domain-or-ip:5678 # 데이터베이스 설정 POSTGRES_USER=n8n POSTGRES_PASSWORD=n8n_db_password POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=n8n POSTGRES_NON_ROOT_PASSWORD=n8n_db_password # Redis 설정 REDIS_PASSWORD=redis_password # 큐 설정 EXECUTIONS_MODE=queue QUEUE_BULL_REDIS_HOST=redis QUEUE_BULL_REDIS_PASSWORD=redis_password QUEUE_HEALTH_CHECK_ACTIVE=true # 타임존 GENERIC_TIMEZONE=Asia/Seoul TZ=Asia/Seoul EOF
중요: .env 파일의 패스워드들을 반드시 강력한 패스워드로 변경하세요. 또한 WEBHOOK_URL을 실제 도메인 또는 IP로 수정하세요.

5.3 Docker Compose 파일 생성

완전한 n8n 환경을 구성하는 docker-compose.yml 파일을 생성합니다:

cat > docker-compose.yml << 'EOF' version: '3.8' services: traefik: image: traefik:v2.10 container_name: root-traefik-1 restart: unless-stopped ports: - "80:80" - "443:443" - "8080:8080" command: - --api.dashboard=true - --api.insecure=true - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: - n8n-network postgres: image: postgres:15 container_name: n8n-postgres restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_NON_ROOT_USER: ${POSTGRES_NON_ROOT_USER} POSTGRES_NON_ROOT_PASSWORD: ${POSTGRES_NON_ROOT_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh healthcheck: test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}'] interval: 5s timeout: 5s retries: 10 networks: - n8n-network redis: image: redis:6-alpine container_name: redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD} volumes: - redis_data:/data healthcheck: test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] interval: 5s timeout: 5s retries: 10 networks: - n8n-network n8n: image: docker.n8n.io/n8nio/n8n container_name: root-n8n-1 restart: unless-stopped environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE} - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER} - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD} - N8N_HOST=${N8N_HOST} - N8N_PORT=${N8N_PORT} - N8N_PROTOCOL=${N8N_PROTOCOL} - WEBHOOK_URL=${WEBHOOK_URL} - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - TZ=${TZ} - EXECUTIONS_MODE=${EXECUTIONS_MODE} - QUEUE_BULL_REDIS_HOST=${QUEUE_BULL_REDIS_HOST} - QUEUE_BULL_REDIS_PASSWORD=${QUEUE_BULL_REDIS_PASSWORD} - QUEUE_HEALTH_CHECK_ACTIVE=${QUEUE_HEALTH_CHECK_ACTIVE} ports: - "5678:5678" volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy redis: condition: service_healthy labels: - traefik.enable=true - traefik.http.routers.n8n.rule=PathPrefix("/") - traefik.http.services.n8n.loadbalancer.server.port=5678 networks: - n8n-network n8n-worker-1: image: docker.n8n.io/n8nio/n8n container_name: root-n8n-worker-1 restart: unless-stopped command: worker environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - TZ=${TZ} - EXECUTIONS_MODE=${EXECUTIONS_MODE} - QUEUE_BULL_REDIS_HOST=${QUEUE_BULL_REDIS_HOST} - QUEUE_BULL_REDIS_PASSWORD=${QUEUE_BULL_REDIS_PASSWORD} - QUEUE_HEALTH_CHECK_ACTIVE=${QUEUE_HEALTH_CHECK_ACTIVE} volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - n8n-network n8n-worker-2: image: docker.n8n.io/n8nio/n8n container_name: root-n8n-worker-2 restart: unless-stopped command: worker environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - TZ=${TZ} - EXECUTIONS_MODE=${EXECUTIONS_MODE} - QUEUE_BULL_REDIS_HOST=${QUEUE_BULL_REDIS_HOST} - QUEUE_BULL_REDIS_PASSWORD=${QUEUE_BULL_REDIS_PASSWORD} - QUEUE_HEALTH_CHECK_ACTIVE=${QUEUE_HEALTH_CHECK_ACTIVE} volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - n8n-network n8n-worker-3: image: docker.n8n.io/n8nio/n8n container_name: root-n8n-worker-3 restart: unless-stopped command: worker environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - TZ=${TZ} - EXECUTIONS_MODE=${EXECUTIONS_MODE} - QUEUE_BULL_REDIS_HOST=${QUEUE_BULL_REDIS_HOST} - QUEUE_BULL_REDIS_PASSWORD=${QUEUE_BULL_REDIS_PASSWORD} - QUEUE_HEALTH_CHECK_ACTIVE=${QUEUE_HEALTH_CHECK_ACTIVE} volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - n8n-network volumes: postgres_data: redis_data: n8n_data: networks: n8n-network: driver: bridge EOF

5.4 데이터베이스 초기화 스크립트 생성

cat > init-data.sh << 'EOF' #!/bin/bash set -e psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL CREATE USER $POSTGRES_NON_ROOT_USER WITH PASSWORD '$POSTGRES_NON_ROOT_PASSWORD'; GRANT ALL PRIVILEGES ON DATABASE $POSTGRES_DB TO $POSTGRES_NON_ROOT_USER; GRANT ALL PRIVILEGES ON SCHEMA public TO $POSTGRES_NON_ROOT_USER; EOSQL EOF chmod +x init-data.sh

6. 서비스 구성 및 실행

6.1 n8n 서비스 실행

cd /opt/n8n docker-compose up -d

6.2 서비스 상태 확인

docker-compose ps docker-compose logs -f
정보: 모든 서비스가 정상적으로 시작되기까지 2-3분 정도 소요될 수 있습니다. 특히 PostgreSQL과 Redis가 완전히 시작된 후 n8n 서비스들이 시작됩니다.

7. 설치 확인 방법

7.1 Docker 컨테이너 상태 확인

docker ps

다음과 같은 컨테이너들이 실행되고 있어야 합니다:

  • root-n8n-1 (메인 n8n 서비스)
  • root-n8n-worker-1, root-n8n-worker-2, root-n8n-worker-3 (워커들)
  • root-traefik-1 (리버스 프록시)
  • redis (캐시/메시지 브로커)
  • n8n-postgres (데이터베이스)

7.2 네트워크 연결 테스트

curl -I http://localhost:5678 curl -I http://your-server-ip:5678

7.3 시스템 리소스 확인

htop docker stats

8. 접속 및 초기 설정

8.1 웹 인터페이스 접속

브라우저에서 다음 주소로 접속합니다:

http://your-server-ip:5678

8.2 기본 인증

.env 파일에서 설정한 기본 인증 정보로 로그인합니다:

  • 사용자명: admin (또는 .env에서 설정한 값)
  • 패스워드: change_this_password (반드시 변경하세요)

8.3 초기 설정

  1. 관리자 계정 생성 및 설정
  2. 이메일 설정 (선택사항)
  3. 웹훅 URL 확인 및 설정
  4. 첫 번째 워크플로우 생성 테스트

9. 문제 해결 가이드

9.1 일반적인 문제들

컨테이너가 시작되지 않는 경우:

docker-compose logs [service-name] docker-compose down docker-compose up -d

데이터베이스 연결 오류:

# PostgreSQL 컨테이너 상태 확인 docker exec -it n8n-postgres pg_isready -U n8n # 데이터베이스 접속 테스트 docker exec -it n8n-postgres psql -U n8n -d n8n

Redis 연결 오류:

# Redis 컨테이너 상태 확인 docker exec -it redis redis-cli ping

9.2 메모리 부족 문제

1GB RAM VPS에서는 메모리 부족이 발생할 수 있습니다. 이 경우 스왑 파일을 생성합니다:

fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab

9.3 포트 충돌 문제

# 포트 사용 상태 확인 netstat -tulpn | grep :5678 netstat -tulpn | grep :80 # 방화벽 상태 확인 ufw status

10. 유지보수 및 업데이트 방법

10.1 정기 백업

데이터베이스와 n8n 데이터를 정기적으로 백업합니다:

# 백업 디렉토리 생성 mkdir -p /opt/n8n/backups # PostgreSQL 백업 docker exec n8n-postgres pg_dump -U n8n n8n > /opt/n8n/backups/n8n-backup-$(date +%Y%m%d).sql # n8n 데이터 볼륨 백업 docker run --rm -v /opt/n8n_n8n_data:/data -v /opt/n8n/backups:/backup alpine tar czf /backup/n8n-data-$(date +%Y%m%d).tar.gz -C /data .

10.2 시스템 업데이트

# 시스템 패키지 업데이트 apt update && apt upgrade -y # Docker 이미지 업데이트 cd /opt/n8n docker-compose pull docker-compose up -d

10.3 로그 관리

# 로그 확인 docker-compose logs -f --tail=100 # 로그 정리 (디스크 공간 절약) docker system prune -f docker volume prune -f

10.4 성능 모니터링

# 시스템 리소스 모니터링 htop df -h docker stats # n8n 워커 상태 확인 docker-compose ps

10.5 자동 시작 설정

시스템 재부팅 시 자동으로 n8n이 시작되도록 설정합니다:

# systemd 서비스 파일 생성 cat > /etc/systemd/system/n8n.service << 'EOF' [Unit] Description=n8n Workflow Automation After=docker.service Requires=docker.service [Service] Type=oneshot RemainAfterExit=true WorkingDirectory=/opt/n8n ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down [Install] WantedBy=multi-user.target EOF # 서비스 활성화 systemctl enable n8n.service systemctl start n8n.service
완료: 이제 Hostinger VPS에서 n8n 워크플로우 자동화 도구가 성공적으로 설치되고 실행됩니다. 웹 브라우저에서 http://your-server-ip:5678로 접속하여 n8n을 사용할 수 있습니다.

 

추가 지원: 설치 과정에서 문제가 발생하거나 추가적인 설정이 필요한 경우, n8n 공식 문서(https://docs.n8n.io)를 참고하거나 커뮤니티 포럼을 활용하시기 바랍니다.