# n8n Self-hosted Docker 명령어 모음

## 현재 상태 보는 법

```
sudo docker ps -a
```

## Docker 종료

```
sudo docker stop n8n
```

## n8n 서버 최신 버전 업데이트

[https://docs.n8n.io/hosting/installation/docker/#setting-timezone](https://docs.n8n.io/hosting/installation/docker/#setting-timezone)

```
# 업데이트
sudo docker pull docker.n8n.io/n8nio/n8n

# 중지
sudo docker stop n8n

# 삭제 (n8n을 삭제 후 다시 실행하기) - 데이터가 삭제되는 건 아닙니다.
sudo docker rm n8n

# 다시 Docker 실행
sudo docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Seoul" \
 -e TZ="Asia/Seoul" \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n:latest
```

## n8n 서버 특정 버전 업데이트

- 아직 stable이 아닌 베타 pre-release된 버전을 쓰고 싶다면 아래 처럼 하면 된다.

```
# 업데이트
sudo docker pull docker.n8n.io/n8nio/n8n:1.88.0

# 중지
sudo docker stop n8n

# 삭제 (n8n을 삭제 후 다시 실행하기) - 데이터가 삭제되는 건 아님. 걱정ㄴㄴ
sudo docker rm n8n

# 다시 Docker 실행
sudo docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Seoul" \
 -e TZ="Asia/Seoul" \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n:1.88.0
```

## n8n Docker 실행 명령어

```
# Start the container
docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Seoul" \
 -e TZ="Asia/Seoul" \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n:latest
```

명령어 의미 (chatGPT)

```
이 명령어는 Docker를 사용해 n8nio/n8n:latest 이미지를 실행하는 방식인데, 각 옵션의 의미를 하나씩 쉽게 설명해줄게! 😊

1. docker run
	•	새 컨테이너를 실행하라는 명령어야.

2. -it
	•	인터랙티브 모드를 활성화.
	•	-i: 컨테이너에 입력을 보낼 수 있게.
	•	-t: 터미널을 연결해서 명령어를 실행할 수 있게.

3. --rm
	•	컨테이너 실행이 끝나면 자동으로 삭제하라는 뜻이야.
	•	디스크 공간 낭비 방지에 유용하지.
	•	컨테이너를 테스트로 실행할 때 주로 사용해.

4. --name n8n
	•	컨테이너의 이름을 n8n으로 지정해.
	•	기본적으로 Docker는 무작위 이름을 생성하는데, 여기서는 n8n이라는 이름으로 관리하기 쉽게 만들어.

5. -p 5678:5678
	•	포트 매핑 설정.
	•	호스트 머신(네 컴퓨터)의 5678 포트를 컨테이너 안의 5678 포트와 연결해.
	•	즉, 네 컴퓨터에서 http://localhost:5678로 접속하면 컨테이너 안의 n8n 서비스에 접속할 수 있어.

6. -e GENERIC_TIMEZONE="Asia/Seoul"
	•	컨테이너의 환경 변수로 GENERIC_TIMEZONE="Asia/Seoul"을 설정.
	•	n8n에서 사용할 표준 시간대를 한국 시간으로 설정하기 위한 옵션.

7. -e TZ="Asia/Seoul"
	•	컨테이너의 환경 변수로 TZ="Asia/Seoul"을 설정.
	•	컨테이너의 시스템 시간대를 한국 시간으로 맞추는 옵션.
	•	위의 GENERIC_TIMEZONE과 비슷하지만, Docker의 기본 시간대 설정과 관련 있어.

8. -v n8n_data:/home/node/.n8n
	•	볼륨 마운트 설정.
	•	컨테이너 안의 /home/node/.n8n 디렉터리를 호스트의 n8n_data 볼륨과 연결.
	•	이 설정 덕분에 데이터가 컨테이너를 삭제해도 유지돼.
	•	예: n8n의 워크플로우 설정 데이터가 여기 저장돼.

9. n8nio/n8n:latest
	•	실행할 Docker 이미지 이름.
	•	Docker Hub에서 n8nio/n8n:latest 이미지를 가져와 실행해.

요약된 동작
	1.	n8nio/n8n:latest 이미지를 가져와 실행.
	2.	컨테이너 이름은 n8n.
	3.	호스트의 포트 5678을 컨테이너의 포트 5678과 연결.
	4.	시간대를 한국 시간(Asia/Seoul)으로 설정.
	5.	데이터 저장소를 n8n_data 볼륨으로 연결.
	6.	컨테이너 실행 종료 후 자동으로 삭제.

이 명령어를 실행하면 브라우저에서 http://localhost:5678로 접속해 n8n을 바로 사용할 수 있어! 🚀
```

웹훅URL, SMTP 쓰는 경우 (선택사항)

```
sudo docker run -it --restart unless-stopped --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n \
-e WEBHOOK_URL="https://datapopcorn.win" \
-e N8N_SMTP_HOST="smtp.gmail.com" \
-e N8N_SMTP_PORT=465 \
-e N8N_SMTP_USER="datapopcorn@gmail.com" \
-e N8N_SMTP_PASS="****" \
-e N8N_SMTP_SENDER="datapopcorn@gmail.com" \
-e N8N_SMTP_SECURE="true" \
-e N8N_SMTP_SSL="true" \
-e GENERIC_TIMEZONE="Asia/Seoul" \
-d docker.n8n.io/n8nio/n8n
```

---

## Docker 종료 알림 웹훅 (심화)

- Docker의 비정상적 종료를 알림받기 위해 5분 단위로 Docker의 상태를 체크하는 웹훅 시스템을 만듬.

check_docker_status.sh

```
#!/bin/bash

# 컨테이너 이름을 변수로 지정
container_name="n8n"

# 컨테이너 상태를 확인
container_status=$(docker inspect --format "{{.State.Status}}" $container_name)

# 컨테이너가 정상적으로 실행 중이지 않으면 디스코드 웹훅으로 알림 전송
if [ "$container_status" != "running" ]; then
    curl -X POST -H 'Content-Type: application/json' \
    --data '{"content":"Docker 컨테이너 '"$container_name"'가 비정상 종료되었습니다."}' \
    https://discord.com/api/webhooks/1300104950965080196/****
fi
```

- 위 sh을 아래 내용에 맞게 실행하며 작성하기.

```
touch check_docker_status.sh
nano check_docker_status.sh
cat check_docker_status.sh

chmod +x check_docker_status.sh
sudo ./check_docker_status.sh
```

```
# crontab 편집
crontab -e

# crontab 리스트 확인
crontab -l 
```

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094620_TEihGHkNYLtJNhB4za?q=80&s=1280x180&t=outside&f=webp)

- 실제 작동 예시

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/094621_nevabqkmnSzLVdbsjg?q=80&s=1280x180&t=outside&f=webp)

For the site tree, see the [root Markdown](https://slashpage.com/n8n-guide.md).
