FROM alpine:3.19 LABEL maintainer="mGuard VPN Manager" LABEL description="OpenVPN multi-server container with dynamic configuration" # Install packages RUN apk add --no-cache \ openvpn \ bash \ curl \ iptables \ ip6tables \ supervisor \ jq # Create directories RUN mkdir -p \ /etc/openvpn/servers \ /etc/openvpn/scripts \ /etc/openvpn/supervisor.d \ /var/log/openvpn \ /var/run/openvpn # Copy configuration and scripts COPY supervisord.conf /etc/supervisord.conf COPY entrypoint.sh /entrypoint.sh COPY scripts/ /etc/openvpn/scripts/ # Make scripts executable and create log file with proper permissions RUN chmod +x /entrypoint.sh /etc/openvpn/scripts/*.sh && \ touch /var/log/openvpn/clients.log && \ chmod 666 /var/log/openvpn/clients.log # Expose common VPN ports (actual ports depend on server configs) # These are just defaults, actual binding happens via host network EXPOSE 1194/udp EXPOSE 1194/tcp EXPOSE 443/tcp # Volumes for persistent data VOLUME ["/etc/openvpn", "/var/log/openvpn"] # Environment variables ENV API_URL="http://127.0.0.1:8000/api/internal" ENV API_TIMEOUT="120" ENV API_RETRY_INTERVAL="5" ENV POLL_INTERVAL="30" ENTRYPOINT ["/entrypoint.sh"]