This commit is contained in:
2026-01-22 05:18:38 +07:00
commit 79c4cee4bc
3 changed files with 88 additions and 0 deletions

35
Dockerfile Normal file
View File

@@ -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"]

30
docker-compose.yml Normal file
View File

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

23
start-n8n.sh Normal file
View File

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