InfoGrab Docs

Hetzner 클라우드에서 n8n 호스팅

요약

이 호스팅 가이드는 Hetzner 클라우드 서버에서 n8n을 셀프 호스팅하는 방법을 안내합니다. n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다: n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. n8n은 매주 새로운 마이너 버전을 릴리스합니다.

이 호스팅 가이드는 Hetzner 클라우드 서버에서 n8n을 셀프 호스팅하는 방법을 안내합니다. 다음을 사용합니다:

  • Caddy(리버스 프록시)를 사용하여 인터넷에서 서버에 접근할 수 있도록 합니다.
  • Docker Compose를 사용하여 애플리케이션 구성 요소와 그 상호 작용 방식을 생성하고 정의합니다.
셀프 호스팅 사전 지식 요구사항

n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다:

  • 서버 및 컨테이너 설정 및 구성
  • 애플리케이션 리소스 관리 및 확장
  • 서버 및 애플리케이션 보안
  • n8n 구성

n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. 실수하면 데이터 손실, 보안 문제, 다운타임이 발생할 수 있습니다. 서버 관리 경험이 없다면 n8n Cloud를 권장합니다.

안정(Stable) 및 베타(Beta) 버전

n8n은 매주 새로운 마이너 버전을 릴리스합니다. stable 버전은 프로덕션 사용을 위한 것입니다. beta는 가장 최근 릴리스입니다. beta 버전은 불안정할 수 있습니다. 문제를 보고하려면 포럼을 이용하세요.

현재 stable: 2.14.2 현재 beta: 2.15.0

서버 생성#

  1. Hetzner Cloud Console에 로그인합니다.
  2. 서버를 호스팅할 프로젝트를 선택하거나 + NEW PROJECT를 선택하여 새 프로젝트를 생성합니다.
  3. 추가하려는 프로젝트 타일에서 + CREATE SERVER를 선택합니다.

대부분의 설정은 필요에 맞게 변경할 수 있지만, 이 가이드는 Docker를 사용하여 애플리케이션을 실행하므로 Image 섹션에서 APPS 탭의 "Docker CE"를 선택합니다.

유형

서버 생성 시 Hetzner에서 플랜을 선택하라는 메시지가 표시됩니다. 대부분의 사용량 수준에서는 CPX11 유형으로 충분합니다.

SSH 키

Hetzner에서는 SSH와 비밀번호 기반 인증 중 선택할 수 있습니다. SSH가 더 안전합니다. 이 가이드의 나머지 부분은 SSH를 사용한다고 가정합니다.

서버에 로그인#

이 가이드의 나머지 부분은 SSH를 사용하여 터미널로 서버에 로그인해야 합니다. 자세한 내용은 SSH/rsync/BorgBackup을 통한 접근을 참조하세요. 프로젝트의 서버 목록에서 공개 IP를 찾을 수 있습니다.

Docker Compose 설치#

Hetzner Docker 앱 이미지에는 Docker Compose가 설치되어 있지 않습니다. 다음 명령으로 설치합니다:

apt update && apt -y upgrade
apt install docker-compose-plugin

설정 리포지터리 클론#

Docker Compose, n8n, Caddy에는 일련의 폴더와 설정 파일이 필요합니다. 서버의 루트 사용자 폴더에 이 리포지터리에서 이 파일들을 클론할 수 있습니다. 다음 단계에서는 변경할 파일과 변경 내용을 알려줍니다.

다음 명령으로 리포지터리를 클론합니다:

git clone https://github.com/n8n-io/n8n-docker-caddy.git

클론한 리포지터리의 루트 디렉터리로 변경합니다:

cd n8n-docker-caddy

기본 폴더 및 파일#

호스트 운영 체제(서버)는 생성한 두 폴더를 Docker 컨테이너에 복사하여 Docker에서 사용할 수 있도록 합니다. 두 폴더는 다음과 같습니다:

  • caddy_config: Caddy 설정 파일을 보관합니다.
  • local_files: n8n을 사용하여 업로드하거나 추가하는 파일을 위한 폴더입니다.

Docker 볼륨 생성#

