55 lines
1.8 KiB
Docker
55 lines
1.8 KiB
Docker
ARG BASE_IMAGE=debian:bookworm-slim
|
|
FROM ${BASE_IMAGE}
|
|
ARG SINGBOX_VERSION=1.12.13
|
|
ARG INSTALL_RUNTIME_DEPS=true
|
|
ARG INSTALL_SINGBOX=true
|
|
COPY dist /app/dist
|
|
|
|
RUN if [ "${INSTALL_RUNTIME_DEPS}" = "true" ]; then \
|
|
apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates curl iptables ipset iproute2 nodejs dumb-init \
|
|
&& rm -rf /var/lib/apt/lists/*; \
|
|
else \
|
|
command -v dumb-init >/dev/null \
|
|
&& command -v node >/dev/null \
|
|
&& command -v iptables >/dev/null \
|
|
&& command -v ipset >/dev/null; \
|
|
fi
|
|
|
|
RUN if [ "${INSTALL_SINGBOX}" = "true" ]; then \
|
|
set -eux; \
|
|
arch="$(dpkg --print-architecture)"; \
|
|
case "$arch" in \
|
|
amd64) sb_arch="amd64" ;; \
|
|
arm64) sb_arch="arm64" ;; \
|
|
*) echo "Unsupported architecture: $arch" >&2; exit 1 ;; \
|
|
esac; \
|
|
curl -fsSL "https://github.com/SagerNet/sing-box/releases/download/v${SINGBOX_VERSION}/sing-box-${SINGBOX_VERSION}-linux-${sb_arch}.tar.gz" -o /tmp/sing-box.tgz; \
|
|
tar -xzf /tmp/sing-box.tgz -C /tmp; \
|
|
mv "/tmp/sing-box-${SINGBOX_VERSION}-linux-${sb_arch}/sing-box" /usr/local/bin/sing-box; \
|
|
chmod +x /usr/local/bin/sing-box; \
|
|
rm -rf /tmp/sing-box*; \
|
|
else \
|
|
command -v sing-box >/dev/null; \
|
|
fi
|
|
|
|
WORKDIR /app
|
|
COPY package.json /app/package.json
|
|
COPY src/server /app/src/server
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
|
|
RUN chmod +x /entrypoint.sh \
|
|
&& mkdir -p /etc/sing-box /var/lib/vpn-proxy /var/lib/sing-box
|
|
|
|
ENV PORT=3456 \
|
|
PROXY_PORT=8080 \
|
|
PROXY_BIND_IP=0.0.0.0 \
|
|
TPROXY_PORT=7895 \
|
|
DIRECT_BYPASS_CACHE=false \
|
|
RULE_SET_DOWNLOAD_DETOUR=vpn \
|
|
DATA_DIR=/var/lib/vpn-proxy \
|
|
SING_BOX_CONFIG=/etc/sing-box/config.json \
|
|
SING_BOX_CACHE=/var/lib/sing-box/cache.db
|
|
|
|
ENTRYPOINT ["dumb-init", "/entrypoint.sh"]
|