Skip to content

Instantly share code, notes, and snippets.

@ihciah
Last active May 2, 2022
Embed
What would you like to do?
V2ray MTProto through Shadowsocks

V2ray MTProto through Shadowsocks

Why use it

The MTProto is easy to block; shadowsocks is hard to identify but cannot work without a client.

You can deylop this docker image to run a relay inside the firewall (China/Russia etc.), it provide a MTProto and all the packets will be sent through shadowsocks protocol.

How to run

Modify the v2ray.conf, change the port, secret, and the other 4 settings in servers for shadowsocks configure.

Then put these 2 files in a folder and run docker-compose up -d.

Other info

It is based on V2ray. Also, I wrote some similar programs: inner-shadowsocks, shadowsocks-with-socks-auth to provide a Socks5 through shadowsocks. But for telegram, they are not recommended, because the Socks5 credential is transported in plain.

UPDATE: I add a pre-connection pool to the original v2ray in a ugly way, but it works. It can reduce a lot of "Connecting" time.

version: "3"
services:
v2ray:
image: ihciah/v2ray
container_name: v2ray
restart: always
command: v2ray -config=/etc/v2ray/config.json
network_mode: "host"
volumes:
- ./v2ray.conf:/etc/v2ray/config.json
{
"inbounds": [
{
"port": 12345,
"protocol": "mtproto",
"settings": {
"users": [
{
"secret": "YOURTGMTPROTOSECRET"
}
]
},
"tag": "tg-in"
}
],
"outbounds": [
{
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "SSSERVER",
"method": "SSMETHOD",
"password": "SSPASSWORD",
"port": SSPORT
}
]
},
"tag": "OUTSIDE"
},
{
"protocol": "mtproto",
"proxySettings": {
"tag": "OUTSIDE"
},
"settings": {},
"tag": "tg-out"
}
],
"routing": {
"rules": [
{
"inboundTag": [
"tg-in"
],
"outboundTag": "tg-out",
"type": "field"
}
]
}
}
@dimqua
Copy link

dimqua commented Nov 22, 2019

run a relay inside the firewall (China/Russia etc.), it provide a MTProto

In case of Russia, this configuration will not work for a long time. Because of even Russia-hosted MTProxies could be blocked by the government. That means you have to run V2Ray on the client (or in your own local network, for example).

@psyvirgin
Copy link

psyvirgin commented Dec 25, 2019

#--#. when the docker had installed .How to configure it in telegram? For example tg://proxy?server=myserver&port=myconfigport&secret=myhash. Either mtproxy's port or shadowsocks' port can not connect

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment