65 lines
5.8 KiB
Markdown
65 lines
5.8 KiB
Markdown
# 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. |