들어가며
이전 글에서 라즈베리파이 5 초기 설정을 마쳤다. 이번 글에서는 Docker를 설치하고 n8n을 셀프 호스팅하는 과정을 정리한다.
n8n은 노코드 워크플로우 자동화 도구다. Zapier나 Make와 비슷하지만, 셀프 호스팅이 가능해서 비용 부담 없이 사용할 수 있다.
Docker 설치
1. 시스템 업데이트
sudo apt update && sudo apt upgrade -y
2. Docker 설치
공식 설치 스크립트를 사용하면 간단하게 설치할 수 있다.
curl -fsSL https://get.docker.com | sh
3. 현재 사용자를 docker 그룹에 추가
기본적으로 docker 명령어는 root 권한이 필요하다. 매번 sudo를 입력하지 않으려면 현재 사용자를 docker 그룹에 추가한다.
sudo usermod -aG docker $USER
4. 재로그인
그룹 변경 사항을 적용하려면 SSH 연결을 끊고 다시 접속해야 한다.
exit
다시 SSH로 접속한 후 현재 사용자가 docker 그룹에 추가되었는지, Docker가 정상 작동하는지 확인한다.
groups
docker --version


버전 정보가 출력되면 설치 완료다.
n8n 설치
1. 프로젝트 폴더 생성
docker-compose.yml 파일을 저장할 폴더를 만든다.
mkdir -p ~/_projects/n8n
cd ~/_projects/n8n
2. docker-compose.yml 작성
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Seoul
- TZ=Asia/Seoul
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
주요 설정:
127.0.0.1:5678:5678: localhost에서만 접속 가능 (외부 직접 접속 차단)GENERIC_TIMEZONE,TZ: 타임존을 서울로 설정n8n_data: 워크플로우 데이터를 Docker 볼륨에 저장
3. n8n 실행
docker compose up -d
-d 옵션은 백그라운드 실행이다. 컨테이너 상태를 확인하려면:
docker ps

n8n 컨테이너가 실행 중이면 성공이다.
n8n 접속
문제: Secure Cookie 에러
처음에 http://라즈베리파이IP:5678로 접속하니 다음 에러가 나왔다.

Your n8n server is configured to use a secure cookie, however you are either visiting this via an insecure URL, or using Safari.
n8n은 기본적으로 HTTPS 접속을 요구한다. HTTP로 접속하면 보안 쿠키 문제로 로그인이 안 된다.
해결 방법들
Secure Cookie 에러를 해결하는 방법은 크게 세 가지로 나눌 수 있다.
1. HTTPS 설정
실제로 HTTPS를 적용하는 방법이다. 외부에서 n8n에 접속하거나, GitHub/Stripe 같은 외부 서비스의 웹훅을 받아야 한다면 이 방법을 사용해야 한다.
| 방법 | 난이도 | 요구사항 |
|---|---|---|
| Cloudflare Tunnel | ⭐ 쉬움 | 도메인 필요 (무료 도메인 가능) |
| Tailscale | ⭐ 쉬움 | 계정만 있으면 됨 |
| Nginx + Let's Encrypt | ⭐⭐ 보통 | 도메인 + 포트포워딩 |
| Traefik | ⭐⭐⭐ 복잡 | 도메인 + 포트포워딩 |
2. 보안 기능 비활성화
n8n의 Secure Cookie 기능 자체를 끄는 방법이다.
| 방법 | 난이도 | 요구사항 |
|---|---|---|
| N8N_SECURE_COOKIE=false | ⭐ 쉬움 | 없음 |
docker-compose.yml의 environment에 추가하면 된다. 간단하지만 보안 기능을 끄는 것이므로 권장하지 않는다.
3. SSH 터널링
localhost로 접속해서 Secure Cookie 검사를 우회하는 방법이다.
| 방법 | 난이도 | 요구사항 |
|---|---|---|
| SSH 터널링 | ⭐ 쉬움 | SSH 접속 가능 |
보안 기능을 유지하면서 추가 설정 없이 사용할 수 있다.
내 상황
나는 집 안 로컬 네트워크에서만 n8n에 접속한다. 외부에서 접속할 일이 없으니 HTTPS 설정까지는 필요 없었다.
왜 SSH 터널링인가?
N8N_SECURE_COOKIE=false로 설정하면 가장 간단하지만, 보안 기능을 끄는 것이라 찝찝했다. SSH 터널링은 보안 기능을 유지하면서도 추가 설정 없이 바로 사용할 수 있어서 선택했다.
SSH 터널링으로 접속하기
데스크탑에서 다음 명령어를 실행한다. (Git Bash 또는 터미널)
ssh -L 5678:localhost:5678 사용자이름@라즈베리파이IP

이 명령어는:
- 데스크탑의 localhost:5678을
- 라즈베리파이의 localhost:5678로 연결한다
SSH 연결이 유지된 상태에서 브라우저로 접속한다.
http://localhost:5678

localhost로 접속하면 n8n이 HTTPS로 인식해서 Secure Cookie 에러가 발생하지 않는다.
왜 127.0.0.1로 바인딩했나?
docker-compose.yml에서 포트를 127.0.0.1:5678:5678로 설정한 이유는 보안 때문이다.
| 설정 | 접속 범위 |
|---|---|
5678:5678 |
같은 네트워크의 모든 기기에서 접속 가능 |
127.0.0.1:5678:5678 |
라즈베리파이 자체에서만 접속 가능 |
SSH 터널링을 통해서만 접속할 수 있게 하면, 같은 네트워크에 있는 다른 기기에서 임의로 접속하는 것을 막을 수 있다.
마치며
라즈베리파이에 n8n 셀프 호스팅을 완료했다. 정리하면:
- Docker 공식 스크립트로 설치
- docker-compose.yml로 n8n 컨테이너 실행
- SSH 터널링으로 Secure Cookie 문제 해결
- 127.0.0.1 바인딩으로 외부 직접 접속 차단
셀프 호스팅의 장점
n8n은 클라우드 버전도 있지만, 셀프 호스팅하면 몇 가지 장점이 있다.
| 항목 | 클라우드 | 셀프 호스팅 |
|---|---|---|
| 비용 | 월 $24~ (Starter 기준) | 무료 |
| 실행 횟수 | 플랜별 제한 | 무제한 |
| 데이터 저장 | n8n 서버 | 내 라즈베리파이 |
| 커스터마이징 | 제한적 | 자유로움 |
라즈베리파이는 저전력으로 24시간 구동이 가능하니, 개인용 자동화 서버로 딱 맞는 조합이다.
다음 글에서는 이렇게 구축한 n8n으로 실제 자동화 워크플로우를 만들어본다.
'Infra' 카테고리의 다른 글
| 라즈베리파이에 셀프호스팅한 n8n으로 매일 아침 뉴스 요약 받기 (0) | 2026.05.21 |
|---|---|
| 라즈베리파이 5 초기 설정 가이드 (0) | 2026.05.20 |