재시작 간에 Caddy 캐시를 유지하고 시작 시간을 단축하려면 Docker가 재시작 간에 재사용하는 Docker 볼륨을 생성합니다:

docker volume create caddy_data

n8n 데이터를 위한 Docker 볼륨을 생성합니다:

sudo docker volume create n8n_data

DNS 설정#

n8n은 일반적으로 서브도메인에서 작동합니다. DNS 제공업체에서 서브도메인에 대한 DNS 레코드를 생성하고 서버의 IP 주소를 가리키도록 합니다. 정확한 단계는 DNS 제공업체에 따라 다르지만, 일반적으로 n8n 서브도메인에 대한 새 "A" 레코드를 생성해야 합니다. DigitalOcean은 DNS 용어, 구성 요소 및 개념 소개를 제공합니다.

포트 열기#

n8n은 웹 애플리케이션으로 실행되므로 서버는 비보안 트래픽을 위해 포트 80, 보안 트래픽을 위해 포트 443에서 들어오는 트래픽에 접근할 수 있어야 합니다.

다음 두 명령을 실행하여 서버의 방화벽에서 다음 포트를 엽니다:

sudo ufw allow 80
sudo ufw allow 443

n8n 구성#

n8n은 Docker 컨테이너에서 실행 중인 애플리케이션에 전달할 몇 가지 환경 변수가 필요합니다. 예제 .env 파일에는 고유한 값으로 교체해야 하는 플레이스홀더가 포함되어 있습니다.

다음 명령으로 파일을 엽니다:

nano .env

파일에는 변경 사항을 안내하는 인라인 주석이 포함되어 있습니다.

n8n 환경 변수에 대한 자세한 내용은 환경 변수를 참조하세요.

Docker Compose 파일#

Docker Compose 파일(docker-compose.yml)은 이 경우 Caddy와 n8n인 애플리케이션에 필요한 서비스를 정의합니다.

  • Caddy 서비스 정의는 사용하는 포트와 컨테이너에 복사할 로컬 볼륨을 정의합니다.
  • n8n 서비스 정의는 사용하는 포트, n8n 실행에 필요한 환경 변수(일부는 .env 파일에 정의됨), 컨테이너에 복사할 볼륨을 정의합니다.

Docker Compose 파일은 .env 파일에 설정된 환경 변수를 사용하므로 내용을 변경할 필요가 없지만, 다음 명령으로 확인할 수 있습니다:

nano docker-compose.yml

Caddy 구성#

Caddy는 어떤 도메인을 서비스해야 하는지, 외부 세계에 어떤 포트를 노출해야 하는지 알아야 합니다. caddy_config 폴더의 Caddyfile 파일을 편집합니다.

nano caddy_config/Caddyfile

플레이스홀더 서브도메인을 자신의 것으로 변경합니다. 서브도메인 이름을 n8n으로 지정하는 단계를 따랐다면 전체 도메인은 n8n.example.com과 유사합니다. reverse_proxy 설정의 n8n은 Caddy에게 docker-compose.yml 파일에 정의된 서비스 정의를 사용하라고 알려줍니다:

