Skip to content

Tutorial for setting up Dokodemo-Door tunnel as relay server

For this you need an relay server to connect to the main server. Usually this middle server is considered in Iran. The tunnel usage diagram is as follows.

Tunnel usage schematic

sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
  • After installation, you must create the config.json file with the following command.
nano /usr/local/etc/xray/config.json
  • Now see the code below which is related to the inbound'' andoutbound'' traffic of the dokodemo-Door tunnel.
{
   "inbounds": [
     {
       "listen": "127.0.0.1",
       "port": 62789,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "127.0.0.1"
       },
       "tag": "api"
     },
     {
       "listen": null,
       "port": Main_Server_Port,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "MAIN_SERVER_IP",
         "followRedirect": false,
         "network": "tcp,udp",
         "port": MAIN_SERVER_PORT
       },
       "tag": "inbound-MAIN_SERVER_PORT"
     }
   ],
   "outbounds": [
     {
       "protocol": "freedom"
     },
     {
       "protocol": "blackhole",
       "tag": "blocked"
     }
   ]
}
  • In the MAIN_SERVER_PORT port field, put the port of your main server (HiddifyManager) that you considered for the tunnel connection on that server.
  • For example, port 443 is used by HiddifyManager by default for routers.
  • In the MAIN_SERVER_IP section, you should put your main server's IP address.
  • For example, if your server's IP is 10.10.10.10 and its port is 443, then the inbound code will be as follows:
{
   "inbounds": [
     {
       "listen": "127.0.0.1",
       "port": 62789,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "127.0.0.1"
       },
       "tag": "api"
     },
     {
       "listen": null,
       "port": 443,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "10.10.10.10",
         "followRedirect": false,
         "network": "tcp,udp",
         "port": 443
       },
       "tag": "inbound-443"
     }
   ],
   "outbounds": [
     {
       "protocol": "freedom"
     },
     {
       "protocol": "blackhole",
       "tag": "blocked"
     }
   ]
}

After performing the configuration operation, press Ctrl + s button to save the changes and press Ctrl + x to exit the config.json file.

Defining several different inbounds in the relay server to connect to several primary servers

For this, it is enough to define a new inbound in the config.json code after finishing each inbound. For example, suppose we have two main servers, the IP of the first server is 10.10.10.10 and its port is 443, the IP of the second server is 20.20.20.20 and its port is 8443. To create two independent tunnels to these servers, two inbound must be created as follows.

{
   "inbounds": [
     {
       "listen": "127.0.0.1",
       "port": 62789,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "127.0.0.1"
       },
       "tag": "api"
     },
     {
       "listen": null,
       "port": 443,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "10.10.10.10",
         "followRedirect": false,
         "network": "tcp,udp",
         "port": 443
       },
       "tag": "inbound-443"
     }
    {
       "listen": null,
       "port": 8443,
       "protocol": "dokodemo-Door",
       "settings": {
         "address": "20.20.20.20",
         "followRedirect": false,
         "network": "tcp,udp",
         "port": 8443
       },
       "tag": "inbound-8443"
     }
   ],
   "outbounds": [
     {
       "protocol": "freedom"
     },
     {
       "protocol": "blackhole",
       "tag": "blocked"
     }
   ]
}
  • After saving the file, hit restart the Xray kernel.
sudo systemctl restart xray

Adding Relay server to HiddifyManager

Now, register a subdomain with the proxy off for your relay server IP and register it in Hiddify Manager on Relay mode. - Put the registered subdomain in the Domain field and you can also set a Alias to display in the configurations.

As always in HiddifyManager, it is better to separate the configs from the subscription link. Therefore, for the registered Relay domain, you can check the Relay domain in the subscription domain settings so that its configurations are added to the subscription domain.

Assuming that the subscription domain is sublink.hiddify.com, proceed as shown below to get the job done.

Now, if you open the user page with the subscription domain (here sublink.hiddify.com), you will see that the connections related to the relay server have also been added. You can add and use these connections individually or using subscription links to your client.

Remove the Dokodemo-Door settings from the relay server

  • To do this, first run this command.
sudo rm /usr/local/etc/xray/config.json
  • Then stop and delete the Xray core.

sudo systemctl stop xray && systemctl disable xray
````

- Finally, enter this command to completely remove the app and service.
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove ```


Last update: May 13, 2024

Comments