From 79c4cee4bc697caa3b012f8d22a815217d6bd16f Mon Sep 17 00:00:00 2001 From: drholy Date: Thu, 22 Jan 2026 05:18:38 +0700 Subject: [PATCH] init --- Dockerfile | 35 +++++++++++++++++++++++++++++++++++ docker-compose.yml | 30 ++++++++++++++++++++++++++++++ start-n8n.sh | 23 +++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 start-n8n.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6f3afef --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM alpine:3.19 AS base + +# Аргументы для настройки +ARG N8N_VERSION=latest +ARG SOCKS_IP=192.168.31.240 + +# Установка зависимостей и n8n в одном слое +RUN apk add --no-cache \ + ffmpeg \ + curl \ + wget \ + iptables \ + redsocks \ + gnupg \ + netcat-openbsd \ + nodejs \ + npm \ + && npm install -g n8n@${N8N_VERSION} + && rm -rf /var/cache/apk/* + +# Создание пользователя и домашней директории +RUN adduser -D -s /bin/sh node && mkdir -p /home/node/.n8n + +# Копирование скрипта и установка прав +COPY start-n8n.sh /start.sh +RUN chmod +x /start.sh + +# Настройка redsocks.conf с использованием аргумента +RUN echo "base { log_debug = off; log_info = on; log = stderr; daemon = off; redirector = iptables; } redsocks { local_ip = 127.0.0.1; local_port = 12345; ip = ${SOCKS_IP}; port = 1080; type = socks5; }" > /etc/redsocks.conf + +USER node +WORKDIR /home/node +EXPOSE 5678 + +ENTRYPOINT ["/start.sh"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d21cbf6 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,30 @@ +services: + n8n: + build: + context: . + args: + - SOCKS_IP=192.168.31.240 + container_name: n8n + environment: + - GENERIC_TIMEZONE=Europe/Amsterdam + - NODE_ENV=production + - N8N_SECURE_COOKIE=false + - N8N_TRUST_PROXY=true + # - N8N_HOST=n8n.home + - N8N_PORT=5678 + - N8N_PROTOCOL=http + - WEBHOOK_URL=https://n8n.home/ + - N8N_DIAGNOSTICS_ENABLED=false + - N8N_TELEMETRY_DISABLED=true + - NODE_FUNCTION_ALLOW_EXTERNAL=* + ports: + - 5678:5678 + volumes: + - n8n_data:/home/node/.n8n + - /srv/downloads:/music + restart: unless-stopped + network_mode: "host" + +volumes: + n8n_data: + name: n8n_data diff --git a/start-n8n.sh b/start-n8n.sh new file mode 100644 index 0000000..e9ca87b --- /dev/null +++ b/start-n8n.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Wait for SOCKS proxy to be ready +echo "Waiting for SOCKS proxy..." +until nc -z socks 1080; do + echo "SOCKS proxy not ready yet, waiting..." + sleep 5 +done +echo "SOCKS proxy is ready!" + +# Start redsocks +redsocks -c /etc/redsocks.conf & +sleep 2 + +# Set up iptables rules (run as root) +iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 -j RETURN 2>/dev/null || true +iptables -t nat -A OUTPUT -p tcp -d 192.168.0.0/16 -j RETURN 2>/dev/null || true +iptables -t nat -A OUTPUT -p tcp -d 10.0.0.0/8 -j RETURN 2>/dev/null || true +iptables -t nat -A OUTPUT -p tcp -d 172.16.0.0/12 -j RETURN 2>/dev/null || true +iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 12345 2>/dev/null || true + +# Start n8n +exec su -c "n8n start" node \ No newline at end of file