Guide Update n8n Container - Update n8n
Guide Update N8N Container
Method 1: Simple Update (Recommended)
Step 1: Backup First
cd ~/n8n
# Backup your data volume ??
sudo cp -r /var/lib/docker/volumes/n8n_n8n_data/_data \
/var/lib/docker/volumes/n8n_n8n_data/_data.backup.$(date +%Y%m%d)
# Backup your docker-compose.yml and .env
cp docker-compose.yml docker-compose.yml.backup
cp .env .env.backup
Step 2: Pull Latest Image
# Pull the latest n8n image
docker compose pull n8n
Step 3: Recreate Container
# Stop and recreate with new image
docker compose up -d --force-recreate
# Or stop, remove, and start fresh
docker compose down
docker compose up -d
Step 4: Verify Update
# Check logs
docker compose logs -f n8n
# Check version
docker exec n8n-n8n-1 n8n --version
# Verify container is running
docker compose ps
Method 2: Update to Specific Version
Modify docker-compose.yml:
services:
n8n:
image: n8nio/n8n:1.68.0 # Specify exact version
restart: unless-stopped
networks:
- web
env_file:
- .env
volumes:
- n8n_data:/home/node/.n8n
networks:
web:
external: true
volumes:
n8n_data:
Then update:
docker compose pull
docker compose up -d --force-recreate
Method 3: Complete Rebuild (Nuclear Option)
Use this if containers are misbehaving:
# Stop and remove everything
docker compose down
# Remove old container (keeps volumes!)
docker rm -f n8n-n8n-1
# Remove old image
docker rmi n8nio/n8n:latest
# Pull fresh image
docker compose pull
# Start fresh
docker compose up -d
# Check logs
docker compose logs -f n8n
Check Available Versions
# See all available n8n versions on Docker Hub
curl -s https://registry.hub.docker.com/v2/repositories/n8nio/n8n/tags/ | grep -o '"name":"[^"]*' | cut -d'"' -f4 | head -20
Verify What Changed
Before update:
# Note current version
docker exec n8n-n8n-1 n8n --version
docker images | grep n8n
After update:
# Compare version
docker exec n8n-n8n-1 n8n --version
# Check image ID changed
docker images | grep n8n
Rollback to Previous Version
If update causes issues:
# Stop current version
docker compose down
# Modify docker-compose.yml to use specific old version
nano docker-compose.yml
Change:
image: n8nio/n8n:1.67.0 # Use previous version
# Start with old version
docker compose up -d
# Restore data backup if needed
sudo rm -rf /var/lib/docker/volumes/n8n_n8n_data/_data
sudo cp -r /var/lib/docker/volumes/n8n_n8n_data/_data.backup.20250131 \
/var/lib/docker/volumes/n8n_n8n_data/_data
# Restart
docker compose restart
Automation: Update Script
Create a script for easy updates:
nano ~/update-n8n.sh
#!/bin/bash
set -e
echo "=== n8n Update Script ==="
cd ~/n8n
# Backup
echo "Creating backup..."
sudo cp -r /var/lib/docker/volumes/n8n_n8n_data/_data \
/var/lib/docker/volumes/n8n_n8n_data/_data.backup.$(date +%Y%m%d-%H%M%S)
# Current version
echo "Current version:"
docker exec n8n-n8n-1 n8n --version || echo "Container not running"
# Update
echo "Pulling latest image..."
docker compose pull n8n
echo "Recreating container..."
docker compose up -d --force-recreate
# Wait for startup
echo "Waiting for n8n to start..."
sleep 10
# New version
echo "New version:"
docker exec n8n-n8n-1 n8n --version
echo "Checking logs..."
docker compose logs --tail=50 n8n
echo "=== Update complete! ==="
Make it executable:
chmod +x ~/update-n8n.sh
Run it:
~/update-n8n.sh
Best Practices
- ✅ Always backup before updating
- ✅ Check n8n release notes before major updates
- ✅ Test in staging first if you have critical workflows
- ✅ Update during low-traffic periods
- ✅ Keep at least 2-3 backups
- ✅ Monitor logs after update for 24 hours
Quick Reference
# Quick update (most common)
cd ~/n8n
docker compose pull
docker compose up -d --force-recreate
# Check version
docker exec n8n-n8n-1 n8n --version
# View logs
docker compose logs -f n8n
# Restart if needed
docker compose restart n8n
Save this for your future updates! 🚀