stratself

joined 1 year ago
[–] stratself 1 points 8 hours ago* (last edited 8 hours ago)

I wrote this by myself using anectodal sources from the community and experience hosting the thing, and no, it never passed through any LLMs. Perhaps I should approach things with a less upbeat and more cynically curt tone.

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

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.

[–] stratself 3 points 1 day ago (1 children)

When the author started using it didn't support edits yet

[–] stratself 1 points 5 days ago (1 children)

Again in the linked Server-Server API, I can only find mentions of device details here. The most that is required is an opaque device ID, which alone cannot infer more device details. device_display_name is fully optional and hasn't been sent by servers for ages.

These device updates are used for sending device keys, which is needed for establishing multi-device E2EE sessions. The same kind of ratchet-based E2EE that Signal utilizes. The paper you linked only investigated a single server, non-federated deployment, extrapolating every finding to federation just doesn't make any sense.

[–] stratself 6 points 6 days ago (3 children)

Kindly find me proof that the Matrix protocol explicitly sends a user client's version and device details towards another server when engaging in federation.

Do note that Matrix and open protocols are federated, and requires some amount metadata to actually process+route stuff.

[–] stratself 3 points 6 days ago* (last edited 6 days ago) (5 children)

Federation never sees your client IP and device details. The same problem applies to most messaging services and protocol anyways. Do you have any better offerings?

Although that SynExtract tool in the linked paper could be nice.

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

Caddy does certs by responding to ACME challenges on port 80 and 443. You need to forward those ports from the public internet back to Caddy, have you done that?

Edit: it seems like you're doing DNS challenges. Did you compile Caddy yourself with the right plugins? Have you tested the API token work? Any Caddy logs?

[–] stratself 1 points 2 weeks ago (1 children)

ssh and samba aren't meant to be reverse proxied. just use a dedicated port, ip, and dns entry for them, and the rest wildcarded back to traefik.

if you insist you need to route it through a "central machine", either look into layer-4 reverse proxying (e.g. traefik's tcp routers, nginx stream module, rinetd) or port forwarding from traefik.srv.lan to nas.srv.lan and so on. you can even use something like sslh to multiplex samba, ssh, and http on the same port 443. but generally these are not gonna be needed

[–] stratself 7 points 2 weeks ago

It bundles WireGuard transport layer and a SNI reverse proxy natively, along with optional authentication. Good enough for beginners or people who need quick deployments.

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

Hi, the sourcehut seems to be pretty interesting. If I understand it correctly, this DANE-without-root provides a TOFU model as an alternative to the normal case of verifying up all the parts of the domain levels, right? If feasible, maybe that could be nice to extend with other methods for OOB verification and key rollover

 

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!

[–] stratself 5 points 1 month ago (1 children)

Most of the software are old versions, Forgejo 7 is like years ago now. Why are you running benchmarks on these versions and not the latest ones?

 

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 10 months ago* (last edited 10 months 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 ›