init
This commit is contained in:
35
Dockerfile
Normal file
35
Dockerfile
Normal 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
30
docker-compose.yml
Normal 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
23
start-n8n.sh
Normal 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
|
||||||
Reference in New Issue
Block a user