Helping friends in foreign countries

Foreign countries

You may want to help a friend in a foreign country by hosting a proxy server for them.

Hosting the proxy in your home has the advantage that your residential IP address is highly unlikely to be on a block list.

Here are the preconditions you must meet:

  1. Hosting a proxy server for your friend will not work if you have Carrier Grade NAT (CGNAT) at home. This is where an ISP allocates a single IP address to an entire building or block. It is common in some countries.
  2. You need to either have a relatively static IP address, or else subscribe to a dynamic DNS service.
  3. You need to have access to your home router, and enough knowledge to open port(s) and forward them to the computer you’ll be using to host your proxy server.
  4. If you’ve never done anything like this before, you’ll need to know how to use a search engine to find solutions to any problems you encounter.

If you meet all these preconditions, you need to determine which protocol(s) will work for your friend. Ten or fifteen years ago, it was easy to solve this problem with suggestions like “Use TCP on port 443” or “Use Shadowsocks.” Unfortunately censorship is rapidly evolving. Nowadays you need to get up-to-date information about recent conditions in your friend’s country. You can get this by reading forums like NTC, GitHub, or the various Telegram groups, e.g. projectXray or v2fly_chat.

Now for the choice of hardware platform:

  • A Raspberry Pi dedicated to hosting your proxy server gives you the most flexibility and the widest range of choices. You need to be comfortable enough with Linux and the command line to follow along with tutorials and videos.
  • You can alternatively host a proxy server on an ordinary Windows PC. You need to leave the PC on all the time, and adjust the PC’s power settings so the PC never goes to sleep.

Once you’ve decided on a protocol that will work, you can build your proxy server. Examples of appropriate software would be SoftEther, the Rust version of Shadowsocks, OpenVPN, V2Ray, or Xray. You can alternatively host a WireGuard server on a Raspberry Pi. WireGuard as a server is not officially supported on Windows.