add readme

This commit is contained in:
2026-01-22 05:23:06 +07:00
parent 79c4cee4bc
commit 4a58a2fe77

65
README.md Normal file
View File

@@ -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 <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.