dinosaurdynasty

@dinosaurdynasty@lemmy.world
0 Post – 19 Comments
Joined 1 years ago

An RSS reader (I use Miniflux), ended up being extremely useful

  • Almost every piece of software worth selfhosting has an RSS feed for updates (e.g., every GitHub releases page has an RSS feed). I started selfhosting a good deal more after setting up Miniflux.
  • Like omg there is this whole internet out there outside of Reddit/Twitter/etc that does RSS. The vast majority of blogs have RSS (e.g., Wordpress and Substack). I wish I had discovered RSS decades ago, so many websites I've forgotten because I would check updates manually and eventually just forget. I even host a personal Nitter instance so I can follow Twitter people in Miniflux.

Potentially stability improvements as well (for the same reasons as the security improvements), especially for lesser used drivers and stuff.

This isn't quite true, if three peers support https://en.wikipedia.org/wiki/Micro_Transport_Protocol, a third peer that has a port forward can act as a STUN server for the two peers without and let them connect directly to each other.

I don't know how well it works in practice, but Transmission supports it so I'll rely on it while this whole PF business settles down.

Do authentication in the reverse proxy if you can (e.g., basic auth or forward auth like Authelia, the second also has the benefit of SSO).

Miniflux is possibly the most important thing I self host. It tells me when software updates (basically everything on GitHub has RSS). It's also great to keep up with blogs that don't update consistently and also stay out of the "there are only three websites" bubble.

I use Caddy as a reverse proxy, but most of this should carry over to nginx. I used to use basic_auth at the proxy level, which worked fine(-ish) though it broke Kavita (because websockets don't work with basic auth, go figure). I've since migrated to putting everything behind forward_auth/Authelia which is even more secure in some ways (2FA!) and even more painless, especially on my phone/tablet.

Sadly reverse proxy authentication doesn't work with most apps (though it works with PWAs, even if they're awkward about it sometimes), so I have an exception that allows Jellyfin through if it's on a VPN/local network (I don't have it installed on my phone anyway):

@notapp {
  not {
    header User-Agent *Jellyfin*
    remote_ip 192.160.0.0/24 192.168.1.0/24
  }
}
forward_auth @notapp authelia:9091 {
  uri /api/verify?rd=https://authelia.example
}

It's nice being able to access everything from everywhere without needing to deal with VPNs on Android^ and not having to worry too much about security patching everything timely (just have to worry about Caddy + Authelia basically). Single sign on for those apps that support it is also a really nice touch.

^You can't run multiple VPN tunnels at once without jailbreaking/rooting Android

My two issues with porkbun:

They don't seem to support wildcard/catch all email forwarding

Dynamic DNS is done with an API key that has access to the entire account(!!!)

Though, I might move to them anyway (just moved a domain to namecheap which I used years ago and wow their ux sucks, and they don't support dane or sshfp, Google domains was really good rip)

This is FUD. There is no publicly known pre-image attack against SHA1, the hash used in mainline DHT.

1 more...

Sounds like a pain to get non technical family members to use. If you're willing to break the non web app you could always put it behind an authenticating proxy (which is what I do for myself outside of VPN, setting up a VPN on a phone is obnoxious and I only look at metadata anyway on my phone)

If the keys are password protected.... eh why not sync them.

Also ssh certificates are a thing, they make doing that kind of stuff way easier instead of updating known hosts and authorized keys all the time

1 more...

Hint: you don't have to use ldap to use authelia (I haven't bothered). It's a bit awkward to use though, I'd only recommend it for single-user setups (I wish they would just add support for SQLite, they already use it for 2fa and stuff)

Do not expose Jellyfin to the general Internet. They have security issues, I would not trust that (no cloudflare does not save you by default).

There are basically two ways: VPN, or authenticated reverse proxy. VPN is probably the easiest to setup and the most flexible, but it's a bit of a pita to use.

Authenticated reverse proxy will break apps, but the web app will work (and you can setup your reverse proxy to allow specific user agents from the VPN to bypass it, allowing apps on the VPN to work). I currently do this so I can look at metadata on my phone without a VPN setup.

Collision, not pre-image attack (the two are different)

CAA can also be used to disable http verification, meaning you would have to have control of DNS to be able to get a certificate (which the VPS ideally wouldn't have).

You don't even need the vps unless you're behind cgnat Though you should never expose Jellyfin to the Internet, they have had and continue to have major security problems

Why not just attach a non shitty device over HDMI and use that?

Lots of people do that, the Nvidia shield is one I hear a lot about

3 more...

Passwords will be brute forced if it can be done offline.

Set a good high entropy password, you can even tie it to your login password with ssh-agent usually

Private SSH keys should never leave a machine.

If this actually matters, put your SSH key on a yubikey or something

If a key gets compromised without you knowing, in worst case you will revoke the access it has once the machine’s lifespan is over.

People generally don't sit on keys, this is worthless. Also knowing people I've worked with... no, they won't think to revoke it unless forced to

and you will never revoke the access it has.

Just replace the key in authorized_keys and resync

And you may not want to give all systems the same access everywhere

One of the few reasons to do this, though this tends to not match "one key per machine" and more like "one key per process that needs it"

Like yeah, it's decent standard advice... for corporate environments with many users. For a handful of single-user systems, it essentially doesn't matter (do you have a different boot and login key for each computer lol, the SSH keys are not the weak point)

Fair, have never looked at the price, I just have a Linux mini PC running Jellyfin lol

Yup, there are many ways of doing that. Most reverse proxies should support basic auth (easy, but browser UX is terrible and it breaks websockets) or TLS client auth (even worse browser UX, phones are awful).

The best thing is do something like Caddy + Authelia (which is what I currently do with most things, with exceptions for specific user agents and IPs for apps that require it, aka non-browser stuff like Jellyfin),