Hacker News new | ask | show | jobs
by austin-cheney 5 days ago
My hobby is self-hosting.

* I have a dedicated server at the house where I run nearly a dozen services via docker compose.

* I wrote my own audio app for playing my self hosted mp3s because everything I found on the App Store was shit. I wanted something like Winamp: a simple media player followed by a playlist of thousands of items that works equally on desktop and iPhone. https://github.com/prettydiff/mp3-master-list

* I wrote my own server management dashboard utility. There are some really good existing ones but I thought I could do better, particularly around creating new web servers and proxies in seconds. Apache and NGINX busted pissed me off when creating simple ultra fast proxies, especially around web sockets, and also did not provide a dashboard. https://github.com/prettydiff/aphorio

Because I am writing more and more of what I need I can integrate features in ways others cannot. I am trying to figure out SMS protocol right now so my custom apps can text me, and others on my private cluster, app needs or calendar appointments

2 comments

I'd like to self-host personal projects as well but haven't been able to figure out way to do it behind NAT and also on a budget hardware. Is there a way to get in touch with you and get some ideas?
I am on budget hardware. Do not let this stop you. I bought a really crappy cheap box for $300 before hardware prices went crazy. My hard drives don't even fit in the case.

As for NAT I use the free tier of TailScale to expose my home network to specific devices in the public world. This way I can play my media or access my files, that are behind NAT, from across the country when traveling.

If you would like to talk more about this my email is in my HN profile. I am always looking for new idea and use cases to expand my Aphorio dashboard app.

Thanks, I will get in touch.
If you don't want to run your own VPN, there's Tailscale or CloudFlare Tunnel, both widely known and provided by reputable companies.
How do you securely expose your local services through Tailscale or Cloudflare Tunnel? For eg. Is it possible to expose just web server instance on port 80 and nothing else? Even better if possible to just expose one web service. Also, is it possible to ensure no other local devices are accesible from public?
These services do a couple of things:

1. They provide a VPN for your device to their server.

2. They then map that device to a public IPv4 address they own. The address is not static, but TailScale solves for that with internal DNS.

3. The free tier allows X number of devices to connect via a single account. I am not sure how many. Maybe 6, maybe 20. These devices are able to access each other on a private network only available from the VPN. TailScale calls that a TailNet.

4. They have internal DNS for the TailNet, so that you can map a name to one of those IPv4 addresses they provide and connect to something like http://server

5. I have not tried the others, but the TailScale magic DNS does not fully work on iOS. On iOS its all or nothing in that once their DNS is enabled its all you can access until your bring TailScale down on your device. I don't have this problem on my desktops (Windows or Linux) so my desktops are always connected.

6. NordVPN also provides these same capabilities, but they do not have a free tier. I don't know if they up charge for this capability above standard VPN.

7. Most all of these solutions seem to be based on WireGuard. WireGuard is an open source VPN solution, but it does not provide the extra services: IP address, DNS, service accounts, private network.

In summary, TailScale provides a VPN to a private cluster, your private cluster, that can be accessed from any network, due to the public IP, so long as the given device is on the same VPN account or has received an invitation from that account.

Some time ago I looked at running this on a very small cloud VM to act as a proxy for pi-based devices:

https://github.com/fatedier/frp

That is awesome. It is really cool that your apps are exactly what you want