Locate docker containers:
docker ps
You should see Caddy reverse proxy and N8N container.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d3a13c59a08 n8nio/n8n "tini -- /docker-ent…" 13 minutes ago Up 6 minutes 0.0.0.0:5678->5678/tcp, [::]:5678->5678/tcp n8n
8917b5af4d16 caddy:latest "caddy run --config …" 4 weeks ago Up 37 minutes 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 443/udp, 2019/tcp n8n-docker-caddy-caddy-1
Locate volume data:
root@docker-n8n-droplet:~/.n8n# docker volume ls
DRIVER VOLUME NAME
local caddy_data
local n8n_data
In my case data is located at n8n_data.
Backup it up (replace n8n_data with your volume name):
docker run --rm -v n8n_data:/data -v "$HOME/n8n-volume-backup:/backup" alpine sh -c "cd /data && tar czf /backup/n8n_data_backup.tar.gz ."
Stop N8N Container
docker stop <container_id>
Remove the old N8N container (doesn’t remove data):
docker rm <container_id>
WARNING: Do not remove Caddy container, Caddy is a web server which acts as reverse proxy n8n container.
Create docker-compose.yml inside ~/.n8n folder.
mkdir ~/.n8n
Place this inside docker-compose.yml:
version: "3.7"
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.domain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.domain.com/
- GENERIC_TIMEZONE=Europe/Belgrade
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
external: true
Replace n8n_data with the name of your volume, replace n8n.domain.com with your actual domain name.
Download latest N8N
cd ~/.n8n
docker compose pull
Run N8N
cd ~/n8n
docker compose up -d
Fix Caddy IP
The IP of docker container for N8N will change, if inside your Caddyfile you have an IP set, instead of a hostname, this need to be changed.
From docker ps get container ID for Caddy. Run:
docker exec -it <container_id> sh
vi /etc/caddy/Caddyfile
Use this:
n8n.domain.com {
reverse_proxy http://n8n:5678 {
flush_interval -1
}
}
Usually instead of n8n you will see the IP.
Put in n8n.
Restart Caddy
docker restart <container_id>
Reconnect docker network
docker network create n8n_net
docker network connect n8n_net <n8n_container_id>
docker network connect n8n_net <caddy_container_id>
This should help update N8N that is running inside a docker on any setup 🙂
If you run into questions of issues you can leave a comment or contact me. Thanks.
Leave a Reply