Simple MT-Proto proxy ONLY FOR x86_64 SYSTEMS
- VPS outside a country that blocked Telegram
- Minimum knowledge about docker and/or docker compose
- Read this entire README, the link at the end and understand what this project does
- Run
docker compose up -d
If you want to customize an environment, create a .env
file replacing the follow default values:
Environment | Default value |
---|---|
SECRET | ec4dd80983dbf12d6b354cf7bcfe9a48 |
WORKERS | 1 |
MTPROTO_REPO_URL | https://github.com/TelegramMessenger/MTProxy |
TZ |
An alternative to MTPROTO_REPO_URL
is https://github.com/GetPageSpeed/MTProxy that is a fork from MTProxy with patches applied.
To more informations read the follow session.
You can specify two arguments when building an image.
-
--build-arg WORKERS= (1 is the number of workers. You can increase the number of workers, if you have a powerful server.)
-
--build-arg SECRET= (Default is ec4dd80983dbf12d6b354cf7bcfe9a48) To generate a random secret, run the following command:
head -c 16 /dev/urandom | xxd -ps
git clone https://github.com/Dofamin/MTProxy-Docker.git /srv/MTProxy/
docker build /srv/MTProxy/ --tag mtproxy
docker rm --force MTProxy
docker create \
--name=MTProxy \
-p 443:8889 \
-e SECRET=ec4dd80983dbf12d6b354cf7bcfe9a48 \
-e WORKERS=1 \
--privileged \
--restart unless-stopped \
--memory="100m" \
mtproxy:latest
docker start MTProxy
Or just pull from GitHub
docker pull ghcr.io/dofamin/mtproxy-docker:main
docker rm --force MTProxy
docker create \
--name=MTProxy \
-p 443:8889 \
-e SECRET=ec4dd80983dbf12d6b354cf7bcfe9a48 \
-e WORKERS=1 \
--privileged \
--restart unless-stopped \
--memory="100m" \
ghcr.io/dofamin/mtproxy-docker:main
docker start MTProxy
Due to some ISPs detecting MTProxy by packet sizes, random padding is added to packets if such mode is enabled.
It's only enabled for clients which request it.
Add dd prefix to secret (cafe...babe => ddcafe...babe) to enable this mode on client side.
MTProto Proxy may fail to operate properly in certain conditions. There are two major problem categories: the client might not be able to connect to your proxy server (client applications will hang in "connecting" state), or your proxy server is unable to connect to the core Telegram servers (application hangs in "updating" state).
"Connecting" problems are usually caused by a misconfigured firewall, a Docker port forwarding problem, a state censorship issue, or a combination of the above.
If clients hang in an "updating" state, be sure to check the following:
1.Firewalls and/or DPI checkpoints between your proxy server and the core Telegram servers may not allow traffic to pass. Check your local firewall first.
2.Your proxy server's system time should be within five seconds of UTC. You should be running a time synchronization daemon to keep these issues to a minimum.
3.The MTProto Proxy must know about its globally routable external IP address if it's behind NAT. The container tries to detect the external IP address automatically, but this may fail if you have extracted the binary out of the container. Use mtproto-proxy --nat-info command line switch to configure the proxy server.