feat: publish generic Telegram WEB proxy stack
This commit is contained in:
+85
@@ -0,0 +1,85 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user