stratself

joined 1 year ago
 

Jade and Ginger from the Continuwuity project talked about the Stitched Ordering algorithm at the last Matrix Conference. It is a serverside best-effort approach to render a coherent timeline for clients, and gracefully resolve gaps inside rooms.

[–] stratself 4 points 4 days ago

This seems quite offtopic for this community. If you want to selfhost your own Lemmy server though, people here may help you

 

Just a quick notice for anyone using this software in their homelab. Tailscale has released v1.104.4 to address a series of prominent vulnerabilities disclosed last week. These vulns affect the Tailscale Serve and Tailscale SSH functionalities of the software, and allow already-authorized attackers to gain further privileges erroneously. Kindly update to that version or higher, especially if you are using one of the SSH/Serve features.

For headscale selfhosters that also use Tailscale SSH, consider setting TS_SSH_DISABLE_FORWARDING=1 on all clients, as headscale does not have a way to force turning off SSH forwarding (one of the attack vectors). Headscale also has a relevant disclosed vulnerability affecting node registration, and an in-progress patch for that which is trackable here.

Finally, do give your SSH grants/access control list a review again. You may also disable these ssh/serve features if you don't need them (and even compile the binary without them if you know how), and consider traditional alternatives such as OpenSSH + normal reverse proxy.

Further links:

  • Tailscale's blogpost on findings and fixes, with security recommendations
  • Tailscale's security bulletin for more info on the vulnerabilities (see TS-2026-014 to TS-2026-017)
  • Their prior investigation notes here
[–] stratself 15 points 1 week ago (1 children)

Matrix, and I recommend selfhosting Continuwuity as it is lightweight and easy to spin up. Your other option could be XMPP with Snikket or proper Prosody.

Though do you have any particular features you wanna bring over from Facebook Messenger?

[–] stratself 3 points 1 week ago
[–] stratself 3 points 1 week ago

Just Ctrl+F it will bring up search which queries the local gomuks.db

It cannot start in offline mode but it'll keep itself up when disconnected from your server. Might wanna feature request that one

[–] stratself 1 points 1 week ago (2 children)
[–] stratself 3 points 1 week ago

Pihole would be easy for a RPi 4. I'd also consider AdGuard Home which does the same thing, but has out-of-the-box support for encrypted upstream resolvers. I eventually moved on to Technitium for more advanced use cases (hosting my own domains, native config syncing between nodes), albeit it can use a bit more RAM.

[–] stratself 2 points 1 week ago* (last edited 1 week ago) (1 children)

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.

[–] stratself 15 points 2 weeks ago (3 children)

I'd prefer Adguard Home. Does the same thing but also supports encrypted DoT/DoQ/DoH upstreams. And the UI looks a bit neater for me

[–] stratself 4 points 2 weeks ago

Since nobody mentioned, I recommend https://desec.io/ as the DNS provider. Has a good REST API to update records, also provides a dedyn.io dynamic domain, and runs as a nonprofit. I think ddclient will also support it natively in the next release as well.

The solution of renting a VPS also works but usually incurs some cost. You might also want to look into Cloudflare Tunnels

[–] stratself 1 points 3 weeks ago

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.

[–] stratself 5 points 3 weeks ago (1 children)

Use grants rather than ACLs, they're the "new" way of doing access control. Host a full-fledged DNS resolver inside your Tailnet (AdGuard Home, Pi-hole etc) to do adblocking and local zones, the MagicDNS custom records are very rudimentary. If you intend to integrate with a third-party UI, doublecheck which Headscale version they support and ask in the Discord, since they usually lag behind a bit. Prioritize peer relays over DERPs for performance.

55
submitted 3 weeks ago* (last edited 3 weeks ago) by stratself to c/selfhosted@lemmy.world
 

Hi all. I've been wondering about account separations while reviewing my SSO stuff. Do you all create a separate account for administrative tasks for your services? Or do you just give your normal account admin rights?

In my opinion, a different account is nice to separate impactful admin work (like provisioning users and groups) from general usage. Having this UX "barrier" also somewhat prevents doing dumb things like accidentally deactivating other people's accounts. But the downside is it can be quite inconvenient, especially if I need to administer or debug something quickly. I'm also not sure if my homelab expands, should I share the admin user credentials with other human admins or not.

