I would like to make some of my self-hosted services externally accessible. Currently I use a VPN to access stuff externally, however this doesn’t work on all use-cases. I also use Tailscale for some things.
I would love to use cloudflare tunnels and another auth solution (like keycloak) to replace Tailscale and the VPN.
Is this feasible?
My end goal would be to setup Immich for my family, and have them not have to worry about Tailscale, a VPN or anything other than some initial login to keycloak (for example)
Tunnels are not authentication.
Are you asking how to have each service challenge for authentication? That’s up to the software.
True. I would like to add another authentication.
I guess my question is how trustworthy is built-in authentication? I’m not really talking about vulnerabilities, but that’s a part of this, but how much trust can I put into a small projects login page being secure?
I’d like to do the same, but atm I use nginx to serve all the web interfaces… And keycloak support is either a plus subscription feature or made to work with hacky Lua scripts.
So for now it’s security through obscurity, I got a wildcard cert and the pages are accessed based on subdomain. So afaik nobody has a clue unless they start iterating common subdomain names. (At some point™️ I’m adding proper auth though)
That’s really up to the software again. If you’re not technically inclined enough to run through the code, that’s fine, but you have to trust that other people are.
Go and search GitHub issues or this project by name for what you’re concerned about.
Authentication is also not security, btw. It’s just access. If you can be more specific about your concerns in your post, you may get more direct answers.
I set up Authentik for some of my services and it works.
The setup really threw me off but I powered through learning it. It’s a strange UI and process.
Basically you set it up with Nginx or Caddy or whatever reverse proxy you use. Your reverse proxy points to Authentik and Authentik takes that link and checks for authorization first. If not authorized, prompt login. If authorized, pass on to the subdomain or whatever it is.
To do all this, you’d need a domain.