diff --git a/README.md b/README.md new file mode 100644 index 0000000..886bc2d --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# n8n-ffmpeg-proxy + +Docker-проект для запуска n8n с интеграцией ffmpeg и проксированием трафика через SOCKS5-прокси. + +## Особенности + +* **n8n:** Установлен и запущен в контейнере Alpine Linux. +* **ffmpeg:** Доступен внутри контейнера, что позволяет использовать узлы n8n, требующие ffmpeg (например, для обработки аудио/видео). +* **Проксирование трафика:** Весь исходящий TCP-трафик из контейнера направляется через SOCKS5-прокси, используя `redsocks` и `iptables`. +* **Безопасность:** n8n запускается от непривилегированного пользователя `node`. +* **Конфигурация:** Поведение n8n настраивается через переменные окружения в `docker-compose.yml`. + +## Требования + +* Docker Engine +* Docker Compose (v2 или выше) +* **Доступный SOCKS5-прокси:** Контейнер ожидает, что SOCKS5-прокси будет доступен по имени `socks` на порту `1080`. Это может быть: + * Отдельный контейнер, объявленный в `docker-compose.yml`. + * Сервис, запущенный на хосте, доступ к которому обеспечен через `extra_hosts` или подключение к `host`-сети (что менее изолированно). +* **Настройки сети:** Убедитесь, что сеть, в которую подключается контейнер `n8n`, позволяет ему находить сервис `socks`. + +## Установка и запуск + +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. \ No newline at end of file