What's the best topology to use? Or is there some other "accounts structure" that I've missed? I'm looking to replicate the same mapping between my identity provider and all dependent services as well (so that if an account is marked as admin on the IDP, it'll also be the admin for Forgejo or my Matrix server). So it'd be nice to settle on a plan right now.

Thanks for any responses!

[–] stratself 3 points 3 weeks ago

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.

 

Since the beginning of this year, Let's Encrypt rolled out a new shortlived profile for certificates that make them valid for only 160 hours. The intention, as they say, is to encourage automation and reduce the window of certificate compromise (because revocation is somewhat a flakey thing).

Yet, I haven't seen a lot of news about it since then. Hence the question: is this shorter cert thingy something you considered and deployed for your homelab?

As for me I've set up lego-acme with profile: "shortlived" on my rig. Lego runs on a bihourly cronjob, but only renews when a cert has >=3 days to expiry. It's been pretty much a set-and-forget experience, although some more monitoring would be nice.

 

Continuwuity, the Matrix homeserver with an incredible name, has gotten a new version!

The highlight of this release is a brand new way to track remote server health, in order to recover faster from federation issues. Previously, an unreachable remote triggers a very naive retry loop with increasing timeouts (i.e. sender backoff), which by itself can present cascading problems.

Now, such a loop can be reset when the remote is detected back online (e.g. when they send something new), and any retry attempts also redo the server destination discovery instead of using potentially stale cache values. The result is better, more reliable federation recoveries, especially towards servers with dynamic IP addresses rotation.

Experimental support for Sticky Events has also been added behind an opt-in toggle. These special event types allow for efficient, ephemeral user states that can expire later, such as someone's participantship in a video call. Alongside the drafts for Delayed Events and embedded Livekit token service, it is one of the building blocks to support calling in the MatrixRTC 2.0 era.

Futhermore, various bugfixes to OAuth2-based logins, client-server syncing, and room state resolution allows for a smoother, more correct experience. The docs have also been updated in some aspect. Finally, the new version also contains a security fix in store, so please update after checking the changelogs accordingly.

Still reeling in from the June update where a third of the codebase was refactored, the homeserver's development remain steadfast as ever, despite any recent downtimes on the git forges or community rooms. The maintainer team yet again delivered with speed and excellence, so Continuwuity can be a Matrix server you can run!

 

Technitium DNS Server v15.1.0 has been released with support for OIDC! Now you can use your preferred identity provider to log in to user accounts, and manage your DHCP/DNS deployments with approriately granular permissions controls.

I've played around with it, and safe to say that the SSO integration works well. I've written a guide to set it up against Kanidm here. There were some OIDC/clustering bugs in prior v15 releases, and with v15.1.0 they have been squashed and solved.

The major release of version 15 also include various important changes, such as the following highlights:

  • A new API call for Prometheus metrics
  • Query Logs apps can now follow live updates
  • Codebase updated to .NET 10 runtime
  • HTTP tokens are now accepted via the Authorization: Bearer <token> header
  • Many other bugfixes, secfixes, and improvements...

Technitium is pretty great. Hope everyone enjoy the release :)

 

There is a recently discovered critical vulnerability that affects all Matrix homeservers of the Conduit lineage. If you're using a Rust-based Matrix server (which are basically Conduit and forks), please urgently upgrade to the following versions:

If you're not able to upgrade right now, you should urgently implement this workaround in your reverse proxy.

Attackers exploiting this flaw can arbitrarily kick any user out of a room, join rooms unauthorized on the same server, and can also ban same-server users. They effectively constitute a severe denial of service from an unauthenticated party, and it has been exploited in the wild.

 

Technitium DNS Server (TDNS) has gotten a new release with many awesome features: TOTP authentication, an upgraded .NET library, and many security and performance fixes.

But most important of all, it now supports clustering. A long-awaited feature, this allows Technitium to sync DNS zones and configurations across multiple nodes, without needing an external orchestrator like Kubernetes, or an out-of-band method to replicate underlying data. For selfhosters, this would enable resilience for many use cases, such as internal homelab adblocks or even selfhosting your public domains.

