FROM node:24-alpine3.22

ARG N8N_VERSION=latest
ARG SOCKS_IP=192.168.31.240

ENV NODE_OPTIONS=--no-node-snapshot

RUN apk add --no-cache \
        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 mkdir -p /home/node/.n8n \
    && chown -R node:node /home/node

COPY start-n8n.sh /start.sh
RUN chmod +x /start.sh

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 = 1080;" \
    "  type = socks5;" \
    "}" \
    > /etc/redsocks.conf

WORKDIR /home/node

EXPOSE 5678

ENTRYPOINT ["/start.sh"]