this post was submitted on 27 Jul 2023
19 points (91.3% liked)

Selfhosted

40359 readers
382 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

I am hosting few services for my friends and family on my server. Due to devices limitations, I can't install VPN on TVs etc. Is it possible to restrict the access to only those users that have a certificate issued by me?

all 12 comments
sorted by: hot top controversial new old
[–] SheeEttin@lemmy.world 15 points 1 year ago (1 children)

I doubt you'll be able to install client certificates on TVs either. Typically you'd establish a site to site VPN in each location's network stack.

[–] WhyAUsername_1@lemmy.world 0 points 1 year ago

I am hoping it might work. It's Android TV. So it should support certificates. Site to site VPN is a bit challenging. I will try to explore the mTLS option suggested here.

Thanks!

[–] sv1sjp@lemmy.world 4 points 1 year ago (1 children)

Personally I use Caddy reverse proxy server and Pihole. I have configured my IP as a domain name in local DNS (example.com).

Caddy supports automatic TLS 1.3 support. So I just copied the CA file snd I installed to all of my devices (even in my Oculus Quest 2). I want to watch movies? I am coming to movies.example.com. i want to read my books? bookd.example.com.

Caddy configuration is very easy, even using containers with docker.

[–] WhyAUsername_1@lemmy.world 1 points 1 year ago

So you have configured mTLS in caddy? Can you point me to any resources that go through how to do it?

[–] trimmerfrost@lemm.ee 4 points 1 year ago (2 children)

Use mTLS (mutual TLS) also called client certificates with nginx or whatever your webserver is

[–] amp@kbin.social 2 points 1 year ago (1 children)

mtls over nginx is the simplest way. but be aware that while it works great on desktop browsers, other reduced browsers (incl mobile) often don't support it.

[–] trimmerfrost@lemm.ee -2 points 1 year ago

It works on Android using Chromium based browsers too. You have to install your client certificate in the Android Settings. When you visit the site using a chromium based browser, it will ask you to verify yourself using the installed certificate. I used to use it in the past

Unfortunately it doesn't work with Firefox on Android. Don't know anything about iOS

[–] WhyAUsername_1@lemmy.world 1 points 1 year ago

Superb. Planning to implement this with Caddy. Nginx was having performance issues , last time I configured it. Maybe I didn't configure it well..

Will try nginx as reverse proxy if Caddy doesn't work well for mTLS.

[–] Ocelot@lemmies.world 3 points 1 year ago (1 children)

Are you able to open it to the internet and put these services behind an auth proxy? that might be the way to do it. Or if it already has login you might be able to put it behind a cloudflare WAF or similar and restrict bots and bad actors.

[–] WhyAUsername_1@lemmy.world 1 points 1 year ago

It already has authentication. The problem with cloudflare WAF is that my application is streaming videos, that is against the Cloudflare's ToS.

[–] amp@kbin.social -1 points 1 year ago

^ that is the way. works well on desktop browsers, but others like mobile often don't support mtls :(