README.md
Simple MT-Proto proxy
Install dependencies, you would need common set of tools for building from source, and development packages for openssl and zlib.
On Debian/Ubuntu:
apt install git curl build-essential libssl-dev zlib1g-dev
On CentOS/RHEL:
yum install openssl-devel zlib-devel
yum groupinstall "Development Tools"
Clone the repo:
git clone https://github.com/TelegramMessenger/MTProxy
cd MTProxy
To build, simply run make, the binary will be in objs/bin/mtproto-proxy:
make && cd objs/bin
If the build has failed, you should run make clean before building it again.
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
head -c 16 /dev/urandom | xxd -ps
mtproto-proxy:./mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
... where:
nobody is the username. mtproto-proxy calls setuid() to drop privileges.443 is the port, used by clients to connect to the proxy.8888 is the local port. You can use it to get statistics from mtproto-proxy. Like wget localhost:8888/stats. You can only get this stat via loopback.<secret> is the secret generated at step 3. Also you can set multiple secrets: -S <secret1> -S <secret2>.proxy-secret and proxy-multi.conf are obtained at steps 1 and 2.1 is the number of workers. You can increase the number of workers, if you have a powerful server.Also feel free to check out other options using mtproto-proxy --help.
tg://proxy?server=SERVER_NAME&port=PORT&secret=SECRET (or let the official bot generate it for you).-P <proxy tag>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.
nano /etc/systemd/system/MTProxy.service
[Unit]
Description=MTProxy
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/MTProxy
ExecStart=/opt/MTProxy/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> -P <proxy tag> <other params>
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart MTProxy.service
# Check status, it should be active
systemctl status MTProxy.service
systemctl enable MTProxy.service
Telegram is also providing official Docker image. Note: the image is outdated.