N8n Self-hosted Docker コマンドのコレクション

現在の状態を見る方法

sudo docker ps -a

Dockerを終了

sudo docker stop n8n

N8nサーバーの最新バージョンを更新

# 업데이트
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 サーバー固有のバージョンの更新

まだ安定していないベータプリリリースされたバージョンを書きたい場合は、以下のようにすればよい。
# 업데이트
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終了通知Webフック(深化)

Dockerの異常終了を通知するために5分単位でDockerの状態をチェックするWebフックシステムを作成します。
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 
実際の動作例