From a discussion with the developer and his sneak peek on Reddit, it is now known that the cluster is set up as a single-primary/multiple-secondary topology. They communicate via good-old REST API calls, and transported via HTTPS for on-the-wire encryption.

To sync DNS zones (i.e. domains), the primary server provisions the "catalog" of domains, for secondary ones to dynamically update records in a method known as Zone Transfers. This feature, standardized as Catalog Zones (RFC9432), were actually supported since the previous v13 release as groundwork for the current implementation.

As an interesting result, nodes can sync to a cluster's catalog zone, as well as define their own zones and even employs other catalog zones from outside the cluster. This would allow setups where, for example, some domains are shared between all nodes, and some others only between a subset of servers.

To sync the rest of the data such as blocklists, allowlists, and installed apps, the software simply sends over incremental backups to secondaries. The admin UI panel is also revamped to improve multi-node management: it now allows logging in to other cluster nodes, as well as collating some aggregated statistics for the central Dashboard. Lastly, a secondary node can be promoted to primary in case of failures, with signing keys also managed within for a seamless transition of DNSSEC signed zones.

More details about configuring clusters is to be provided in a blogpost in the upcoming days. It is important to note that this feature only supports DNS stuff, and not DHCP just yet (Technitium is also a DHCP server). This, along with DHCPv6 and auto-promotion rules for secondaries, is planned for the upcoming major release(s) later on.

As a single-person copyleft project, the growth of this absolute gem of a software has been tremendous, and can only get better from here. I personally can't wait to try it out soon

Disclaimer: I'm just a user, not the maintainer of the project. Information here may be updated for correctness and you can repost this to whatever

66
submitted 1 year ago* (last edited 1 year ago) by stratself to c/selfhosted@lemmy.world
 

Hi all, I made a simple container to forward tailscale traffic towards a WireGuard interface, so that you can use your commercial VPN as an exit node. It's called tswg

https://github.com/stratself/tswg

Previously I also tried Gluetun + Tailscale like some guides suggested, but found it to be slow and the firewall too strict for direct connections. Tswg doesn't do much firewalling aside from wg-quick rules, and uses kernelspace networking which should improve performance. This enables direct connections to other Tailscale nodes too, so you can hook up with DNS apps like Pi-hole/AdguardHome.

I've shilled for this previously, but now I wanna promote with an actual post. Having tested on podman, I'd like to know if it also works on machines behind NATs and/or within Docker. Do be warned though that I'm a noob w.r.t. networking, and can't guarantee against IP leaks or other VPN-related problems. But I'd like to improve.

Let me know your thoughts and any issues encountered, and thank you all for reading

 

Hi all. Per the title, I'm looking for something that:

  • Can run as an unprivileged user inside a container

  • Allows OpenID Connect authentication for a multiuser setup

  • Doesn't take hostage of my CPU

Homarr and Dashy are featureful solutions, but they can't run unprivileged in docker. Dashy closed this issue, but in fact it's not resolved. Meanwhile Homarr does work with UID/GID env vars, but starting as root and dropping capabilities is not the same as defining user: 1234:1234 from the get-go. Furthermore, they are really heavy node apps, which kinda deter me from deploying.

I neither wanna use my reverse proxy with forward auth or having an extra oauth2-proxy container, so Organizr (using forwarded auth headers) or Homer/Homepage/bunch of static pages behind a reverse proxy is out of scope.

Feature-wise I'm just looking for a beautified link keeper, preferably with multiple dashboard mapped to different user groups (ideally it could be done via custom OAuth metadata/claims). Fancy plugins like RSS and weather are not needed, but appreciated.

With all that said (and sorry if I'm too choosy), is there a current solution that fits the bills above? My IDP's UI is quite rudimentary, but I can resort to using it as a "homepage". I wanna thank in advance for any guidance

P/S: Seems like most dashboards fall into two categories - bloated fancy apps, or dead simple frontpages. It'd be nice to have something inbetween.

view more: next ›