For anyone else running lemmy on kubernetes-
Here is an IngressRoute CRD you can use, to leverage your built-in traefik reverse proxy.
Normally-
(ingress / ingressroute) -> (service) -> (nginx proxy) -> (lemmy / lemmy ui)
With this-
(ingress / ingressroute) -> (service) -> (lemmy / lemmy ui)
A slight optimization to better take advantage of the built in kubernetes functionality. (since, it already has a nginx and/or traefik instance running).
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: lemmy
namespace: lemmy
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`lemmyonline.com`) && (Headers(`Accept`, `application/activity+json`) || HeadersRegexp("Accept", "^application/.*") || Headers(`Accept`, `application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"`))
services:
- name: lemmy
port: http
- kind: Rule
match: Host(`lemmyonline.com`) && (PathPrefix(`/api`) || PathPrefix(`/pictrs`) || PathPrefix(`/feeds`) || PathPrefix(`/nodeinfo`) || PathPrefix(`/.well-known`))
services:
- name: lemmy
port: http
- kind: Rule
match: Host(`lemmyonline.com`) && Method(`POST`)
services:
- name: lemmy
port: http
- kind: Rule
match: Host(`lemmyonline.com`)
services:
- name: lemmy-ui
port: http
Just- make sure to replace your host, with the proper instance name.
2 Comments
timbuck2themoon@lemmy.ml · 1 pts · 3y
This is great. I've thought proxying to nginx wasn't too desirable.
Would anyone happen to know how to do this with ingress nginx? I could do the regex for paths but I'm stuck on method and headers.
xtremeownage@lemmyonline.com · 1 pts · 3y
Knock on wood, A fellow on reddit sent me CRDs for nginx.
I have not tested this- but, it might be a great starting point for you.