Docker
Развёртывание n8n через Docker и Docker Compose
Быстрый старт
Заголовок раздела «Быстрый старт»docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ n8nio/n8nОткройте http://localhost:5678
Docker Compose
Заголовок раздела «Docker Compose»Базовая конфигурация
Заголовок раздела «Базовая конфигурация»version: '3.8'
services: n8n: image: n8nio/n8n restart: always ports: - "5678:5678" environment: - N8N_HOST=localhost - N8N_PORT=5678 - N8N_PROTOCOL=http - WEBHOOK_URL=http://localhost:5678/ volumes: - n8n_data:/home/node/.n8n
volumes: n8n_data:Production с PostgreSQL
Заголовок раздела «Production с PostgreSQL»version: '3.8'
services: n8n: image: n8nio/n8n restart: always ports: - "5678:5678" environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} - N8N_HOST=${N8N_HOST} - N8N_PORT=5678 - N8N_PROTOCOL=https - WEBHOOK_URL=https://${N8N_HOST}/ - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} volumes: - n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy
postgres: image: postgres:15 restart: always environment: - POSTGRES_USER=n8n - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=n8n volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U n8n"] interval: 5s timeout: 5s retries: 5
volumes: n8n_data: postgres_data:.env файл
Заголовок раздела «.env файл»POSTGRES_PASSWORD=your_secure_passwordN8N_HOST=n8n.example.comN8N_ENCRYPTION_KEY=your_32_char_encryption_key_here-
Создайте файлы
docker-compose.ymlи.env -
Запустите
Окно терминала docker-compose up -d -
Проверьте логи
Окно терминала docker-compose logs -f n8n -
Откройте
http://localhost:5678 (или ваш домен)
Обновление
Заголовок раздела «Обновление»# Остановитьdocker-compose down
# Обновить образdocker-compose pull
# Запуститьdocker-compose up -dVolumes
Заголовок раздела «Volumes»| Volume | Содержимое |
|---|---|
n8n_data | Конфигурация, SQLite DB (если используется) |
postgres_data | Данные PostgreSQL |
# Бэкапdocker run --rm -v n8n_data:/data -v $(pwd):/backup \ alpine tar czf /backup/n8n_backup.tar.gz /data
# Восстановлениеdocker run --rm -v n8n_data:/data -v $(pwd):/backup \ alpine tar xzf /backup/n8n_backup.tar.gz -C /# Бэкапdocker-compose exec postgres pg_dump -U n8n n8n > backup.sql
# Восстановлениеcat backup.sql | docker-compose exec -T postgres psql -U n8n n8nReverse Proxy
Заголовок раздела «Reverse Proxy»server { listen 80; server_name n8n.example.com; return 301 https://$server_name$request_uri;}
server { listen 443 ssl http2; server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; }}Traefik
Заголовок раздела «Traefik»# docker-compose.yml с Traefikservices: n8n: image: n8nio/n8n labels: - "traefik.enable=true" - "traefik.http.routers.n8n.rule=Host(`n8n.example.com`)" - "traefik.http.routers.n8n.tls=true" - "traefik.http.routers.n8n.tls.certresolver=letsencrypt" - "traefik.http.services.n8n.loadbalancer.server.port=5678" # ... остальные настройкиHealthcheck
Заголовок раздела «Healthcheck»services: n8n: # ... healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:5678/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 30sResource Limits
Заголовок раздела «Resource Limits»services: n8n: # ... deploy: resources: limits: cpus: '2' memory: 4G reservations: cpus: '0.5' memory: 1GЛогирование
Заголовок раздела «Логирование»services: n8n: # ... logging: driver: "json-file" options: max-size: "10m" max-file: "3"Следующие шаги
Заголовок раздела «Следующие шаги»- Переменные окружения — полный список
- Масштабирование — queue mode
- Безопасность — SSL и аутентификация