updated with 2 ingresses

This commit is contained in:
2026-01-04 09:45:33 +01:00
parent 861cae2058
commit 2369e0f10a
+29 -64
View File
@@ -1,17 +1,3 @@
# Pastefy - Self-hosted Pastebin alternative
# https://github.com/interaapps/pastefy
# Version: 7.1.5
# Domain: pastefy.dooplex.hu
# Auth: Native OAuth2/OIDC with Authentik
#
# Authentik Setup:
# 1. Create OAuth2/OIDC Provider:
# - Name: pastefy
# - Client Type: Confidential
# - Redirect URIs: https://pastefy.dooplex.hu/oauth-callback
# - Scopes: openid, email, profile
# 2. Create Application linked to this provider
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -107,7 +93,6 @@ metadata:
labels: labels:
app.kubernetes.io/instance: pastefy app.kubernetes.io/instance: pastefy
app.kubernetes.io/name: pastefy app.kubernetes.io/name: pastefy
app.kubernetes.io/version: "7.1.5"
spec: spec:
replicas: 1 replicas: 1
selector: selector:
@@ -121,18 +106,17 @@ spec:
labels: labels:
app.kubernetes.io/instance: pastefy app.kubernetes.io/instance: pastefy
app.kubernetes.io/name: pastefy app.kubernetes.io/name: pastefy
app.kubernetes.io/version: "7.1.5"
spec: spec:
containers: containers:
- name: pastefy - name: pastefy
image: interaapps/pastefy:7.1.5 image: interaapps/pastefy:7.1.5
env: env:
- name: HTTP_SERVER_PORT - name: HTTP_SERVER_PORT
value: "80" value: '80'
- name: HTTP_SERVER_CORS - name: HTTP_SERVER_CORS
value: "*" value: '*'
- name: DATABASE_DRIVER - name: DATABASE_DRIVER
value: "mysql" value: mysql
- name: DATABASE_NAME - name: DATABASE_NAME
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
@@ -149,22 +133,21 @@ spec:
name: pastefy-db name: pastefy-db
key: password key: password
- name: DATABASE_HOST - name: DATABASE_HOST
value: "pastefy-db" value: pastefy-db
- name: DATABASE_PORT - name: DATABASE_PORT
value: "3306" value: '3306'
- name: SERVER_NAME - name: SERVER_NAME
value: "https://pastefy.dooplex.hu" value: https://pastefy.dooplex.hu
# Optional settings
- name: AUTH_PROVIDER - name: AUTH_PROVIDER
value: "" # Disable broken OAuth value: ''
- name: PASTEFY_LOGIN_REQUIRED - name: PASTEFY_LOGIN_REQUIRED
value: "false" value: 'false'
- name: PASTEFY_LOGIN_REQUIRED_CREATE - name: PASTEFY_LOGIN_REQUIRED_CREATE
value: "false" value: 'false'
- name: PASTEFY_PUBLIC_STATS - name: PASTEFY_PUBLIC_STATS
value: "false" value: 'false'
- name: PASTEFY_INFO_CUSTOM_NAME - name: PASTEFY_INFO_CUSTOM_NAME
value: "Dooplex Paste" value: Dooplex Paste
ports: ports:
- containerPort: 80 - containerPort: 80
name: http name: http
@@ -224,7 +207,6 @@ spec:
app.kubernetes.io/instance: pastefy app.kubernetes.io/instance: pastefy
app.kubernetes.io/name: pastefy app.kubernetes.io/name: pastefy
--- ---
# Public ingress: everything is readable (UI + assets + paste pages)
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
@@ -233,8 +215,9 @@ metadata:
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod cert-manager.io/cluster-issuer: letsencrypt-prod
external-dns.alpha.kubernetes.io/hostname: pastefy.dooplex.hu,pastefy.home external-dns.alpha.kubernetes.io/hostname: pastefy.dooplex.hu,pastefy.home
nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/ssl-redirect: 'true'
nginx.ingress.kubernetes.io/proxy-body-size: "50m" nginx.ingress.kubernetes.io/proxy-body-size: 50m
nginx.ingress.kubernetes.io/enable-global-auth: 'false'
spec: spec:
ingressClassName: nginx-internal ingressClassName: nginx-internal
rules: rules:
@@ -263,55 +246,37 @@ spec:
- pastefy.dooplex.hu - pastefy.dooplex.hu
secretName: pastefy-tls secretName: pastefy-tls
--- ---
# API ingress: require authentik ONLY for non-GET methods (POST/PUT/DELETE)
apiVersion: networking.k8s.io/v1 apiVersion: networking.k8s.io/v1
kind: Ingress kind: Ingress
metadata: metadata:
name: pastefy-api-auth name: pastefy-write
namespace: pastefy-system namespace: pastefy-system
annotations: annotations:
nginx.ingress.kubernetes.io/server-snippet: | cert-manager.io/cluster-issuer: letsencrypt-prod
# Internal endpoint NGINX will call for auth checks external-dns.alpha.kubernetes.io/hostname: pastefy-write.dooplex.hu,pastefy-write.home
location = /__ak_auth { nginx.ingress.kubernetes.io/ssl-redirect: 'true'
internal; nginx.ingress.kubernetes.io/proxy-body-size: 50m
proxy_pass http://ak-outpost-pastefy-outpost.auth-system.svc.cluster.local:9000/outpost.goauthentik.io/auth/nginx; nginx.ingress.kubernetes.io/auth-url: http://ak-outpost-pastefy-outpost.auth-system.svc.cluster.local:9000/outpost.goauthentik.io/auth/nginx
nginx.ingress.kubernetes.io/auth-signin: https://authentik.dooplex.hu/outpost.goauthentik.io/start?rd=$scheme://$host$request_uri
proxy_pass_request_body off; nginx.ingress.kubernetes.io/auth-response-headers: Set-Cookie,X-authentik-username,X-authentik-groups,X-authentik-email,X-authentik-name,X-authentik-uid
proxy_set_header Content-Length ""; nginx.ingress.kubernetes.io/auth-snippet: proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
# Where to send users when auth is required
location @ak_login {
return 302 https://pastefy.dooplex.hu/outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri;
}
nginx.ingress.kubernetes.io/configuration-snippet: |
# Allow reading without auth, but require auth for write methods
limit_except GET HEAD OPTIONS {
auth_request /__ak_auth;
error_page 401 = @ak_login;
}
spec: spec:
ingressClassName: nginx-internal ingressClassName: nginx-internal
rules: rules:
- host: pastefy.dooplex.hu - host: pastefy-write.dooplex.hu
http: http:
paths: paths:
- path: /api - path: /
pathType: Prefix pathType: Prefix
backend: backend:
service: service:
name: pastefy name: pastefy
port: port:
number: 80 number: 80
- host: pastefy.home - host: pastefy-write.home
http: http:
paths: paths:
- path: /api - path: /
pathType: Prefix pathType: Prefix
backend: backend:
service: service:
@@ -320,8 +285,8 @@ spec:
number: 80 number: 80
tls: tls:
- hosts: - hosts:
- pastefy.dooplex.hu - pastefy-write.dooplex.hu
secretName: pastefy-tls secretName: pastefy-write-tls
--- ---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim