cleanup
This commit is contained in:
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: nginx-deployment
|
|
||||||
labels:
|
|
||||||
app: nginx
|
|
||||||
spec:
|
|
||||||
replicas: 3
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: nginx
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: nginx
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: nginx
|
|
||||||
image: nginx:1.14.2
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
|
|
||||||
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /hello
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
hostPath:
|
|
||||||
path: /data/kubernetes/degoog/degoog-data-pvc
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
terraform 1.16.5
|
||||||
@@ -40,6 +40,83 @@ resource "kubernetes_service_v1" "automatic_service" {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "kubernetes_ingress_v1" "automatic_ingress" {
|
||||||
|
for_each = { for key, value in var.kubernetes : key => value if value.service_port != null && value.enabled == true && value.docker != true && value.exposed == true }
|
||||||
|
metadata {
|
||||||
|
name = "${each.key}-ingress"
|
||||||
|
namespace = coalesce(each.value.namespace, each.value.connected_namespace, each.key)
|
||||||
|
|
||||||
|
annotations = {
|
||||||
|
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
|
||||||
|
"traefik.ingress.kubernetes.io/router.entrypoints" = "websecure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spec {
|
||||||
|
ingress_class_name = "traefik"
|
||||||
|
# Dynamic TLS configuration for cert-manager
|
||||||
|
tls {
|
||||||
|
hosts = [join(".", [coalesce(each.value.domain_name, each.key), "geeraert.eu"])]
|
||||||
|
secret_name = "${each.key}-tls-secret" # cert-manager will create and manage this secret automatically
|
||||||
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
host = join(".", [coalesce(each.value.domain_name, each.key), "geeraert.eu"])
|
||||||
|
http {
|
||||||
|
path {
|
||||||
|
path = "/"
|
||||||
|
backend {
|
||||||
|
service {
|
||||||
|
name = "${each.key}-svc"
|
||||||
|
port {
|
||||||
|
number = each.value.service_port[0] #selecting the first of the list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "kubernetes_ingress_v1" "automatic_ingress_legacy" {
|
||||||
|
for_each = { for key, value in var.kubernetes : key => value if value.service_port != null && value.enabled == true && value.docker != true && value.exposed == true && value.legacy_domain == true }
|
||||||
|
metadata {
|
||||||
|
name = "${each.key}-ingress-legacy"
|
||||||
|
namespace = coalesce(each.value.namespace, each.value.connected_namespace, each.key)
|
||||||
|
|
||||||
|
annotations = {
|
||||||
|
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
|
||||||
|
"traefik.ingress.kubernetes.io/router.entrypoints" = "websecure"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spec {
|
||||||
|
ingress_class_name = "traefik"
|
||||||
|
# Dynamic TLS configuration for cert-manager
|
||||||
|
tls {
|
||||||
|
hosts = [join(".", [coalesce(each.value.domain_name, each.key), "tryton.geeraert.eu"])]
|
||||||
|
secret_name = "${each.key}-tryton-tls-secret" # cert-manager will create and manage this secret automatically
|
||||||
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
host = join(".", [coalesce(each.value.domain_name, each.key), "tryton.geeraert.eu"])
|
||||||
|
http {
|
||||||
|
path {
|
||||||
|
path = "/"
|
||||||
|
backend {
|
||||||
|
service {
|
||||||
|
name = "${each.key}-svc"
|
||||||
|
port {
|
||||||
|
number = each.value.service_port[0] #selecting the first of the list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "kubernetes_deployment_v1" "automatic" {
|
resource "kubernetes_deployment_v1" "automatic" {
|
||||||
for_each = { for key, value in var.kubernetes : key => value if value.enabled == true }
|
for_each = { for key, value in var.kubernetes : key => value if value.enabled == true }
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ provider "bitwarden-secrets" {
|
|||||||
variable "kubernetes" {
|
variable "kubernetes" {
|
||||||
type = map(object({
|
type = map(object({
|
||||||
name = optional(string)
|
name = optional(string)
|
||||||
|
docker = optional(bool)
|
||||||
image = string
|
image = string
|
||||||
pvc = optional(map(object({
|
pvc = optional(map(object({
|
||||||
name = optional(string)
|
name = optional(string)
|
||||||
@@ -56,6 +57,8 @@ variable "kubernetes" {
|
|||||||
service_type = optional(string, "ClusterIP")
|
service_type = optional(string, "ClusterIP")
|
||||||
service_name = optional(string)
|
service_name = optional(string)
|
||||||
domain_name = optional(string)
|
domain_name = optional(string)
|
||||||
|
legacy_domain = optional(bool, false)
|
||||||
|
exposed = optional(bool, true)
|
||||||
liveness_tcp_socket = optional(number)
|
liveness_tcp_socket = optional(number)
|
||||||
liveness_http_get = optional(string)
|
liveness_http_get = optional(string)
|
||||||
liveness_http_get_path = optional(string)
|
liveness_http_get_path = optional(string)
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
terraform {
|
|
||||||
required_version = "> 0.8.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "kubernetes" {
|
|
||||||
config_path = "~/.kube/config"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "shunt_kubernetes" {
|
|
||||||
type = bool
|
|
||||||
default = true
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "nginx_sites" {
|
|
||||||
type = map(object({
|
|
||||||
service = string
|
|
||||||
docker_service = optional(string)
|
|
||||||
enabled = optional(bool, true)
|
|
||||||
proxy_cache = optional(bool, false)
|
|
||||||
extra-value = optional(string, "")
|
|
||||||
extra-value-location = optional(string, "")
|
|
||||||
http2_bool = optional(bool, false)
|
|
||||||
proxy_pass_https = optional(bool, false)
|
|
||||||
authentication_required = optional(bool, false)
|
|
||||||
redirect_to_https_bool = optional(bool, true)
|
|
||||||
listen_port_80_bool = optional(bool, false)
|
|
||||||
geoip_blocking = optional(bool, false)
|
|
||||||
geoip_allow = optional(list(string), ["FR", "GB"])
|
|
||||||
redirect_to_root_domain = optional(bool, true)
|
|
||||||
}))
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "kubernetes_config_map" "automatic-configmap" {
|
|
||||||
#avoiding this to create if the shunt_kubernetes is on
|
|
||||||
count = var.shunt_kubernetes ? 0 : 1
|
|
||||||
metadata {
|
|
||||||
name = "sites-terraform"
|
|
||||||
namespace = "reverse-proxy"
|
|
||||||
annotations = {
|
|
||||||
"reloader.stakater.com/match" : "true",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data = {
|
|
||||||
for key, value in var.nginx_sites :
|
|
||||||
"${key}.conf" => templatefile("nginx_config.tftpl", {
|
|
||||||
name_site = key
|
|
||||||
name_service = value.service
|
|
||||||
proxy_cache = value.proxy_cache
|
|
||||||
extra-value = value.extra-value
|
|
||||||
extra-value-location = value.extra-value-location
|
|
||||||
http2_bool = value.http2_bool
|
|
||||||
proxy_pass_https = value.proxy_pass_https
|
|
||||||
authentication_required = value.authentication_required
|
|
||||||
redirect_to_https_bool = value.redirect_to_https_bool
|
|
||||||
listen_port_80_bool = value.listen_port_80_bool
|
|
||||||
geoip_blocking = value.geoip_blocking
|
|
||||||
geoip_allow = value.geoip_allow
|
|
||||||
redirect_to_root_domain = value.redirect_to_root_domain
|
|
||||||
}) if value.enabled == true
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "local_file" "nginx_configs" {
|
|
||||||
for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true && value.docker_service != null }
|
|
||||||
|
|
||||||
filename = "/data/kubernetes/reverse-proxy/reverse-proxy-sites/${each.key}.conf"
|
|
||||||
content = templatefile("nginx_config.tftpl", {
|
|
||||||
name_site = each.key
|
|
||||||
name_service = each.value.docker_service
|
|
||||||
proxy_cache = each.value.proxy_cache
|
|
||||||
extra-value = each.value.extra-value
|
|
||||||
extra-value-location = each.value.extra-value-location
|
|
||||||
http2_bool = each.value.http2_bool
|
|
||||||
proxy_pass_https = each.value.proxy_pass_https
|
|
||||||
authentication_required = each.value.authentication_required
|
|
||||||
redirect_to_https_bool = each.value.redirect_to_https_bool
|
|
||||||
listen_port_80_bool = each.value.listen_port_80_bool
|
|
||||||
redirect_to_root_domain = each.value.redirect_to_root_domain
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
############################################
|
|
||||||
# config file for ${name_site}
|
|
||||||
############################################
|
|
||||||
|
|
||||||
upstream ${name_site}_backend {
|
|
||||||
server ${name_service};
|
|
||||||
server 1.1.1.1 backup;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
server {
|
|
||||||
server_name ${name_site}.tryton.geeraert.eu www.${name_site}.tryton.geeraert.eu;
|
|
||||||
|
|
||||||
|
|
||||||
%{~ if redirect_to_root_domain~}
|
|
||||||
if ($host = www.${name_site}.tryton.geeraert.eu) {
|
|
||||||
return 301 https://${name_site}.geeraert.eu$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($host = ${name_site}.tryton.geeraert.eu) {
|
|
||||||
return 301 https://${name_site}.geeraert.eu$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
%{~ endif ~}
|
|
||||||
%{ if redirect_to_root_domain != true }
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
${extra-value-location}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
location /.well-known/acme-challenge/ {
|
|
||||||
root /var/www/certbot;
|
|
||||||
}
|
|
||||||
%{ endif }
|
|
||||||
|
|
||||||
access_log /var/log/nginx/access.log my_custom_format;
|
|
||||||
access_log /var/log/nginx/ip_audit.log ip_audit;
|
|
||||||
access_log /var/log/nginx/backend_debug.log backend_debug;
|
|
||||||
${extra-value}
|
|
||||||
%{~ if http2_bool~}
|
|
||||||
http2 on;
|
|
||||||
ssl_protocols TLSv1.2;
|
|
||||||
%{~ endif ~}
|
|
||||||
|
|
||||||
listen 443 ssl;
|
|
||||||
%{~ if listen_port_80_bool~}
|
|
||||||
listen 80;
|
|
||||||
%{~ endif ~}
|
|
||||||
|
|
||||||
ssl_certificate /etc/nginx/ssl/live/tryton.geeraert.eu/fullchain.pem;
|
|
||||||
ssl_certificate_key /etc/nginx/ssl/live/tryton.geeraert.eu/privkey.pem;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
%{~ if redirect_to_https_bool~}
|
|
||||||
|
|
||||||
server {
|
|
||||||
if ($host = www.${name_site}.tryton.geeraert.eu) {
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($host = ${name_site}.tryton.geeraert.eu) {
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
server_name www.${name_site}.tryton.geeraert.eu ${name_site}.tryton.geeraert.eu ;
|
|
||||||
listen 80;
|
|
||||||
return 404;
|
|
||||||
|
|
||||||
}
|
|
||||||
%{~ endif ~}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################################
|
|
||||||
# config file for ${name_site}
|
|
||||||
############################################
|
|
||||||
|
|
||||||
upstream ${name_site}_backend_root {
|
|
||||||
server ${name_service};
|
|
||||||
server 1.1.1.1 backup;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
server_name ${name_site}.geeraert.eu www.${name_site}.geeraert.eu;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass %{ if proxy_pass_https}https%{else}http%{ endif }://${name_site}_backend_root;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
${extra-value-location}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
location /.well-known/acme-challenge/ {
|
|
||||||
root /var/www/certbot;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
access_log /var/log/nginx/access.log my_custom_format;
|
|
||||||
access_log /var/log/nginx/ip_audit.log ip_audit;
|
|
||||||
access_log /var/log/nginx/backend_debug.log backend_debug;
|
|
||||||
${extra-value}
|
|
||||||
%{~ if http2_bool~}
|
|
||||||
http2 on;
|
|
||||||
ssl_protocols TLSv1.2;
|
|
||||||
%{~ endif ~}
|
|
||||||
|
|
||||||
listen 443 ssl;
|
|
||||||
%{~ if listen_port_80_bool~}
|
|
||||||
listen 80;
|
|
||||||
%{~ endif ~}
|
|
||||||
|
|
||||||
ssl_certificate /etc/nginx/ssl/live/geeraert.eu/fullchain.pem;
|
|
||||||
ssl_certificate_key /etc/nginx/ssl/live/geeraert.eu/privkey.pem;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
%{~ if redirect_to_https_bool~}
|
|
||||||
|
|
||||||
server {
|
|
||||||
if ($host = www.${name_site}.geeraert.eu) {
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ($host = ${name_site}.geeraert.eu) {
|
|
||||||
return 301 https://$host$request_uri;
|
|
||||||
}
|
|
||||||
server_name www.${name_site}.geeraert.eu ${name_site}.geeraert.eu ;
|
|
||||||
listen 80;
|
|
||||||
return 404;
|
|
||||||
|
|
||||||
}
|
|
||||||
%{~ endif ~}
|
|
||||||
@@ -1,433 +0,0 @@
|
|||||||
nginx_sites = {
|
|
||||||
bitwarden = {
|
|
||||||
service = "bitwarden-nginx-svc.bitwarden.svc:8080"
|
|
||||||
http2_bool = true
|
|
||||||
redirect_to_root_domain = false
|
|
||||||
}
|
|
||||||
|
|
||||||
bookstack = {
|
|
||||||
enabled = false
|
|
||||||
service = "bookstack-svc.bookstack.svc"
|
|
||||||
proxy_cache = false
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
django = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
admin = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
redirect = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
streaming = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
stash = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
simpsons = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
kubernetes = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
cloudmanager = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
podcast = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "django-svc.django:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
|
|
||||||
}
|
|
||||||
django-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
admin-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
redirect-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
streaming-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
stash-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
simpsons-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
kubernetes-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
cloudmanager-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
podcast-testing = {
|
|
||||||
service = "django-testing-svc.django-testing.svc:8000"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
echo = {
|
|
||||||
enabled = true
|
|
||||||
service = "echo-svc.echo.svc"
|
|
||||||
docker_service = "echo-svc.echo.svc"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
}
|
|
||||||
|
|
||||||
sonarr = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "sonarr-svc.servarr.svc:8989"
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nextcloud = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
redirect_to_root_domain = false
|
|
||||||
service = "webserver.nextcloud.svc"
|
|
||||||
#service = "nextcloud-svc.next.svc"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
extra-value = <<EOT
|
|
||||||
|
|
||||||
|
|
||||||
location /.well-known/carddav {
|
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /.well-known/caldav {
|
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /health {
|
|
||||||
default_type text/html;
|
|
||||||
return 200 "<!DOCTYPE html><h2>health check</h2>\n";
|
|
||||||
}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
router = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "192.168.88.1"
|
|
||||||
authentication_required = true
|
|
||||||
}
|
|
||||||
|
|
||||||
octoprint = {
|
|
||||||
|
|
||||||
service = "192.168.0.32:5000"
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
proxy_set_header Host $http_host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme; # Crucial for HTTPS to HTTP matching
|
|
||||||
|
|
||||||
# Required for OctoPrint WebSockets to function properly
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
|
|
||||||
client_max_body_size 0; # Allows large file uploads like gcode
|
|
||||||
EOT
|
|
||||||
|
|
||||||
}
|
|
||||||
onitama = {
|
|
||||||
service = "onitama-svc.onitama.svc:8080"
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
paperless = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
#service = "webserver.paperless.svc:8000"
|
|
||||||
service = "paperless-svc.paperless.svc:8000"
|
|
||||||
}
|
|
||||||
pihole = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "172.16.0.60:8081"
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
|
|
||||||
prowlarr = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "prowlarr-svc.servarr.svc:9696"
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
qbittorrent = {
|
|
||||||
enabled = false
|
|
||||||
service = "qbittorrent-svc.servarr.svc:8080"
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
|
|
||||||
}
|
|
||||||
radarr = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "radarr-svc.servarr.svc:7878"
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unifi = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
# service = "unifi.unifi.svc:8443"
|
|
||||||
service = "192.168.88.244:8443"
|
|
||||||
proxy_pass_https = true
|
|
||||||
}
|
|
||||||
unifi-inform = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
service = "192.168.88.50:8082"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
immich = {
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
#service = "immich-server.immich.svc:2283"
|
|
||||||
service = "immich-svc.immich.svc:2283"
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_read_timeout 60000s;
|
|
||||||
|
|
||||||
|
|
||||||
#adding websocket , usefull for reverse proxy
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
#end of working
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
stirling = {
|
|
||||||
enabled = false
|
|
||||||
service = "stirling-svc.stirling.svc:8080"
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_read_timeout 60000s;
|
|
||||||
#working
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
#end of working
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
openmediavault = {
|
|
||||||
service = "192.168.88.29"
|
|
||||||
}
|
|
||||||
pihole = {
|
|
||||||
enabled = false
|
|
||||||
service = "web.piholenew.svc"
|
|
||||||
}
|
|
||||||
|
|
||||||
synology = {
|
|
||||||
enabled = true
|
|
||||||
service = "192.168.88.39:5000"
|
|
||||||
}
|
|
||||||
|
|
||||||
gitea = {
|
|
||||||
enabled = true
|
|
||||||
service = "gitea-svc.gitea.svc:3000"
|
|
||||||
docker_service = "gitea-svc.gitea.svc:3000"
|
|
||||||
redirect_to_root_domain = false
|
|
||||||
}
|
|
||||||
|
|
||||||
next = {
|
|
||||||
enabled = false
|
|
||||||
service = "next-svc.next.svc"
|
|
||||||
proxy_cache = true
|
|
||||||
http2_bool = true
|
|
||||||
extra-value = <<EOT
|
|
||||||
|
|
||||||
|
|
||||||
location /.well-known/carddav {
|
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
|
||||||
}
|
|
||||||
|
|
||||||
location /.well-known/caldav {
|
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /health {
|
|
||||||
default_type text/html;
|
|
||||||
return 200 "<!DOCTYPE html><h2>health check</h2>\n";
|
|
||||||
}
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
stash = {
|
|
||||||
enabled = false
|
|
||||||
service = "stash-svc.stash.svc:9999"
|
|
||||||
#geoip_blocking = false
|
|
||||||
#extra-value= <<EOT
|
|
||||||
# proxy_protocol on;
|
|
||||||
#EOT
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
#don't use this as this needs to be run as root or have the CAP_NET_RAW capability) to bind to a non-local IP address.
|
|
||||||
#Because the backend thinks the request is coming directly from the client, it will try to send the response directly back to that client IP. To prevent this (which would break the connection), you must force the response back through the NGINX server.
|
|
||||||
#proxy_bind $remote_addr transparent;
|
|
||||||
|
|
||||||
##used to be working
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_read_timeout 60000s;
|
|
||||||
#working
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
#end of working
|
|
||||||
EOT
|
|
||||||
|
|
||||||
geoip_allow = ["FR", "GB", "NL"]
|
|
||||||
}
|
|
||||||
neko = {
|
|
||||||
enabled = false
|
|
||||||
service = "neko-svc.neko.svc:8080"
|
|
||||||
http2_bool = true
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
|
|
||||||
EOT
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
wikijs = {
|
|
||||||
#enabled = false
|
|
||||||
geoip_blocking = false
|
|
||||||
service = "wikijs-svc.wikijs.svc:3000"
|
|
||||||
extra-value = <<EOT
|
|
||||||
client_max_body_size 20m;
|
|
||||||
proxy_request_buffering off;
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tdarr = {
|
|
||||||
enabled = false
|
|
||||||
service = "tdarr-svc.servarr.svc:8265"
|
|
||||||
extra-value-location = <<EOT
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_read_timeout 60000s;
|
|
||||||
#working
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_cache_bypass $http_upgrade;
|
|
||||||
#end of working
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EOT
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
deny_ip = ["1.2.3.4"]
|
|
||||||
Reference in New Issue
Block a user