add readme
This commit is contained in:
65
README.md
Normal file
65
README.md
Normal 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.
|
||||||
Reference in New Issue
Block a user