Finally moved it all through Authentik ! reddit / selfhosted ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-28 15:00 Just posting here cause I have been a lurker for a long time and wanted to share the latest version of my Kubernetes based homelab ! [When finally all of it is in one place !](https://preview.redd.it/1w6 gk1jtgywb1.png?width=3840&format=png&auto=webp&s=93ec9cdca2b432e215287 5b84a2e8594a75f16e2) Services Details: * **Authentik:** Authentication SSO for all services (The UI you see here) * **Adguard:** DNS server for the homelab as well as DNS blocker * **ArgoCD:** Applications to deploy apps to Kubernetes * **Gitea:** Git source code version control * **Longhorn:** Storage for the Kubernetes cluster * **MinIO:** Backup storage for the Kubernetes cluster * **DSM:** Synology NAS main UI * **Traefik:** Reverse proxy for the homelab * **TrueNAS (Scale):** Main NAS * **Unifi:** Unifi UI homepage * **Vault:** Secret storage for the Kubernetes cluster * **Wireguard:** VPN to access services from outside * **Grafana:** Dashboards for the homelab * **Graphite:** Exporter to retrieve external metrics to feed them back to Prometheus * **Prometheus:** Metrics DB to feed Grafana * **FlareSolverr:** Bypass cloudflare protection * **Gotenberg:** Convert files (Word, excel, etc) * **Prowlarr:** Serves as a discovery server for Radarr and Sonarr * **Radarr:** Handles movies * **Sonarr:** Handles TV Shows * **Sunshine:** Selfhosted cloud gaming PC UI * **Syncthing:** Handles files synchronization between devices * **Transmission:** Handles P2P Files * **Immich:** Google photo replacement * **Libreddit:** Access reddit without reddit * **Overseerr:** Movies and TV Shows request management * **PaperlessNGX:** Stores all documents * **Plex:** Personal netflix * **Tandoor:** Recipes management * **SearxNG:** Selfhosted search engine Any question or feedback is welcome ! ---------------------------------------------------------------------- Azsde · 2023-10-28 15:13 Which of those services are shared with other people? ---------------------------------------------------------------------- Nervous-Living5882 · 2023-10-28 15:14 Looks great. Can we get more information on how you set up kubernetes, what you use as hypervisor, how you set up everything. I run everything off a small server with a couple of vms running either dedicated stuff, or as a docker host with lots of compose stacks. I want to learn more about kubernetes and ci/cd to refresh my setup ---------------------------------------------------------------------- YankeeLimaVictor · 2023-10-28 15:19 How do you get immich to work with authentik? Just wondering how does the android app work? ---------------------------------------------------------------------- FreebirdLegend07 · 2023-10-28 15:25 At one point I was trying to setup keycloak and then authentik. What do you use for your ingress? The biggest issue I had (aside from not getting authentik to work) was finding the correct way to setup ingress-nginx to actually work properly with authentik. You have any example yaml files that would help get started on this? ---------------------------------------------------------------------- Veloder · 2023-10-28 15:44 Also interested in this ---------------------------------------------------------------------- buneech · 2023-10-28 16:03 I have it behind authelia. It has native oauth2 support, also the app. A separate button for login is added, and you can make the flow default. ---------------------------------------------------------------------- yashaskm11 · 2023-10-28 16:36 Follow oauth guide from immich docs [here](https://documentation.immich.app/docs/administration/oauth) , I have it setup with authentik. ---------------------------------------------------------------------- jesuslop · 2023-10-28 16:37 Nice mix. FlareSolverr is an *arr thing or can it be truly used as a generic http proxy, as in putting it in firefox settings say? ---------------------------------------------------------------------- alainlehoof · 2023-10-28 17:38 Curious about why you choose graphite to collect metrics to store in Prometheus, why tho ---------------------------------------------------------------------- YYCwhatyoudidthere · 2023-10-28 17:43 Thanks for including descriptions. Too often I have to search for an unfamiliar app name and wonder: is it hosted on git? Is it this one with a .ai domain? Pretty sure this one is a pharma company website... ---------------------------------------------------------------------- nkls · 2023-10-28 18:13 I am planning for a while now to install Authentik / Authelia, but I always keep delaying it, as it sounds difficuld and more complex. How much effort was it for you? ---------------------------------------------------------------------- ChickenMcRibs · 2023-10-28 18:18 Does libreddit still work? ---------------------------------------------------------------------- FUCKUSERNAME2 · 2023-10-28 18:28 > Libreddit: Access reddit without reddit Does this still work for you? I'm interested but the GitHub page indicates that it's no longer fully functional due to the recent API changes. ---------------------------------------------------------------------- Dogeek · 2023-10-28 18:58 Not OP, but I'm also self hosting using k8s (cause I wanted to properly learn it). The way I see it you have a few options on how you're going to install kube on your server : - Use OpenShift, it's kubernetes by RedHat - Install kubeadm, kubectl, and kubelet on your server, which is the standard install - Install a self contained solution like k3s (this is what I belive OP did since he has TrueNAS) For simplicity, I'd recommend k3s because it makes it trivial to install, but you lose a lot of the benefits of kubernetes. As far as I know k3s is kube for a single node, you can't have more join the cluster. Then you'll want to deploy stuff on the cluster. There are 3 main ways to do so - Use Helm, it's the de-facto package manager for all things kubernetes. Honestly, I'd rather circumcise myself with a rusty butter knife than write a Helm chart by hand though, as it's very unintuitive. Luckily, there are masochists out there that provide very good helm repos to pull from (truecharts for instance is a self hoster's wet dream) - Use kustomize. This is the built-in template rendering engine, it's included with kubectl as well, so no extra tooling is required, but you'll have to write your kube manifests yourself most of the time. It's not as customizable as a Helm chart, and distribution is not as easy (I mean, it works pretty well with github, but you don't have central repos that just work as far as I know), this is my method of choice. - Use a single yaml file that includes all of your manifests, and `kubectl apply -f` it. It's like kustomize but without any customization at all of your manifests (which is handy, just to be able to factorize image references, add common labels to every chart etc...) There's also `kpt` but I've never used it personnally, so I can't comment on its usefulness. For your container runtime, the default is `runc` with `containerd`. It works out of the box, but you may want to install the nvidia specific containerization runtime for GPU passthrough to work, or you may want to use the `containerd` instance bundled with docker if you want to be able to build images right on the server. If you have any more questions do not hesitate :) ---------------------------------------------------------------------- BeryJu · 2023-10-28 18:59 Man, looking at this screenshot reminds me of how badly the application cards stack on a normal 16:9 viewport; they're intended to be much more square ---------------------------------------------------------------------- moontear · 2023-10-28 19:00 If this is your question go for authelia. Easy as pie. Authentik is honestly a bit more involved and has its own wording for stuff. ---------------------------------------------------------------------- Chameleon3 · 2023-10-28 19:03 > As far as I know k3s is kube for a single node, you can't have more join the cluster. Could you expand a little bit on this? I'm running a 5 node k3s cluster, that started as 3 nodes 1 master that I migrated to 5 node 3 masters without any issues. Are you referring to something else? ---------------------------------------------------------------------- ashooner · 2023-10-28 19:03 How do you use Sunshine? Does it work well for you? ---------------------------------------------------------------------- proc-sysrq · 2023-10-28 19:24 Also a k3s user; you're right (as your cluster demonstrates) k3s may be commonly deployed as a single node cluster but supports multiple agents and HA masters. ---------------------------------------------------------------------- Dogeek · 2023-10-28 19:42 > Could you expand a little bit on this? I'm running a 5 node k3s cluster, that started as 3 nodes 1 master that I migrated to 5 node 3 masters without any issues. Are you referring to something else? I must've missed this in the docs then, I tried for a while to get k3s working with worker nodes, maybe it's just something iX Systems (TrueNAS scale company) did to the install that made it harder to work with. In the end I dropped TrueNAS entirely for a bare debian 12 install with kubeadm and zfs on it. ---------------------------------------------------------------------- ajnerd · 2023-10-28 19:51 I've been trying to set up Authentik, but I'm having trouble. I use a Cloudflare tunnel to make my services available online, and I can't find a clear guide for connecting Authentik with it. Any help would be great. ---------------------------------------------------------------------- sk1nT7 · 2023-10-28 20:00 Same. Then I just tried and documented the process: https://blog.lrvt.de/authentik-traefik-azure-ad/ ---------------------------------------------------------------------- joao_brito · 2023-10-28 21:04 Are you hosting trueNAS inside the k8s cluster? If so, could you explain to me the benefits? I've been thinking for a while on using, but since I also use k8s and it has a storage layer(like you're using longhorn), I ask myself what are the advantages in that. ---------------------------------------------------------------------- Nezteb · 2023-10-28 21:09 That stresses me out, but I am very impressed! If you're able to document roughly how you set everything up, that'd be a great resource for the sub. 😄 ---------------------------------------------------------------------- BoKKeR111 · 2023-10-28 21:27 I am also doing this. So far only setup portainer. Would love to talk to you. I work with oauth2 but I am trying to learn more abd the authentik terms are different from my normal use case. There are many flows etc ---------------------------------------------------------------------- Baconspl1t · 2023-10-28 22:53 Love your setup, writing this comment to come back here. Can I ask why you use Plex instead of Jellyfin? ---------------------------------------------------------------------- agentpanda · 2023-10-29 01:39 Yea seriously. Somebody is like “I run Cumface mostly it solves all my problems” and I’m like ‘great… now I have to wade through all these google results and lots of tissues until I find something related to my lab environment.’ ---------------------------------------------------------------------- johntheripp3r · 2023-10-29 03:32 Bro, share a guide. ---------------------------------------------------------------------- jah_bro_ney · 2023-10-29 04:58 > Turns out it was a tool I didn’t even need and now everything is sticky and I’m confused Not often you see /r/BrandNewSentence content on this sub ---------------------------------------------------------------------- sneakpeekbot · 2023-10-29 04:58 Here's a sneak peek of /r/BrandNewSentence using the [top posts](https://np.reddit.com/r/BrandNewSentence/top/?sort=top&t=year) of the year! \#1: [Homie in law](https://i.redd.it/o6znibtrj78b1.jpg) | [272 commen ts](https://np.reddit.com/r/BrandNewSentence/comments/14itfe5/homie_in _law/) \#2: [rawdogged this entire flight](https://i.redd.it/mhob67hwwh7a1.jpg) | [2231 comments](https:/ /np.reddit.com/r/BrandNewSentence/comments/zsmi81/rawdogged_this_entir e_flight/) \#3: [A slutty amount of y's](https://i.redd.it/9q9ldx45mcza1.png) | [678 comments](https://np.reddit.com/r/BrandNewSentence/comments/13f76 u8/a_slutty_amount_of_ys/) ---- ^^I'm ^^a ^^bot, ^^beep ^^boop ^^| ^^Downvote ^^to ^^remove ^^| ^^[Contact](https://www.reddit.com/message/compose/?to=sneakpeekbot) ^^| ^^[Info](https://np.reddit.com/r/sneakpeekbot/) ^^| ^^[Opt-out](ht tps://np.reddit.com/r/sneakpeekbot/comments/o8wk1r/blacklist_ix/) ^^| ^^[GitHub](https://github.com/ghnr/sneakpeekbot) ---------------------------------------------------------------------- chasx003 · 2023-10-29 05:59 I think you guys are technically talking about two different things. Truenas Scale does use k3s, but, I don't believe you can add other nodes to it, like you are saying. You could also just install k3s on another distro and have multiple nodes (I have 3 control plane, 5 worker k3s nodes) ---------------------------------------------------------------------- nkls · 2023-10-29 07:05 I have just read your comment on libreddit. It works fine for me. The only difference I could feel is that some pictures load more slowly. ---------------------------------------------------------------------- Dogeek · 2023-10-29 08:09 It's very probable, my first baremetal kube install was TrueNAS Scale's k3s install, but I'm not surprised that iX Systems locked it down, given that they make it painful to get ownership of your system, by default it even locks down `apt-get` and `helm` (which is used internally for their apps feature) and doesn't install kubectl on the machine (you do have `k3s kubectl` but it's bothersome to not have completion on it) I'm much happier in the end having dropped TrueNAS for a Debian install, I'm way more familiar with the command line anyways, and I feel like I control my system. The only downside for me is going to be ZFS related as the TrueNAS UI made it pleasant to work with, but the rest of its features (that I actually used) I've already replaced with my own stack. If anyone reading this is like me, and got frustrated with TrueNAS in some shape or form, I used : - `zfs`, since I migrated from TrueNAS, I didn't want to export and reimport all of the data into another file system, and it's a good piece of software. Importing and mounting the ZPools was pretty easy - `sshd`, required to be able to remote in to the server, since you don't have a web portal for it - `nfs-server`, REALLY recommend setting that up, it makes it easier to access storage from kubernetes with the `nfs-client-provisionner` operator. - `kubeadm`, `kubectl`, `kubelet`, `helm` (if you want, I use it to bootstrap some apps with `helm template`before converting to `kustomize`) for kubernetes. Though you're not forced into kube if you don't want to, I now prefer it over `docker-compose` since once you get how kube works, you get way more options As for self hosting, I went with a bunch of operators and "infra" apps first to have a solid setup : - cert-manager : required for TLS certificates, makes it trivial to add encryption - external-dns : a must have, really. A few annotations and boom, you don't have to create subdomains manually. - nfs-provisionner : create PersistentVolumeClaims in kubernetes to connect to an NFS server. Good to have instead of setting NFS mounting points everywhere in your deployments - Traefik : reverse proxy of choice. nginx also works, but traefik works well, is easy to deploy - kube-metrics-server : for HA deployments (I deployed Traefik and Jellyfin with HA in mind), you can use HPAs afterwards to scale automatically - kube-prometheus : deploys a bunch of services with high availability in mind, allows me to monitor what's happening - OpenLDAP : I used to use LLDAP instead, but for keycloak OpenLDAP is better. I'd rather not have to use LDAP at all, but some self hosted services (Jellyfin for instance) do not support OIDC natively. - Keycloak : my OIDC provider of choice, though it's a bit of a pain to get it working. Right now I'm trying with the Keycloak operator, maybe it'll be better - MinIO operator : I need it for a few services (namely Grafana Mimir right now, I want long term metrics and logs storage) - Grafana Loki + Promtail + loki canary : for logs, better than Graylog, integrates into Grafana, scrapes logs from kubernetes with Promtail - Grafana Tempo : for request tracing through the cluster - SMTP Relay : My own implementation of an SMTP relay that forwards mail from inside the cluster (no auth into the relay since it's not exposed) and forwards it using the Mailjet API (the free tier is generous enough, and GMail is a bitch when it comes to auth). It's mostly for convenience, as I don't want to bother with setting up SMTP credentials everywhere - CNPG : cloud native postgresql, a kubernetes operator that allows you to declaratively create postgres databases. A life saver of sorts, since you don't have to create the deployment, pvc etc manually everytime you need a database - Redis operator : same as CNPG but for Redis deployments, I need it for caching and also paperless-ngx - ntfy : for notifications from the *arr stack, I also connected it to my SMTP relay - Alertmanager : for alerting based on prometheus metrics, sends email to my SMTP relay, and to ntfy as well for notifications on my phone - Hashicorp's Vault : I still need to deploy that, but I want to centralize secrets for security reasons, I don't want to accidentally commit things I don't want to into my git repository - Renovate : I still need to set that up, but I want automated PRs on my git repo to update docker images. - Borg backup : I'm using borgbase as an off-site backup solution, and I've developed a cloud native option to sync data to borgbase. I'm not backuping everything, just the important stuff. Configuration for the cluster is committed to github, so it's just personal data, PDFs, payslips, personal photos & videos. All of my torrenting can be lost, I don't care and it keeps costs down. ---------------------------------------------------------------------- Georgesaker147 · 2023-10-29 08:45 Interested in this too ---------------------------------------------------------------------- Giswald · 2023-10-29 09:15 Would you mind sharing how you set it up? I’m interested in a similar setup ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:53 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:53 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:54 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:54 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:54 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:54 Just because TrueNAS can't communicate with Prometheus directly and required a man in the middle kind of thing so graphite is only used by TrueNAS ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:55 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:55 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- akram_boutou · 2023-10-29 10:57 Thank you for sharing, looks great. I wonder how you configured access to the Kubernetes services. You mentioned you leverage WIreguard VPN but is it possible to configure SSL certificates for the VPN services? ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:57 Been a Plex user since 2010 (more or less) with a lifetime account, family is used to it and it works well (some kinks here and there and the weird turn they do to push other services is making me question that, but when I look at jellyfin the UI simply doesn't clik for me, worst case I will set it as a backup though, but to be honest plex has been rock solid for all those years that I kept it... until they really do fuck up that it) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:57 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:57 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:57 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:58 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:58 Last point of the edit... WIP ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 10:58 true you could fit much more in there for sure ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 11:00 I don't use Cloudflare as I go though VPN for my services but if you have a reverse proxy it integrates well with it I would recommand you use traefik and check the authentik guide on it, cloudflare tunnels however I have never used it as I want to be as sovereign as possible on my stuff ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 11:01 I have added an edit (but you will see on the last point a full on guide is started but god it is not the most funny part to do!) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 11:02 Oh yeah it is a nightmare to get started (IMO) due to their own wording for most of the stuff I have added an edit if you want to check a bit more of how I have setup stuff maybe some questions will be answered there... ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 11:02 I have added an edit I hope it answers questions you might have (feel free to let me know if you have more) ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 11:06 I have added an edit but before you posted this so let me answer here (you can check the edit also if you feel like it) Basically I use traefik and cert manager to retreieve star SSL certs (\*.domain.com) for all the domains I own, as those are done via DNS-01 challenges you don't need your server to be accessible via internet. The VPN is then pointing at adguard for its DNS and adguard points my star domains to traefik which then redirect to each services with the star certificate ---------------------------------------------------------------------- akram_boutou · 2023-10-29 13:41 Thanks, indeed you are right using DNS 01 challenge can be appropriate for this. Btw do you use a VPN for transmission. I mean, for egress traffic, I have been trying to figure out how to set it up without any luck. ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 13:48 I don't require it as it's allowed where I live for personal use ^^ But you would require a sidecar pod from whatever vpn and use a given config by your vpn provider then redirect all pod traffic through your sidecar but I think some images of transmission have it all included. ---------------------------------------------------------------------- andersonfreitas · 2023-10-29 15:42 What are the use cases for Synology DSM in this setup? ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-29 16:21 For now it's just a backup as it has been decommissioned since I got a TRUENAS system ---------------------------------------------------------------------- Baconspl1t · 2023-10-29 18:01 Ah this makes sense! Great its working out for you for so long already, no need to change anything then ---------------------------------------------------------------------- Frozen_Gecko · 2023-10-29 22:33 I have a question about edit 9. I want to start using SSO, but something like Paperless-ngx just gets the login name from a HTTP header. How do you set it up so that there's still some form of authentication when logging into Paperless-ngx? ---------------------------------------------------------------------- codester3388 · 2023-10-30 02:27 Cooptonian has some great videos for explaining Authentik on YouTube. ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-30 05:35 You can follow this guide https://goauthentik.io/integrations/services/paperless-ng/ ---------------------------------------------------------------------- Frozen_Gecko · 2023-10-30 10:14 Yeah, I've seen this one, but it's not really a secure way to log in to paperless, right? I'm referring to this part in the caution section: "If you intend for this to be accessed externally, this requires careful setup of your reverse proxy server to not forward these headers from other sources." How did you set up your reverse proxy to make it secure? I figured I could just set it up so that I can only access the URL from within my local network. But how do you set it up in the way described in quotes above? ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-30 14:11 Well trusting headers is really not the best way cause somehow one might be able to just change headers (hence the quote) cause yeah it is very simple to do so. The way you would want to do it is to have your reverse proxy in front doing the heavy lifting (authentication and such) and it needs to be in front of paperless now the tricky part is that your reverse proxy needs to be able to understand that no one else but authentik has the right to give it those auth headers that's the difficult task, and one reason I simplified it, by not using this auth method but using the proxy auth + paperless own mechanism (granted not the best but works) and allowing external access ONLY if you are VPN'ed in the network, now you have the added security cause it is not technically available outside your network and in order to crack it one should manage to get in the network first then manage to crack authentik (with 2FA) and then reach paperless and crack it too (which would be simple but less simple then auth headers approach to crack it. Like this you have best of both worlds as it is available externally and you have added security. Does it make sense ? ---------------------------------------------------------------------- Frozen_Gecko · 2023-10-30 14:49 Ah yes that mostly made sense to me. I think that was about the approach I was also considering. Thanks. ​ >but using the proxy auth + paperless own mechanism What did you mean by this part? ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-30 15:27 in authentik you can have "proxy auth" which authenticates user against users created directly within authentik (no need for LDAP or other stuff), it doesn't transmit connection credentials or anything to the backend app just says "ok you can go and you are person X" so you use this to filter who can access the app, then the app itself has an auth mechanism (the login screen of paperless) to auth its own users ---------------------------------------------------------------------- Frozen_Gecko · 2023-10-30 16:06 Wait does that mean that I can login to Paperless from Authentik with a different Paperless account than Authentik account? ---------------------------------------------------------------------- Unsaddle5359 · 2023-10-30 20:15 Well not really you don't log in into paperless technically you just pass the first stop (authentik) and then login to paperless ---------------------------------------------------------------------- Frozen_Gecko · 2023-10-31 16:34 Ah okay cool. Thanks for the replies :) ---------------------------------------------------------------------- iamwillbar · 2023-11-03 03:40 u/Unsaddle5359 with DSM did you just do SSO, or did you do LDAP? I had hoped to connect it to Authentik with LDAP, but Authentik doesn't support the Samba LDAP schema. ---------------------------------------------------------------------- Professional-Swim-69 · 2023-11-05 22:48 WTF, big upvote from me ... nice job ---------------------------------------------------------------------- kmisterk · 2023-11-06 18:53 Hey, Unsaddle5359! Thanks for your submission to selfhosted. Your post has been removed due to a violation of **Rule #5a:** ## It's Not Wednesday Posts that do not directly relate to a self-hosted tool, but relate to the process of self-hosting (Including dashboard posts, support tools, hosting options, local CLI tools, etc.) are only allowed to be posted on a Wednesday. If you believe this to be incorrect, please [message the mods](https:/ /www.reddit.com/message/compose/?to=/r/selfhosted&subject=Removed For Wednesday Only Content&message=[Removed Post](https://www.reddit.com/r/selfhosted/comments/17ifkb3/-/\)) so that we can revisit or clarify the removal reason.