86 lines
3.2 KiB
Docker
86 lines
3.2 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
ARG GO_VERSION=1.26.5
|
|
|
|
FROM debian:bookworm AS mtproxy-builder
|
|
|
|
ARG MTPROXY_COMMIT=f36d8af769ffaeac36978d38c2c0f6d1104c2137
|
|
ARG MTPROXY_SHA256=919795c416b870670841a21d1930ad97a24c7b84b9eb8c6f9e3de32f2fdf4655
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
build-essential ca-certificates curl libssl-dev zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN curl --fail --silent --show-error --location \
|
|
--proto '=https' --proto-redir '=https' --tlsv1.2 \
|
|
--output /tmp/mtproxy.tar.gz \
|
|
"https://github.com/TelegramMessenger/MTProxy/archive/${MTPROXY_COMMIT}.tar.gz" \
|
|
&& echo "${MTPROXY_SHA256} /tmp/mtproxy.tar.gz" | sha256sum -c - \
|
|
&& mkdir -p /src/mtproxy \
|
|
&& tar -C /src/mtproxy --strip-components=1 -xzf /tmp/mtproxy.tar.gz \
|
|
&& make -C /src/mtproxy -j"$(nproc)" \
|
|
&& test -x /src/mtproxy/objs/bin/mtproto-proxy
|
|
|
|
FROM golang:${GO_VERSION}-bookworm AS relay-builder
|
|
|
|
ARG TPROXY_COMMIT=c8adb8b7c6b7fc46c12ae3acb68be9070c26a8e8
|
|
ARG TPROXY_SHA256=a78b48f536180143dd7005785ca397310c36ee0b132e19949a45d64f586ab549
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN curl --fail --silent --show-error --location \
|
|
--proto '=https' --proto-redir '=https' --tlsv1.2 \
|
|
--output /tmp/tproxy.tar.gz \
|
|
"https://github.com/telegramdesktop/tproxy-server/archive/${TPROXY_COMMIT}.tar.gz" \
|
|
&& echo "${TPROXY_SHA256} /tmp/tproxy.tar.gz" | sha256sum -c - \
|
|
&& mkdir -p /src/tproxy \
|
|
&& tar -C /src/tproxy --strip-components=1 -xzf /tmp/tproxy.tar.gz
|
|
|
|
WORKDIR /src/tproxy
|
|
RUN go test ./... \
|
|
&& CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' \
|
|
-o /out/tproxy-server ./cmd/tproxy-server
|
|
|
|
WORKDIR /src/ingress
|
|
COPY ingress/ingress.go ./ingress.go
|
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' \
|
|
-o /out/ingress ./ingress.go
|
|
|
|
FROM debian:bookworm-slim AS runtime
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates curl hostname libssl3 openssl util-linux zlib1g \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& useradd --system --uid 10001 --home-dir /nonexistent \
|
|
--shell /usr/sbin/nologin mtproxy \
|
|
&& useradd --system --uid 10002 --home-dir /nonexistent \
|
|
--shell /usr/sbin/nologin tproxy
|
|
|
|
COPY --from=mtproxy-builder /src/mtproxy/objs/bin/mtproto-proxy /usr/local/bin/mtproto-proxy
|
|
COPY --from=relay-builder /out/tproxy-server /usr/local/bin/tproxy-server
|
|
COPY --from=relay-builder /out/ingress /usr/local/bin/tproxy-ingress
|
|
COPY docker/entrypoint.sh /usr/local/bin/tproxy-entrypoint
|
|
COPY site/ /srv/tproxy-site/
|
|
|
|
RUN chown root:root \
|
|
/usr/local/bin/mtproto-proxy \
|
|
/usr/local/bin/tproxy-server \
|
|
/usr/local/bin/tproxy-ingress \
|
|
/usr/local/bin/tproxy-entrypoint \
|
|
&& chmod 0755 \
|
|
/usr/local/bin/mtproto-proxy \
|
|
/usr/local/bin/tproxy-server \
|
|
/usr/local/bin/tproxy-ingress \
|
|
/usr/local/bin/tproxy-entrypoint \
|
|
&& find /srv/tproxy-site -type d -exec chmod 0755 {} + \
|
|
&& find /srv/tproxy-site -type f -exec chmod 0644 {} +
|
|
|
|
VOLUME ["/data"]
|
|
EXPOSE 8088
|
|
|
|
ENTRYPOINT ["/usr/local/bin/tproxy-entrypoint"]
|