Files
n8n-ffmpeg-proxy/README.md
2026-01-22 05:23:06 +07:00

65 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <URL_ВАШЕГО_РЕПОЗИТОРИЯ> 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.