n8n.<domain>.<suffix> {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

Docker Compose 시작#

다음 명령으로 n8n과 Caddy를 시작합니다:

docker compose up -d

몇 분이 걸릴 수 있습니다.

설정 테스트#

브라우저에서 앞서 정의한 서브도메인과 도메인 이름으로 구성된 URL을 엽니다. 앞서 정의한 사용자 이름과 비밀번호를 입력하면 n8n에 접근할 수 있습니다.

n8n 및 Caddy 중지#

다음 명령으로 n8n과 Caddy를 중지할 수 있습니다:

sudo docker compose stop

업데이트#

Docker Compose 파일을 사용하여 n8n을 실행하는 경우 다음 단계에 따라 n8n을 업데이트하세요:

# docker compose 파일이 있는 디렉토리로 이동
cd </path/to/your/compose/file/directory>

# 최신 버전 pull
docker compose pull

# 이전 버전 중지 및 제거
docker compose down

# 컨테이너 시작
docker compose up -d

다음 단계#

Hetzner 클라우드에서 n8n 호스팅

원문 보기
요약

이 호스팅 가이드는 Hetzner 클라우드 서버에서 n8n을 셀프 호스팅하는 방법을 안내합니다. n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다: n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. n8n은 매주 새로운 마이너 버전을 릴리스합니다.

이 호스팅 가이드는 Hetzner 클라우드 서버에서 n8n을 셀프 호스팅하는 방법을 안내합니다. 다음을 사용합니다:

  • Caddy(리버스 프록시)를 사용하여 인터넷에서 서버에 접근할 수 있도록 합니다.
  • Docker Compose를 사용하여 애플리케이션 구성 요소와 그 상호 작용 방식을 생성하고 정의합니다.
셀프 호스팅 사전 지식 요구사항

n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다:

  • 서버 및 컨테이너 설정 및 구성
  • 애플리케이션 리소스 관리 및 확장
  • 서버 및 애플리케이션 보안
  • n8n 구성

n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. 실수하면 데이터 손실, 보안 문제, 다운타임이 발생할 수 있습니다. 서버 관리 경험이 없다면 n8n Cloud를 권장합니다.

안정(Stable) 및 베타(Beta) 버전

n8n은 매주 새로운 마이너 버전을 릴리스합니다. stable 버전은 프로덕션 사용을 위한 것입니다. beta는 가장 최근 릴리스입니다. beta 버전은 불안정할 수 있습니다. 문제를 보고하려면 포럼을 이용하세요.

현재 stable: 2.14.2 현재 beta: 2.15.0

서버 생성#

  1. Hetzner Cloud Console에 로그인합니다.
  2. 서버를 호스팅할 프로젝트를 선택하거나 + NEW PROJECT를 선택하여 새 프로젝트를 생성합니다.
  3. 추가하려는 프로젝트 타일에서 + CREATE SERVER를 선택합니다.

대부분의 설정은 필요에 맞게 변경할 수 있지만, 이 가이드는 Docker를 사용하여 애플리케이션을 실행하므로 Image 섹션에서 APPS 탭의 "Docker CE"를 선택합니다.

유형

서버 생성 시 Hetzner에서 플랜을 선택하라는 메시지가 표시됩니다. 대부분의 사용량 수준에서는 CPX11 유형으로 충분합니다.

SSH 키

Hetzner에서는 SSH와 비밀번호 기반 인증 중 선택할 수 있습니다. SSH가 더 안전합니다. 이 가이드의 나머지 부분은 SSH를 사용한다고 가정합니다.

서버에 로그인#

이 가이드의 나머지 부분은 SSH를 사용하여 터미널로 서버에 로그인해야 합니다. 자세한 내용은 SSH/rsync/BorgBackup을 통한 접근을 참조하세요. 프로젝트의 서버 목록에서 공개 IP를 찾을 수 있습니다.

Docker Compose 설치#

Hetzner Docker 앱 이미지에는 Docker Compose가 설치되어 있지 않습니다. 다음 명령으로 설치합니다:

apt update && apt -y upgrade
apt install docker-compose-plugin

설정 리포지터리 클론#

Docker Compose, n8n, Caddy에는 일련의 폴더와 설정 파일이 필요합니다. 서버의 루트 사용자 폴더에 이 리포지터리에서 이 파일들을 클론할 수 있습니다. 다음 단계에서는 변경할 파일과 변경 내용을 알려줍니다.

다음 명령으로 리포지터리를 클론합니다:

git clone https://github.com/n8n-io/n8n-docker-caddy.git

클론한 리포지터리의 루트 디렉터리로 변경합니다:

cd n8n-docker-caddy

기본 폴더 및 파일#

호스트 운영 체제(서버)는 생성한 두 폴더를 Docker 컨테이너에 복사하여 Docker에서 사용할 수 있도록 합니다. 두 폴더는 다음과 같습니다:

  • caddy_config: Caddy 설정 파일을 보관합니다.
  • local_files: n8n을 사용하여 업로드하거나 추가하는 파일을 위한 폴더입니다.

Docker 볼륨 생성#

재시작 간에 Caddy 캐시를 유지하고 시작 시간을 단축하려면 Docker가 재시작 간에 재사용하는 Docker 볼륨을 생성합니다:

docker volume create caddy_data

n8n 데이터를 위한 Docker 볼륨을 생성합니다:

sudo docker volume create n8n_data

DNS 설정#

n8n은 일반적으로 서브도메인에서 작동합니다. DNS 제공업체에서 서브도메인에 대한 DNS 레코드를 생성하고 서버의 IP 주소를 가리키도록 합니다. 정확한 단계는 DNS 제공업체에 따라 다르지만, 일반적으로 n8n 서브도메인에 대한 새 "A" 레코드를 생성해야 합니다. DigitalOcean은 DNS 용어, 구성 요소 및 개념 소개를 제공합니다.

포트 열기#

n8n은 웹 애플리케이션으로 실행되므로 서버는 비보안 트래픽을 위해 포트 80, 보안 트래픽을 위해 포트 443에서 들어오는 트래픽에 접근할 수 있어야 합니다.

다음 두 명령을 실행하여 서버의 방화벽에서 다음 포트를 엽니다:

sudo ufw allow 80
sudo ufw allow 443

n8n 구성#

n8n은 Docker 컨테이너에서 실행 중인 애플리케이션에 전달할 몇 가지 환경 변수가 필요합니다. 예제 .env 파일에는 고유한 값으로 교체해야 하는 플레이스홀더가 포함되어 있습니다.

다음 명령으로 파일을 엽니다:

nano .env

파일에는 변경 사항을 안내하는 인라인 주석이 포함되어 있습니다.

n8n 환경 변수에 대한 자세한 내용은 환경 변수를 참조하세요.

Docker Compose 파일#

Docker Compose 파일(docker-compose.yml)은 이 경우 Caddy와 n8n인 애플리케이션에 필요한 서비스를 정의합니다.

  • Caddy 서비스 정의는 사용하는 포트와 컨테이너에 복사할 로컬 볼륨을 정의합니다.
  • n8n 서비스 정의는 사용하는 포트, n8n 실행에 필요한 환경 변수(일부는 .env 파일에 정의됨), 컨테이너에 복사할 볼륨을 정의합니다.

Docker Compose 파일은 .env 파일에 설정된 환경 변수를 사용하므로 내용을 변경할 필요가 없지만, 다음 명령으로 확인할 수 있습니다:

nano docker-compose.yml

Caddy 구성#

Caddy는 어떤 도메인을 서비스해야 하는지, 외부 세계에 어떤 포트를 노출해야 하는지 알아야 합니다. caddy_config 폴더의 Caddyfile 파일을 편집합니다.

nano caddy_config/Caddyfile

플레이스홀더 서브도메인을 자신의 것으로 변경합니다. 서브도메인 이름을 n8n으로 지정하는 단계를 따랐다면 전체 도메인은 n8n.example.com과 유사합니다. reverse_proxy 설정의 n8n은 Caddy에게 docker-compose.yml 파일에 정의된 서비스 정의를 사용하라고 알려줍니다:

n8n.<domain>.<suffix> {
    reverse_proxy n8n:5678 {
      flush_interval -1
    }
}

Docker Compose 시작#

다음 명령으로 n8n과 Caddy를 시작합니다:

docker compose up -d

몇 분이 걸릴 수 있습니다.

설정 테스트#

브라우저에서 앞서 정의한 서브도메인과 도메인 이름으로 구성된 URL을 엽니다. 앞서 정의한 사용자 이름과 비밀번호를 입력하면 n8n에 접근할 수 있습니다.

n8n 및 Caddy 중지#

다음 명령으로 n8n과 Caddy를 중지할 수 있습니다:

sudo docker compose stop

업데이트#

Docker Compose 파일을 사용하여 n8n을 실행하는 경우 다음 단계에 따라 n8n을 업데이트하세요:

# docker compose 파일이 있는 디렉토리로 이동
cd </path/to/your/compose/file/directory>

# 최신 버전 pull
docker compose pull

# 이전 버전 중지 및 제거
docker compose down

# 컨테이너 시작
docker compose up -d

다음 단계#