Compare commits

4 Commits

Author SHA1 Message Date
a70c5b397a Обновить Dockerfile
All checks were successful
Build, Push and Redeploy Docker Image / build-and-push (push) Successful in 5m54s
2026-08-30 15:26:52 +07:00
5ca4ceb1cf Обновить Dockerfile
All checks were successful
Build, Push and Redeploy Docker Image / build-and-push (push) Successful in 5m54s
2026-08-30 15:11:14 +07:00
249d3c64ba Обновить start-n8n.sh
Some checks failed
Build, Push and Redeploy Docker Image / build-and-push (push) Failing after 4m6s
2026-08-30 14:57:46 +07:00
9ea190538a edite iptables rules
All checks were successful
Build, Push and Redeploy Docker Image / build-and-push (push) Successful in 5m43s
2026-01-27 19:25:55 +07:00
3 changed files with 57 additions and 28 deletions

View File

@@ -1,36 +1,52 @@
FROM node:23-alpine
FROM node:24-alpine3.22
# Аргументы для настройки
ARG N8N_VERSION=latest
ARG SOCKS_IP=192.168.31.240
# Установка зависимостей и n8n в одном слое
ENV NODE_OPTIONS=--no-node-snapshot
RUN apk add --no-cache \
ffmpeg \
curl \
wget \
iptables \
redsocks \
gnupg \
netcat-openbsd \
npm \
su-exec \
&& npm install -g n8n@${N8N_VERSION} \
&& rm -rf /var/cache/apk/*
ffmpeg \
curl \
wget \
iptables \
redsocks \
gnupg \
netcat-openbsd \
su-exec \
&& apk add --no-cache --virtual .build-deps \
python3 \
make \
g++ \
&& npm install --global "n8n@${N8N_VERSION}" \
&& apk del .build-deps \
&& npm cache clean --force
# Создание пользователя и домашней директории
#RUN adduser -D -s /bin/sh node && mkdir -p /home/node/.n8n
RUN mkdir -p /home/node/.n8n && chown -R node:node /home/node
RUN mkdir -p /home/node/.n8n \
&& chown -R node:node /home/node
# Копирование скрипта и установка прав
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
RUN printf '%s\n' \
"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 = 4067;" \
" type = socks5;" \
"}" \
> /etc/redsocks.conf
# USER node
WORKDIR /home/node
EXPOSE 5678
ENTRYPOINT ["/start.sh"]

View File

@@ -12,6 +12,7 @@ services:
- SOCKS_IP=192.168.31.240
- N8N_PORT=5678
- NODE_FUNCTION_ALLOW_EXTERNAL=*
- NODE_OPTIONS=--dns-result-order=ipv4first
ports:
- 7778:5678
volumes:

View File

@@ -4,7 +4,7 @@ SOCKS_HOST=${SOCKS_IP:-192.168.31.240}
# Wait for SOCKS proxy to be ready
echo "Waiting for SOCKS proxy..."
until nc -z "$SOCKS_HOST" 1080; do
until nc -z "$SOCKS_HOST" 4067; do
echo "SOCKS proxy not ready yet, waiting..."
sleep 5
done
@@ -14,12 +14,24 @@ echo "SOCKS proxy is ready!"
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
# создать/очистить цепочку
iptables -t nat -N REDSOCKS 2>/dev/null || true
iptables -t nat -F REDSOCKS
# гарантированно первой в OUTPUT
iptables -t nat -D OUTPUT -p tcp -j REDSOCKS 2>/dev/null || true
iptables -t nat -I OUTPUT 1 -p tcp -j REDSOCKS
# исключения
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
# (по желанию) исключить сам socks-хост точечно:
iptables -t nat -A REDSOCKS -d "$SOCKS_HOST" -p tcp --dport 4067 -j RETURN
# редирект всего остального tcp
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
N8N_BIN="/usr/local/bin/n8n"