• 9 Posts
  • 173 Comments
Joined 1 year ago
cake
Cake day: August 21st, 2025

help-circle
  • You could do that, but you’ll need to employ some kind of DNS tuning so that:

    • If you query for the domain from the LAN range, it responds with 192.whatever, and
    • If you query for the domain from the Tailscale range, it responds with 100.64.whatever

    The terminology for this is “split DNS” or “split horizon”. You can do this by selfhosting two DNS servers - one for the LAN and one for the Tailnet - with different records for the domain. You can selfhost the same DNS server on both the LAN and the Tailnet, and configure some rules so it answers differently based on the querant’s IP. Found this guide for Pi-hole. Technitium also works for this with its Split DNS app, but it’s a steeper learning curve.

    Furthermore, if you don’t wanna pay for a domain, just use one of the free dynamic DNS services. https://afraid.org/ is one of them.

    Alternatively, why not always connect to the Tailscale address in the first place? Tailscale probably run as an always-on VPN on your client device anyways, and you can reuse the address in the same LAN.






  • If you choose to go with Matrix, I would strongly recommend you to give the Continuwuity server a try. It is quite simple to install, much less resource-intensive than the commonly-used Synapse, and has an active community behind it.

    apparently, I need a TURN server to get this working properly

    Do note, Matrix recently has a new calling stack called MatrixRTC, and for that you would be setting up LiveKit in place of a TURN server. That also opens many ports by default, but I think there is a “UDP mux” mode that listens all on one port. I’ll be looking into it soon.

    The other alternative is XMPP, which is a bit more complex to set up (more ports and subdomains, non-HTTP protocol etc) but is generally more lightweight and fast. ejabberd is my choice, but people tend to like Prosody and Snikket as well. While they use the traditional TURN servers for calls, their clients could use a lot of improvements though…

    So yeah, my Continuwuity and the XMPP server sits on a small homelab machine, and with some extra tuning and grit, they work well. LiveKit and TURN sits on a VPS for better network performance. To be honest, I do all of this mainly because I wanna talk to cool people on the internet, so the service has to be federatable.


  • It’s a cartel in the sense that the CA/Browser forum determines, on their own whim, which CA gets featured or revoked in your browser. And single-handedly impose technical restrictions like shorter cert lifetimes and less features. Stuff like eMudhra being able to compromise everyone shows its quite a vulnerable group of single-point failures as well, but still condoned by almost everyone.

    ZeroSSL and Komodo does have free certs if I remember correctly. They’re still bound by the 90 days (soon to be 47) limit though









  • Hi, as someone running their Matrix server on the same ware (using Continuwuity)I have some thoughts:

    • The bulk of the load is in federation with other homeservers. If you only run it in non-federated mode the resource usage would be minimal like a simple REST API server.
      • If you do enable federation on such a low powered device, consider performance tuning it. DNS tuning is the most essential one, and then you should allow it to use some more RAM than normal (increasing cache capacity)
      • Also if you enable federation, expect it to be the software with the most resource impact. I think usually Jellyfin and Navidrome only uses CPU when you’re streaming something, but Matrix may do a lot more background work because federation and so on.
    • Calls are handled by a separate LiveKit SFU, which uses WebRTC for most of its operations rather than HTTPS. So you cannot expose it using Cloudflare Tunnels, and you may run into issues forwarding/routing a large number of UDP ports as well.
      • I usually recommend renting a VPS for Livekit instead for simpler config and networking. But if you somehow get it working on the Pi itself as well it’d be great to know.
    • I used mautrix-whatsapp a long time ago for the bridge. It was good enough, but do note that it is just a stopgap solution to prevent social isolation. Its better to eventually move people to free protocols.

    I’d also like to rehash what the other commenter say in that you’d get much more juice out of a mini PC or some other non-embedded devices. This is for all your software anyhow.

    And yes, Continuwuity can run in docker compose. There’s a few example files for it on the site, feel free to check it out and ask in the support room.




  • Hi all, thanks again for the valuable insights, I really appreciate your comments. I realized I’ve overlooked a few topologies, namely that of having granular accounts for different admining purposes/different services (and using different names for them). Also, my IDP (Kanidm) also has a service accounts feature which can be delegated to real human accounts, so I think I should also be looking into that.

    It’d be nice to have something like a “second password” for granting temporary privileged access to other apps’ admin commands, but OIDC doesn’t work this way sadly. Lastly I’d also need to consider managing SSH and non-app stuff as well.




  • Hi, I’ve been running something similar with Tailscale. Instead of traefik, you can use any other TCP proxy like nginx or caddy-l4, or even use tailscale serve on the edge VPS as well. Do note that all of your listed services except Zola will make outbound requests, so it could be better to also exit node through the VPS (like the article did), as to avoid exposing your residential IP.

    As for the linked personas, you may wanna use one domain instead of two. Matrix homeservers can be resource-heavy for example, so maybe consider @persona1:example.com and @persona2:example.com on a single server instead of having two resource hubs that does essentially the same thing. The same applies to GotoSocial and Lemmy. By the way, I recommend Continuwuity for the Matrix server :)

    Static sites don’t actively take up resources, so they can be on separate domains. But again you may wanna save some money, so maybe consider using persona1/persona2.example.com subdomains, or even pubnix-style example.com/~persona(1|2) paths!

    As for the Docker management frontend, I have no idea which one’s the best right now 😅 but do make use of Tailscale SSH feature to troubleshoot other parts of your machines as well. And as for updates, I just subscribe to RSS feeds to keep the important software updated. Highly recommend you do that too to check out changelogs yourself.