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

help-circle


  • 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.






  • For TLS I am looking into using CertBot and it appears there’s a module (https://github.com/desec-io/certbot-dns-desec) I can use that works for https://desec.io/ to handle my certs.

    You can consider using lego-acme as well. It’s not too different, just that it comes prepackaged with a bunch of DNS providers including desec, so you don’t need to install an additional module.

    Since Caddy is handling my certs automatically, how often would I want to renew my certs?

    By default, certs are valid for 90 days so you’d wanna renew a bit earlier than that. There’s also the option to use 45-day certs or 6-day certs, depending on the profile chosen.

    Would I be required to run the same command periodically to renew my cert?

    Yes, but it’s better if you automate them, like Caddy did, and both Certbot and lego can do this well. I run lego via a cronjob which checks for the certs’ expiry, and renew it when it passes a certain deadline.

    I am looking to hear any suggestions or experiences about different reverse proxies that are preferably free of AI

    Not sure I can recommend anything from that list because I’m not familiar with them, but I’ve heard haproxy to be very performant.




  • Hello,

    I believe Matrix would be the most suitable candidate for your use case. The protocol supports both public and private (invite-only) rooms. It also has spaces, which are collections of rooms that helps with organisation (and yes they do exist in the sidebar). Voice/video calls can be done through Element Call which is integrated in many clients, and are usually quite performant. Pinned messages and polls are natively supported, and there exist various bots for reminders and other little neat features (see the Maubot plugins).

    Matrix is also federatable like email, so you can extend your community to people on other servers in the network, too. Be sure to employ moderation tooling though, of which the ecosystem has plenty of and are improving every day. I also recommend testing out non-Element clients (such as Sable, Cinny, or SchildiNext) to see which one fits best with your organisation.

    In another comment, you have mentioned the limit of 100 users. I believe this only applies for the Element Server Suite freemium solution, and so I ask, why not use another open source solution? My suggestion would be Continuwuity, a homeserver written in Rust with a very active community behind it. Continuwuity is generally considered much more lightweight than alternatives, and have been seen supporting sub-500 users just fine on a machine with 8 gigs of memory.

    There’s some other QoL features of Continuwuity you may be interested in, like auto-joining to a room after account creation, or registration via admin-issued tokens. It can also integrate with your favorite single-sign-on solution via OIDC as well. So yeah, feel free to ask more about it here, or take the next steps in the support room!


    There exists other solutions as well, but I think they are not the best candidates for few reasons. XMPP (i.e. the protocol behind Snikket) is more lightweight, but its clients still generally lack support for group calls, pinned messages, and polls. Fluxer may have a better UI, but it is not federated from the ground up which can lead to problems. I don’t think Nextcloud Talk offers federation either(?), but I believe Nextcloud to be a quite heavy, “bells and whistles included” software suite in general which may be too much for your use case.