Homelab Arena Part 10: Taking My Homelab to Hong Kong with Headscale
A homelab project feels different when it stops being something I only test from the couch.
After setting up Headscale, a subnet router, and an exit node, I went to Hong Kong for vacation. That became the real test. I was no longer on my home Wi-Fi, sitting near the servers, able to fix things easily if something went wrong. I was abroad, using hotel Wi-Fi, mobile data, airport networks, and whatever internet connection was available that day.
That was when the Headscale setup stopped feeling like only a networking experiment. It became something I actually used.

The funny part is that I did not build it for one specific travel use case. I built it because I wanted private access back into my homelab without exposing internal services to the public internet. But once I was overseas, the value became much easier to understand. My laptop and phone could join the Headscale network, the subnet router at home gave me access back to the homelab, and the exit node gave me the option to route traffic through my home network when I needed that behavior.
That combination turned out to be more useful than I expected.
The exit node was the travel feature
Before the trip, I thought the subnet router would be the main win. Being able to reach internal services through c.home was the thing I cared about most during setup.
But while traveling, the exit node became just as important.
Some services behave differently when I am outside the United States. Banking apps can be more sensitive. Some AI chatbot services and websites change availability by region. Sometimes a login or request just feels smoother when traffic comes from the network I normally use.
The exit node gave me a simple switch. Most of the time, I used the local internet normally. When something cared too much about region or location, I routed traffic through home. I did not need to keep it on all the time, and that is what made it practical.
It was not a complicated workflow. It was just an option I had when I needed it.
Banking felt less annoying
Online banking is one of those boring things that becomes very important when it does not work.
I do not blame banks for being cautious when a login suddenly comes from another country. That is a reasonable security signal. But when I am the one traveling, I still need to check accounts, pay bills, or confirm a transaction.
Using the home exit node made that experience feel more normal. I was still careful, but I did not feel like every login had to fight against the fact that I was abroad.
This was one of the first moments where the setup felt less like a homelab toy and more like useful personal infrastructure.
Regional behavior was easier to handle
The same thing applied to services that behave differently depending on location.
I noticed it most with AI chatbot services and some websites. Sometimes the service availability, login behavior, or response was different because I was in another region. Instead of trying random workarounds, I could route through my home exit node and continue.
That does not mean I used the exit node for everything. I actually liked having both modes. If local internet worked fine, I used it. If something was region-sensitive, I switched to the home exit node.
That flexibility was the point.
The homelab domain still worked
The part that made me smile was that my internal homelab names still worked from Hong Kong.
When I am at home, I am used to opening services with names like:
blog.c.home
That name belongs to my home network. It is not a public domain I expose to the internet. It works because my private DNS knows where it should go.
While traveling, I connected through Headscale and opened:
https://blog.c.home
The page loaded.
That small moment made the whole setup feel worth it. I was not using a public hostname. I was not opening ports on the router. I was not memorizing private IP addresses. I was using the same internal name from another country, through the private network path I had built.
The homelab stayed private, but it came with me.
Uploading files back home
Travel creates files.
Photos, videos, downloads, documents, random notes — they pile up quickly. I liked being able to upload files back to my home server without exposing a public file upload service.
The path was already there. My device joined Headscale, reached the home network through the router, and sent files back privately.
This is not technically flashy, but it is exactly the kind of thing that makes self-hosting feel useful. I did not need to change my security model just because I was away from home. I did not need to make a temporary public endpoint. I did not need to depend on a workaround.
The private access layer was already there.
Jellyfin made the trip better
I also used Jellyfin more than I expected.
Being able to listen to music from my own server while traveling felt surprisingly good. It was not about replacing every streaming service. It was more about having my own library available from my own infrastructure.
Jellyfin stayed private at home. I connected through Headscale. The route back to the homelab already existed.
That is the part I liked most. I did not need to build a special travel setup for music. It was just another service that became reachable once the private network was working.
The real test was normal life
The real test of this setup was not whether the commands worked. The real test was whether I used it when I was tired, traveling, and trying to do normal things.
Check banking. Use an AI service. Upload files. Listen to music. Open an internal homelab service.
None of those are fancy demos. That is why they matter. The best homelab projects are not always the ones with the most complicated architecture. Sometimes they are the ones that quietly make normal life easier.
This trip proved that Headscale, the subnet router, and the exit node were not just a fun build. They gave me a private way back home when I was far away.
Where this leaves things
I still have more to improve.
Access control is the next obvious layer. Not every device should reach every service. Some devices should only reach media. Some should reach admin tools. Some should only use the exit node. That is where the setup needs to grow next.
But for this trip, the important part worked. When I was in Hong Kong, I could reach my homelab without making it public. I could route through home when a service cared about region. I could upload files back to my server. I could listen to my Jellyfin music. I could open blog.c.home from outside the house.
That is enough to make the project feel real.
The homelab was still at home, but it was no longer stuck there.