<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hilman F. Rakhmad]]></title><description><![CDATA[Hilman F. Rakhmad]]></description><link>https://blog.hifra.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 07:50:51 GMT</lastBuildDate><atom:link href="https://blog.hifra.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How I Bypassed the Firewall to Create a Minecraft Server]]></title><description><![CDATA[Long story short, my friends and I need a Minecraft Server to play together. As a student, we usually utilize Azure's student offers which give us $100 credits each year to be used to create any Azure resources. We use those credits to create a VM an...]]></description><link>https://blog.hifra.dev/how-i-bypassed-the-firewall-to-create-a-minecraft-server</link><guid isPermaLink="true">https://blog.hifra.dev/how-i-bypassed-the-firewall-to-create-a-minecraft-server</guid><category><![CDATA[ZeroTier]]></category><category><![CDATA[networking]]></category><category><![CDATA[minecraft server]]></category><category><![CDATA[minecraft]]></category><category><![CDATA[vpn]]></category><dc:creator><![CDATA[Hilman F. Rakhmad]]></dc:creator><pubDate>Wed, 26 Oct 2022 14:01:30 GMT</pubDate><content:encoded><![CDATA[<p>Long story short, my friends and I need a Minecraft Server to play together. As a student, we usually utilize Azure's student offers which give us $100 credits each year to be used to create any Azure resources. We use those credits to create a VM and installs Minecraft Server there. The problem with this approach is that a Minecraft Server requires a pretty heavy resources, especially if we're trying to explore the map. Of course, a VM with big CPU/RAM is pretty costly, thus consuming the free credits pretty quickly.</p>
<p>Then I thought of using an unused PC to run the server, using a small instance of Azure VM as SSH tunnel to make the server accessible from the Internet. The concept is pretty simple:</p>
<ol>
<li>Run an SSH Server on Azure</li>
<li>On the local PC, open a remote tunnel using SSH to Azure VM.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1666790882432/bRVtEycyG.png" alt="image.png" /></p>
<p>Local PC executes this command to connect and create remote tunnel to SSH Server:</p>
<pre><code>ssh -R <span class="hljs-number">25565</span>:localhost:<span class="hljs-number">25565</span> user@&lt;AZURE_PUBLIC_IP&gt;
</code></pre><p>This command forwards connection coming in Azure's port 25565 to Local PC port 25565.</p>
<p>It should've work in my opinion but turns out it doesn't. After a not so thorough investigation, it turns out that our internet provider blocks SSH connections and other connections using unusual ports (including Minecraft's default port). But I noticed that we can still use VPN to access the SSH server.</p>
<p>This is where I decided to use <a target="_blank" href="https://www.zerotier.com/">ZeroTier</a>, a VPN that allows connecting devices on different networks across the Internet and make them communicate just like in local network for free. I created a network, installed ZeroTier on both the SSH server and the local Minecraft server, and connect them to the ZeroTier network I just created. Now each machine has a new IP address from the ZeroTier network. I did a ping test from the local server to SSH server's ZeroTier IP address to test if they can contact each other, and they did.</p>
<p>A second attempt to connect the local server to the SSH server is done by changing the IP address used to connect to SSH server. Now local server will try to connect to SSH server using the ZeroTier IP address.</p>
<pre><code>ssh -R <span class="hljs-number">25565</span>:localhost:<span class="hljs-number">25565</span> user@&lt;AZURE_ZEROTIER_IP&gt;
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1666792679606/yv6OhDzVQ.png" alt="image.png" /></p>
<p>And it connected successfully. Now we can access the Minecraft server by accessing Azure's public IP address. The Azure VM used only has 0.5 vCPU and 512MB of RAM, and it still can handle more than 5 players because it's only used to forward the traffic, all the heavy processes of Minecraft server are being done in the local PC which is more powerful.</p>
]]></content:encoded></item></channel></rss>