FROM docker.io/library/node:lts-alpine
WORKDIR /app
RUN apk add --no-cache python3
RUN npm install --global corepack@latest
RUN corepack enable pnpm
HEALTHCHECK --interval=30s --timeout=8s --start-period=60s --retries=5 CMD \
/usr/bin/timeout 8s wget -qO- http://localhost:${PORT:-51831}/ >/dev/null 2>&1
RUN apk add --no-cache \
dpkg \
dumb-init \
iptables \
ip6tables \
kmod \
iptables-legacy \
wireguard-go \
wireguard-tools
RUN update-alternatives --install /usr/sbin/iptables iptables /usr/sbin/iptables-legacy 10 --slave /usr/sbin/iptables-restore iptables-restore /usr/sbin/iptables-legacy-restore --slave /usr/sbin/iptables-save iptables-save /usr/sbin/iptables-legacy-save
RUN update-alternatives --install /usr/sbin/ip6tables ip6tables /usr/sbin/ip6tables-legacy 10 --slave /usr/sbin/ip6tables-restore ip6tables-restore /usr/sbin/ip6tables-legacy-restore --slave /usr/sbin/ip6tables-save ip6tables-save /usr/sbin/ip6tables-legacy-save
ENV DEBUG=Server,WireGuard,Database,CMD
ENV PORT=51831
ENV HOST=0.0.0.0
ENV INSECURE=true
ENV INIT_ENABLED=false
ENV DISABLE_IPV6=false
COPY src/package.json src/pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY src ./
ENTRYPOINT ["dumb-init", "--", "pnpm", "run"]