# n8n-ffmpeg-proxy Docker-проект для запуска n8n с интеграцией ffmpeg и проксированием трафика через SOCKS5-прокси. ## Особенности * **n8n:** Установлен и запущен в контейнере Alpine Linux. * **ffmpeg:** Доступен внутри контейнера, что позволяет использовать узлы n8n, требующие ffmpeg (например, для обработки аудио/видео). * **Проксирование трафика:** Весь исходящий TCP-трафик из контейнера направляется через SOCKS5-прокси, используя `redsocks` и `iptables`. * **Безопасность:** n8n запускается от непривилегированного пользователя `node`. * **Конфигурация:** Поведение n8n настраивается через переменные окружения в `docker-compose.yml`. ## Установка и запуск 1. **Клонируйте репозиторий (если он находится в другом месте, или создайте структуру вручную):** ```bash # git clone n8n-ffmpeg-proxy # cd n8n-ffmpeg-proxy ``` Убедитесь, что в директории находятся файлы `Dockerfile`, `docker-compose.yml`, и `start-n8n.sh`. 2. **Настройте `docker-compose.yml`:** * Проверьте и при необходимости измените переменные окружения для n8n (например, `WEBHOOK_URL`, `GENERIC_TIMEZONE`). * Убедитесь, что имя сервиса `socks` и его порт `1080` соответствуют вашему SOCKS-прокси. Если SOCKS-прокси запущен на хосте, убедитесь, что `extra_hosts` настроен правильно (например, `- "socks:192.168.31.240"`). * При необходимости добавьте `cap_add: - NET_ADMIN` в сервис `n8n`, чтобы `iptables` работали корректно. 3. **(Опционально) Настройте `Dockerfile`:** * При необходимости измените версию n8n (`ARG N8N_VERSION`). * Если SOCKS-прокси работает на другом IP, передайте его как аргумент сборки или измените `extra_hosts` и `Dockerfile`. 4. **Запустите проект:** ```bash docker-compose up -d ``` Контейнер начнет запускаться. Он будет ожидать доступности SOCKS-прокси. 5. **Доступ к n8n:** После успешного запуска n8n будет доступен на порту 5678 хоста (по умолчанию `http://localhost:5678`). Убедитесь, что ваш `WEBHOOK_URL` и настройки прокси (например, Nginx Proxy Manager) соответствуют вашему домену (например, `https://n8n.home/`). ## Файлы проекта * `Dockerfile`: Определяет образ контейнера, устанавливает зависимости (ffmpeg, redsocks, n8n), настраивает `redsocks.conf` и пользователя. * `docker-compose.yml`: Определяет сервис `n8n`, его конфигурацию, сети, переменные окружения, тома и зависимости. * `start-n8n.sh`: Скрипт, выполняющийся при запуске контейнера. Он ожидает SOCKS-прокси, запускает `redsocks`, настраивает `iptables` и затем запускает n8n. ## Безопасность * Контейнер запускается с минимально необходимыми привилегиями. * Для настройки `iptables` требуется capability `NET_ADMIN`. Используйте его осознанно. * Переменная `NODE_FUNCTION_ALLOW_EXTERNAL=*` в `docker-compose.yml` позволяет загрузку внешних зависимостей. Это может быть рискованно. Рассмотрите возможность её ограничения. * Переменная `N8N_SECURE_COOKIE=false` отключает флаг secure для cookies. Это может быть небезопасно, если n8n доступен по HTTP. Убедитесь, что n8n защищен SSL-терминированием (например, через Nginx Proxy Manager). * Убедитесь, что SSL-сертификат вашего Git-сервера или CA доверен среде разработки/развертывания, чтобы избежать проблем с `git pull/push`. ## Лицензия MIT License DrHoly.