FROM debian:bookworm-slim

ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILD_VERSION=dev

LABEL org.opencontainers.image.title="AimiliVPN" \
      org.opencontainers.image.description="VPNGate node manager with HTTP and SOCKS5 proxy" \
      org.opencontainers.image.source="https://github.com/baoweise-bot/aimili-vpngate" \
      org.opencontainers.image.version="${BUILD_VERSION}"

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        iproute2 \
        iptables \
        openvpn \
        procps \
        psmisc \
        python3 \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY VERSION README.md LICENSE ./
COPY vpngate_manager.py vpn_utils.py proxy_server.py snapshot_utils.py ./
COPY mirror ./mirror

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    DEPLOYMENT_MODE=docker \
    VPNGATE_DATA_DIR=/data \
    UI_HOST=0.0.0.0 \
    UI_PORT=8787 \
    LOCAL_PROXY_HOST=127.0.0.1 \
    LOCAL_PROXY_PORT=7928

RUN mkdir -p /data \
    && python3 -m py_compile vpngate_manager.py vpn_utils.py proxy_server.py snapshot_utils.py

VOLUME ["/data"]
EXPOSE 8787/tcp 7928/tcp
STOPSIGNAL SIGTERM

HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
    CMD python3 -c "import os,socket; s=socket.create_connection(('127.0.0.1',int(os.environ.get('UI_PORT','8787'))),3); s.close()"

CMD ["python3", "vpngate_manager.py"]
